美文网首页
Hadoop的全局排序

Hadoop的全局排序

作者: 小小少年Boy | 来源:发表于2018-08-05 15:10 被阅读0次

方法一

设置一个分区,当文件较大时效率低

方法二

创建一系列有序的文件,然后归并排序这些文件,得到一个全局有序的文件。(1000个1-10000的数据,跑10个ruduce任务)

借鉴快速排序的思路:假设为升序排序,那么每完成一次partition,基准元素左边所有元素的值都小于等于基准元素,而基准元素右边的所有元素的值都大于等于基准元素,如果现在有N个基准元素,那么数据就被map成了N+1个区间,让reducer个数等于N+1,将不同区间的数据发送到相应区间的reducer;hadoop利用shuffle操作将这N+1份数据自动排序,reduce操作只需要接收中间结果后直接输出到文件即可。

由此归纳出用hadoop对大量数据排序的步骤:

1)、对待排序数据进行抽样;

2)、对抽样数据进行排序,产生基准元素(例如得到的pivot为:3,9,11);

3)、Map对输入的每条数据计算其处于哪两个基准元素之间,之后将数据发给相应的reduce(例如区间划分为:<3、[3,9)、>=9,分别对应reducer0、reducer1、reducer2);

4)、Reduce将获得数据直接输出。

通过对key空间进行采样就可以较为均匀的划分数据集,避免数据倾斜,使得每个rudece的执行时间大致相同

相关文章

网友评论

      本文标题:Hadoop的全局排序

      本文链接:https://www.haomeiwen.com/subject/tcybvftx.html