太原租车MapReuce 1.0及其局限性
作者:太原包车 日期:2020-03-03 浏览:
除了自动实现分布式并行计算、支持大规模海量数据处理、借鉴函数式编程思路、简洁易用等基本特点外,MapReuce1.0还具备如下特征。 以下是针对太原租车MapReuce 1.0及其局限性的主要内容。
(1)以主从结构的形式运行。MapReuce集群分为两个角色-Master和Worker,较好地实现了数据流和控制流的分离。
(2)函数与reuce()函数之间的数据处理。对ap()函数的返回值进行一定的处理后才传给reuce()函数,其中的处理主要包括shuffle处理。为了确保每个reuce()函数的输入都按键(key)排序,MapReuce系统的执行过程需要一个特殊的过程--shuffle,即对ap()函数的数据结果进行排序。
combine()函数。为了降低ap()函数与reuce()函数之间的数据传递量,一般采用combine()函数对ap()函数的数据结果进行合并处理。
partition()函数,pReuce对p()函数输出的中间键使用partition()函数进行分区处理,为每个Reuce任务创建一个分区。
(3)<key,value>类型的输入输出。MapReuce模型的输入和输出均为<key,value>集,其中p()函数的输出为reuce()函数的输入,这两种函数的输入和输出也均为<key,value>集。MapReuce框架中数据处理函数的输入输出如下。
p(K,v)-list(K,v2)
合并(K,list(V2))-list(k2,V2)分区(K,V2)-整数化简(k2,list(V))-list(K,V)
(4)故障处理及容错机制。MapReuce故障可分为Master故障和Worker故障两类,并分别给出了不同的故障处理及容错机制。通常,Masteri通过将数据周期性地写入磁盘,并启动另一个Master进程和利用检查点技术实现故障恢复。然而,当某个Worker发生故障时,正在运行或尚未运行完毕的任务的状态将重置为空闲状态,并将重新调度到其他Worker节点。
(5)数据存储位置的多样性。MapReuce中的数据存储位置具有多样性,具体如下:
源文件:GFS.
Map处理结果:本地存储。
Reuce处理结果:GFS.
日志:GFS
(6)任务粒度大小的重要性。为了更好地支持负载均衡和故障恢复,MapReuce需要对Map任务和Reuce任务进行拆分处理。如何将Map任务(或Reuce任务)拆分成若干个片段是MapReuce的一个重要机制。通常,拆分后的片段个数为集群中的Worker节点的整数倍。
(7)慢节点的处理及任务备份机制的必要性。由于MapReuce是在分布式集群环境中运行的,个别慢节点往往成为影响整个程序的运行速度的主要因素。在MapReuce中,慢节点的处理通常采用任务备份机制,如推测性的执行
投机执行)。
除了上述特征之外,太原租车MapReuce还采用了一些关键技术;跳过损坏记录、本地执行、状态信息、计数器等。