Hadoop之大数据平台基础(2)

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移动到等待队列尾部重新排队,但是如果连续四次汇报失败,同样会移除。

猜你喜欢

转载自flycw.iteye.com/blog/2378397