HW3.MapReduce

1.简述MapReduce的主要功能和设计思想。
主要功能:
任务调度:提交的一个计算作业(job)被划分为很多个计算任务(tasks),任务调度功能主要负责为这些划分后的计算任务分配和调度计算结点(map节点或reduce节点);同时负责监控这些节点的执行状态,并负责map节点执行的同步控制(barrier);也负责进行一些计算性能优化处理,如对最慢的计算任务采用多备份执行、选最快完成者作为结果。
数据/代码相互定位:为了减少数据通信,一个基本原则是本地化数据处理,即一个计算节点尽可能处理其本地磁盘上所分布储存的数据,这实现了代码向数据的前移;当无法进行这种本地化数据处理时,再寻找其他可用节点并将数据从网络上传送给该节点(数据向代码迁移),但将尽可能从数据所在的本地机架上寻找可用节点以减少通信延迟。
出错处理:以低端商用服务器构成的大规模MApReduce计算集群中,节点硬件(主机、磁盘、内存等)出错和软件有bug是常态,因此,MapReduce需要能检测并隔离出错节点,并调度分配新的节点接管出错节点的计算任务。
分布式数据储存与文件管理:海量数据处理需要一个良好的分布数据储存和文件管理系统支撑,该文件系统能够把海量数据分布储存在各个节点的本地磁盘上,但保持整个数据在逻辑上成为一个完整的数据文件;为了提供数据储存容错机制,该文件系统还要能提供数据块的多备份储存管理能力。
Combiner和Partitioner:为了减少数据通信开销,中间结果数据进入reduce节点前需要进行合并(combine)处理,把同样主键的数据合并到一起避免重复传送;一个reduce节点所处理的数据可能会来自多个map节点,因此,map节点输出的中间结果需使用一定的策略进行适当的划分(partitioner)处理,保证相关数据发送到同一个reduce节点。

设计思想::
向“外”横向拓展,而非向“上”纵向拓展:即MapReduce集群的构筑选用价格便宜、易于拓展的大量低端商用服务器,而非价格昂贵、不以拓展的高端服务器。
失效被认为是常态:MapReduce集群使用大量低端商用服务器,因此节点硬件出错和软件出错是常态。因而,MapReduce并行计算框架使用了多种有效的机制,如节点自动重启技术,使集群和计算框架具有对付节点失效的健壮性,能有效处理失效节点的检测和恢复。
把处理向数据迁移:MapReduce采用了数据/代码相互定位的技术方法,计算节点尽可能处理其本地磁盘上所分布储存的数据,以发挥数据本地化的特点,当无法进行这种本地化数据处理时,再采用就近原则寻找其他可用计算节点,并把数据传送到该可用计算节点。
顺序处理数据、避免随机访问数据:MapReduce设计为面向大数据集批处理的并行计算系统,所有计算都被组织成很长的流式操作,以便能利用分布在集群中大量节点上磁盘集合的高传输带宽。
为应用开发者隐藏系统层细节:MapReduce提供了一种抽象机制将程序员与系统层细节隔离开来,程序员仅需描述需要计算什么,而具体怎么去做就交由系统的执行框架处理,这样程序员可从系统层细节中解放出来,而致力于其应用本身问题的算法设计。
平滑无分的可拓展性:MapReduce几乎能实现理想的拓展性特征。多项研究发现基于MapReduce的计算性能可随节点数目增长保持近似于线性的增长。
2.简述GFS的基本设计原则和数据访问过程。
基本设计原则:
廉价本地磁盘分布储存:各节点本地分布式储存数据,优点是不需要采用价格较贵的集中式磁盘阵列,容量可随节点数增加自动增加。
多数据自动备份解决可靠性:采用廉价的普通磁盘,把磁盘数据出错视为常态,用自动多数据备份储存解决数据储存可靠性问题。
为上层的MapReduce计算框架提供支撑:GFS作为向上层MapReduce执行框架的底层数据储存支撑,负责处理所有的数据自动存储和容错,因而上层框架不需要考虑底层的数据储存和数据容错问题。

数据访问过程:
1.在程序运行前,数据已经储存在GFS文件系统中;程序运行是应用程序告诉GFS Server所要访问的文件名或者数据块索引是什么。
2.GFS Server根据文件名和数据块索引在其文件目录空间中查找和定位该文件或数据块,找出数据块具体在哪些ChunkServer上;将这些位置信息回送给应用程序。
3.应用程序根据GFS Server返回的具体Chunk数据块位置信息,直接访问相应的ChunkServer
4.应用程序根据GFS Server返回到具体Chunk数据块位置信息直接读取指定位置的数据进行计算处理。
3.简述BigTable的数据模型设计。
本质上说,Bigtable是一个键值(key-value)映射。BigTable中的表格是松散的、分布的、持久的、多维的、有序的图(map)。它不是完整的关系数据模型,支持对数据布局的动态控制,允许在列族中添加/删除限定符;允许客户端推断本地属性。
Bigtable的键有三维,分别是行键(row key)、列键(column key)和时间戳(timestamp),行键和列键都是字节串,时间戳是64位整型;而值是一个字节串。
BigTable通过行关键字的字典顺序来组织数据。表中的每个行都可以动态分区。每个分区叫做一个"Tablet",Tablet是数据分布和负载均衡调整的最小单位。
列关键字组成的集合叫做"列族",列族是访问控制的基本单位。存放在同一列族下的所有数据通常都属于同一个类型(我们可以把同一个列族下的数据压缩在一起)。列族在使用之前必须先创建,然后才能在列族中的任何一列关键字下存放数据;列族创建后,其中的任何一个列关键字下都可以存放数据。根据我们的设计意图,一张表中的列族不能太多(最多几百个),并且列族在运行期间很少改变。与之相对应的,一张表可以有无限多个列。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值