Hadoop之大数据平台基础(2)
一、Map/Reduce工作机制分析-数据的流向分析
在MspReduce算法核心框架中,待处理的数据最开始放在HDFS,然后会背诵网Map的各个节点,输出为中间键值对输出。然后呢,如何将中间数据交给Reduce呢,每个worker节点的分配规则呢?
Shuffle:
在Map计算完成后,将会让数据通过一个名为Shuffle的过程在最终交给Reduce处理。这个Shuffle就是我们处理Hadoop数据处理核心,他能够将分散在不同的map阶段worker节点上的数据进行洗牌并按照一定规则合并,组成新的格式后分配给Map节点worker节点处理数据。
steps:
1.map task procedure:imput split - map - buffer in momory
2.buffer in memory: partition, sort and split to disk,partition是作为中间输出键值对的每个区间下,全局默认的所有节点的数据处理规则无序,每个区间内有序。通过该阶段,将分配处理各个区间,保存处理后的哥哥区间块到disk中。
3.将处理好的各个区间中的数据进行合并merge,sort,统一交给Reduce,输出。
Shuffle过程植入于Map端和Reduce端两边
1. Map端工作:
a. 分区:根据键值对的Key值,选定键值对所属的Partition区间(与Reduce节点对应)。
b. 排序:对各分区内的键值对根据键进行排序。
c. 分割:Map端的结果先是存放在缓冲区内的,如果超出,自然就要执行分割的处理,将一部分数据发往硬盘。
d. 合并:对于要发送往同一个节点的键值对,我们需要对它进行合并。(这一步很可能针对硬盘,对于海量数据处理,缓冲区溢出是很正常的事情)
2. Reduce端工作:
a. Copy:以HTTP的方式从指定的Map端拉数据,注意是Map端的本地磁盘。
b. 合并:一个Reduce节点有可能从多个Map节点获取数据,获取到之后
c. 排序:对各分区内的键值对根据键进行排序。和Map端操作一样。
二、错误处理机制
对于Hadoop集群,但各节点的错误,不会影响到整理,各个分布式的任务仍然通过JodTracker跟踪分配处理。但是对于致命性的错误,一旦JobTracker主程序错误,Hadoop集群就更无法使用,只能从新启动。
TaskTracker节点错误:
JonTracker和TaskTracker的心跳机制:TaskTracker必须保证在1分钟之内向JobTracker回报当前节点的进度,
1.如果超时仍然没有收到汇报,JobTracker仍然没有接收到汇报,就会将TaskTracker从等待调度队列集合移除。
2.当收到报告但是是失败的,就会就爱你个这个TaskTracker移动到等待队列尾部重新排队,但是如果连续四次汇报失败,同样会移除。