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.stdinsys.stdout 的值提供了对Unix标准流文件的访问

  • 一个Python文件有一个支持iteration, read, write方法的接口。

  • 使用这些 "files"可以利用操作系统的文本处理抽象

  • inputprint 功能还可以从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(转变) and take 是 RDD 上的方法

Apache Spark 提供了什么

  • 容错。机器或硬盘可能会崩溃

    • 群集管理器自动重新运行失败的任务

  • 速度:有些机器可能会因为超载而变慢。

    • 群集管理器可以运行一个任务的多个副本,并保留先完成的那个任务的结果。

  • 网络定位。数据传输很昂贵

    • 群集管理器试图在持有这些数据的机器上安排计算。

  • 监控。我的工作会在晚饭前完成吗?

    • 群集管理器提供了一个基于Web的界面描述工作

MapReduce

  • 一个重要的早期分布式处理系统

  • 通用的应用结构,恰好可以捕获许多常见的数据处理任务。

    • 第1步(map):输入集合中的每个元素都会产生 0 或 more 键值对 。

    • 第2步(shuffle):将所有共享一个 key 的 键值对 聚合在一起。

    • 第3步(reduce):将一个键的值作为一个序列(sequence)进行处理

  • 早期应用:索引网页、训练语言模型和计算网页排名。

MapReduce Evaluation Model

  • 映射阶段。将映射函数应用于所有输入,发出中间 键值对

    • 映射器为每个输入产生零或多个键值对。

      KeyValuePairs

  • Reduce phase: 对于每一个中间键,使用一个还原函数来累积与该键相关的所有值。

    • 所有具有相同 key 的 键值对 一起处理

    • 还原器产生0个或更多的值,每个值都与该中间键相关联

      ReducePhase

      MapReduceApplications

Last updated

Was this helpful?