分布式存储和计算系统介绍
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
➢ 诊断工具。广泛而详尽的分析日志。
MapReduce
简介
➢ MapReduce 是一个编程模型,也是一个处理和生成 超大数据集的算法模型的相关实现。
➢ 用户首先创建一个Map 函数处理一个基于key/value pair 的数据集合,输出中间的基于key/value pair 的 数据集合;然后再创建一个Reduce 函数,用来合并 所有的具有相同中间key 值的中间value 值。
➢ 流程优化 当一个MapReduce 操作接近完成的时候,master 调
度备用任务进程来执行剩下的、处于处理中状态的任务。 无论是最初的执行进程、还是备用任务进程完成了任务, 我们都把这个任务标记成为已经完成。
BigTable
简介
➢ 分布式的结构化数据存储系统。 ➢ 被设计用来处理海量数据:通常是分布在数千台普通
➢ master故障 master 周期性的将当前运行状况写入磁盘,即检查点。
如果这个master 任务失效了,可以从最后一个检查点开 始启动另一个master 进程。
MapReduce
备用任务
➢ 木桶效应 在运算过程中,如果有一台机器花了很长的时间才完
成最后几个Map 或Reduce 任务,会导致MapReduce 操 作总的执行时间超过预期。
分布式存储和计算系统介绍
技术创新 变革未来
Google的三驾马车
GFS MapReduce BigTable
返 回
GFS
简介
➢ 组件失效不再被认为是意外,而是被看做正常的现 象。常量监视器,错误侦测,容错以及自动恢复系 统集成在系统中。
➢ 文件非常巨大。 ➢ 大部分文件的修改,不是覆盖原有数据,而是在文
服务器上的PB级的数据。 ➢ 适用性广泛、可扩展、高性能和高可用性。 ➢ Google的很多项目使用Bigtable存储数据,包括Web
索引、Google Earth、Google Finance。
BigTable
数据模型
➢ 稀疏的、分布式的、持久化存储的多维度排序Map。 ➢ Map的索引是行关键字、列关键字以及时间戳;Map
for each word w in value: EmitIntermediate(w, "1");
reduce(String key, Iterator values): // key: a word // values: a list of counts
int result = 0; for each v in values:
到一个文件的语意。 ➢ 高度可用的带宽比低延迟更加重要。
GFS
架构
GFS
单一主服务器
➢ 主服务器可以通过全局的信息精确确定块的位置以及 进行复制决定。
➢ 主服务器保存三种主要类型的元数据:文件和块的命 名空间,文件到块的映射,以及每个块副本的位置。
➢ 主服务器执行所有的名称空间操作。另外,它管理整 个系统的所有块副本:它决定块的位置,创建新块和 相应的副本,协调多变的系统活动,保持块被完全复 制,均衡所有块服务器之间的负载,回收没有使用的 存储空间。
件尾追加新数据。 ➢ 应用程序和文件系统API的协同设计。
GFS
设计预期
➢ 这个系统由许多廉价易损的普通组件组成。 ➢ 这个系统保存一定数量的大文件。 ➢ 负载中主要包含两种读操作:大规模的流式读取和
小规模随机读取。 ➢ 负载中还包括许多大规模的顺序的写操作,追加数
据到文件尾部。 ➢ 系统必须高效的实现良好定义的多客户端并行追加
GFS
垃圾回收及过期副本检测
➢ 文件删除后,主服务器把文件改成一个包含删除时间戳的 隐藏的名字。在主服务器对命名空间进行常规扫描时,物 理删除超过某个时间段的包含删除时间戳的文件。
➢ 在相似的对块命名空间的常规扫描,主服务器找到孤儿块 (无法从任何文件到达的块)并擦除它们的元数据。
➢ 主服务器在周期的垃圾回收中移除所有的过期副本。无论 何时主服务器获得一个块的新租约,它增加块的版本号, 然后通知当前副本。主服务器和这些副本都把新的版本号 记录在它们的持久化存储的状态中。如果块服务器失效, 或者块服务器当机的时候错过了一些操作,块副本会过期。
result += ParseInt(v); Emit(AsString(result));
MapReduce
容错
➢ worker 故障。 master 周期性的ping 每个worker。如果在一个约定
的时间范围内没有收到worker 返回的信息,master 将把 这个worker 标记为失效。所有由这个失效的worker 完成 的Map 任务被重设为ቤተ መጻሕፍቲ ባይዱ始的空闲状态,之后这些任务就 可以被安排给其他的worker。同样的,worker 失效时正 在运行的Map 或Reduce 任务也将被重新置为空闲状态, 等待重新调度。
➢ MapReduce 架构的程序能够在大量的普通配置的计 算机上实现并行化处理。
一般算法
MapReduce
编程模型
MapReduce
MapReduce
一个例子
举例:计算一个大的文档集合中每个单词出现的次数: map(String key, String value): // key: document name // value: document contents
GFS
容错和诊断
➢ 高可用性。 ✓ 快速恢复。不管主服务器和块服务器是如何关闭的,它们 被设计为可以在数秒钟内恢复它们的状态并启动。 ✓ 块复制。每个块被复制到不同机架上的不同的块服务器上。 ✓ 主节点复制。为了可靠性主服务器状态要被复制。它的操 作日志和检查点都要复制到多台机器上。
➢ 数据完整性。每个块服务器利用校验和来检查存储的数据 是否损坏。块被分为64KB的大小,每个有一个对应的32位 的校验和。
GFS
系统交互
GFS
创建、重新复制、负载均衡
➢ 当主服务器创建一个块,会选择哪里放置初始的空副本。 ✓ 新的副本放置在低于平均硬盘使用率的块服务器。 ✓ 限制每一个块服务器上"近期"创建操作的数量。 ✓ 把块分布在机架之间。
➢ 一旦块的可用副本数少于用户指定的值,主服务器会重新 复制它。
➢ 主服务器周期性地对副本进行负载均衡:它检查当前的副 本分布情况,然后移动副本以得到更好的硬盘剩余空间以 及负载的均衡。
MapReduce
简介
➢ MapReduce 是一个编程模型,也是一个处理和生成 超大数据集的算法模型的相关实现。
➢ 用户首先创建一个Map 函数处理一个基于key/value pair 的数据集合,输出中间的基于key/value pair 的 数据集合;然后再创建一个Reduce 函数,用来合并 所有的具有相同中间key 值的中间value 值。
➢ 流程优化 当一个MapReduce 操作接近完成的时候,master 调
度备用任务进程来执行剩下的、处于处理中状态的任务。 无论是最初的执行进程、还是备用任务进程完成了任务, 我们都把这个任务标记成为已经完成。
BigTable
简介
➢ 分布式的结构化数据存储系统。 ➢ 被设计用来处理海量数据:通常是分布在数千台普通
➢ master故障 master 周期性的将当前运行状况写入磁盘,即检查点。
如果这个master 任务失效了,可以从最后一个检查点开 始启动另一个master 进程。
MapReduce
备用任务
➢ 木桶效应 在运算过程中,如果有一台机器花了很长的时间才完
成最后几个Map 或Reduce 任务,会导致MapReduce 操 作总的执行时间超过预期。
分布式存储和计算系统介绍
技术创新 变革未来
Google的三驾马车
GFS MapReduce BigTable
返 回
GFS
简介
➢ 组件失效不再被认为是意外,而是被看做正常的现 象。常量监视器,错误侦测,容错以及自动恢复系 统集成在系统中。
➢ 文件非常巨大。 ➢ 大部分文件的修改,不是覆盖原有数据,而是在文
服务器上的PB级的数据。 ➢ 适用性广泛、可扩展、高性能和高可用性。 ➢ Google的很多项目使用Bigtable存储数据,包括Web
索引、Google Earth、Google Finance。
BigTable
数据模型
➢ 稀疏的、分布式的、持久化存储的多维度排序Map。 ➢ Map的索引是行关键字、列关键字以及时间戳;Map
for each word w in value: EmitIntermediate(w, "1");
reduce(String key, Iterator values): // key: a word // values: a list of counts
int result = 0; for each v in values:
到一个文件的语意。 ➢ 高度可用的带宽比低延迟更加重要。
GFS
架构
GFS
单一主服务器
➢ 主服务器可以通过全局的信息精确确定块的位置以及 进行复制决定。
➢ 主服务器保存三种主要类型的元数据:文件和块的命 名空间,文件到块的映射,以及每个块副本的位置。
➢ 主服务器执行所有的名称空间操作。另外,它管理整 个系统的所有块副本:它决定块的位置,创建新块和 相应的副本,协调多变的系统活动,保持块被完全复 制,均衡所有块服务器之间的负载,回收没有使用的 存储空间。
件尾追加新数据。 ➢ 应用程序和文件系统API的协同设计。
GFS
设计预期
➢ 这个系统由许多廉价易损的普通组件组成。 ➢ 这个系统保存一定数量的大文件。 ➢ 负载中主要包含两种读操作:大规模的流式读取和
小规模随机读取。 ➢ 负载中还包括许多大规模的顺序的写操作,追加数
据到文件尾部。 ➢ 系统必须高效的实现良好定义的多客户端并行追加
GFS
垃圾回收及过期副本检测
➢ 文件删除后,主服务器把文件改成一个包含删除时间戳的 隐藏的名字。在主服务器对命名空间进行常规扫描时,物 理删除超过某个时间段的包含删除时间戳的文件。
➢ 在相似的对块命名空间的常规扫描,主服务器找到孤儿块 (无法从任何文件到达的块)并擦除它们的元数据。
➢ 主服务器在周期的垃圾回收中移除所有的过期副本。无论 何时主服务器获得一个块的新租约,它增加块的版本号, 然后通知当前副本。主服务器和这些副本都把新的版本号 记录在它们的持久化存储的状态中。如果块服务器失效, 或者块服务器当机的时候错过了一些操作,块副本会过期。
result += ParseInt(v); Emit(AsString(result));
MapReduce
容错
➢ worker 故障。 master 周期性的ping 每个worker。如果在一个约定
的时间范围内没有收到worker 返回的信息,master 将把 这个worker 标记为失效。所有由这个失效的worker 完成 的Map 任务被重设为ቤተ መጻሕፍቲ ባይዱ始的空闲状态,之后这些任务就 可以被安排给其他的worker。同样的,worker 失效时正 在运行的Map 或Reduce 任务也将被重新置为空闲状态, 等待重新调度。
➢ MapReduce 架构的程序能够在大量的普通配置的计 算机上实现并行化处理。
一般算法
MapReduce
编程模型
MapReduce
MapReduce
一个例子
举例:计算一个大的文档集合中每个单词出现的次数: map(String key, String value): // key: document name // value: document contents
GFS
容错和诊断
➢ 高可用性。 ✓ 快速恢复。不管主服务器和块服务器是如何关闭的,它们 被设计为可以在数秒钟内恢复它们的状态并启动。 ✓ 块复制。每个块被复制到不同机架上的不同的块服务器上。 ✓ 主节点复制。为了可靠性主服务器状态要被复制。它的操 作日志和检查点都要复制到多台机器上。
➢ 数据完整性。每个块服务器利用校验和来检查存储的数据 是否损坏。块被分为64KB的大小,每个有一个对应的32位 的校验和。
GFS
系统交互
GFS
创建、重新复制、负载均衡
➢ 当主服务器创建一个块,会选择哪里放置初始的空副本。 ✓ 新的副本放置在低于平均硬盘使用率的块服务器。 ✓ 限制每一个块服务器上"近期"创建操作的数量。 ✓ 把块分布在机架之间。
➢ 一旦块的可用副本数少于用户指定的值,主服务器会重新 复制它。
➢ 主服务器周期性地对副本进行负载均衡:它检查当前的副 本分布情况,然后移动副本以得到更好的硬盘剩余空间以 及负载的均衡。