Distributed_Data
Computer systems
系统研究通过定义和实现抽象(abstractions)来实现应用开发。(隐藏复杂性,但保留灵活性)
操作系统为不可靠、不一致的硬件提供了一个稳定、一致的接口。
网络为不断进化的通信基础设施提供强大的数据传输接口
数据库为复杂的软件提供了一个声明式的接口,可以有效地存储和检索信息。
分布式系统为多台机器的集群提供统一的接口——有效系统的统一属性。
Example: The Unix Operating System
Unix操作系统(及变种如Linux, Mac OS 10)的基本特征。
可移植性(Portability)。在不同的硬件上使用相同的操作系统
多任务(Multi-Tasking)。在一台机器上同时运行多个进程
纯文本(Plain Text)。以文本格式存储和共享数据
模块化(Modularity)。小型工具通过管道(pipes)灵活组成
standard input(text input) -> process -> standard output(text output) || standard error
类Unix操作系统中的标准流(standard streams)类似于Python iterators。
python programs in a Unix environment
sys.stdin
和sys.stdout
的值提供了对Unix标准流文件的访问一个Python文件有一个支持
iteration, read, write
方法的接口。使用这些 "
files
"可以利用操作系统的文本处理抽象input
和print
功能还可以从standard input
读取和写入standard output
。
```shell script $ python ex.py Here it is H e r e i t i s Great G r e a t
$ ls *.pdf | python ex.py # 所有 pdf 的 filename 都有空格
RDD可以从文本文件来构建
The
sortBy
transformation(转变) andtake
是 RDD 上的方法
Apache Spark 提供了什么
容错。机器或硬盘可能会崩溃
群集管理器自动重新运行失败的任务
速度:有些机器可能会因为超载而变慢。
群集管理器可以运行一个任务的多个副本,并保留先完成的那个任务的结果。
网络定位。数据传输很昂贵
群集管理器试图在持有这些数据的机器上安排计算。
监控。我的工作会在晚饭前完成吗?
群集管理器提供了一个基于Web的界面描述工作
MapReduce
一个重要的早期分布式处理系统
通用的应用结构,恰好可以捕获许多常见的数据处理任务。
第1步(map):输入集合中的每个元素都会产生 0 或 more 键值对 。
第2步(shuffle):将所有共享一个 key 的 键值对 聚合在一起。
第3步(reduce):将一个键的值作为一个序列(sequence)进行处理
早期应用:索引网页、训练语言模型和计算网页排名。
MapReduce Evaluation Model
映射阶段。将映射函数应用于所有输入,发出中间 键值对
映射器为每个输入产生零或多个键值对。
Reduce phase: 对于每一个中间键,使用一个还原函数来累积与该键相关的所有值。
所有具有相同 key 的 键值对 一起处理
还原器产生0个或更多的值,每个值都与该中间键相关联
Last updated
Was this helpful?