您的位置:首页 > 运维架构

Hadoop中的shuffle、partition和combiner

2017-09-08 09:20 302 查看
如大家所知道的,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要保持输入和输出类型的一致性,也就不适用求平均数、权益这样的运算。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hadoop