Hadoop中的shuffle、partition和combiner

来源:互联网 发布:龙神契约神兵进阶数据 编辑:程序博客网 时间:2024/06/03 19:38

如大家所知道的,Hadoop的计算框架主要是两个过程分别是map和reduce,但是还有好几个过程跟性能调优有关。如:shuffle、partition和combiner。

shuffle:数据从map端传输到reduce端的过程。据说是可以期待奇迹发生的环节。

计算框架总体的过程如下:


map阶段:从磁盘读入数据 --> map函数 --> combine结果(非必需的过程)--> 结果写回磁盘。

map阶段中,当输出数据达到一定的值(阈值)时,会从内存写到磁盘;若小于阈值,则会缓存起来,可以减小磁盘IO开销。所以,可以通过设置适当的阈值大小,来优化性能。


reduce阶段:从map的输出中读入数据 --> sort(根据key值) --> reduce函数--> 结果到HDFS。

reduce阶段中,会从map端拉数据过来,可能会跨节点,应该尽量减少这种网络开销,使数据“本地化”。


partition:将map的结果发送到相应的reduce。

这就对partition有两个要求:

1)负载均衡。尽量将工作分配给不同的reduce。

2)效率。分配速度要快。

combiner:相当于本地化的reduce。

特点:map端的输出作为其输入;其输出作为reduce的输入。这就要求combiner要保持输入和输出类型的一致性,也就不适用求平均数、权益这样的运算。