在hadoop中合并少量已排序的大型列表的最快方法是什么?

azpvetkf  于 2021-06-02  发布在  Hadoop
关注(0)|答案(0)|浏览(185)

我有一个小的hadoop(cdh5.1.0,mrv2/yarn)集群(5x节点4cpu,16gbram,600gbdisk),其中包含少量~30个~15gbsequencefile。sequencefiles包含成对的 BytesWritable / BytesWritable ,并且键并不是均匀分布在可能的键空间中-这是相当粗糙的。但是,这些文件是经过排序的。
我需要将这些合并在一起,以尽可能高效地创建一个单独的排序序列文件。我已经尝试了很多方法,但都不是很成功。
最初,我尝试使用带有randomsampler和totalorderpartitioner的mapreduce作业,以及大约1000个Reducer。但是,由于输入键的不一致性,randomsampler不太擅长在分区之间分发数据,我最终得到了999个reducer成功,1个reducer由于本地磁盘用完而失败。
我突然想到,这种方法似乎没有利用输入数据已经被排序的事实——如果我的输入数据是随机排序的,它将解决这个问题。
我注意到有一个sequencefile.sorter类,它的目的是简单地将sequencefile合并到一个单独的排序输出中。虽然这将是一个单线程的过程,但这会比mr方法更好吗?有没有一种不同的mr方法可以利用我的输入数据已经被排序的事实?看起来最快的方法是进行简单的合并,但是有没有一种方法可以跨集群并行地进行合并呢?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题