我的问题与此帖Sorting large data using MapReduce/Hadoop有关。 我对任意设置进行排序的想法是:
然后完成以下处理:
为了利用数据的位置,可以安排新的Reducer任务来合并前一个reducer任务生成的多个输出文件。因此,例如,如果K = 5,第一个reducer任务将生成大小为50000的文件,新的reducer任务将使用5个文件,每个50000个已排序的记录。将安排新的Reducer作业,直到只剩下一个文件,在这种情况下,大小为250.000.000(因为R = 4)。最后,将在另一台计算机上安排新的Reducer作业,以将文件合并为一个10 ^ 9文件
我的问题:在Hadoop中是否可以安排执行Reducer作业,以便合并某些目录中的文件,直到只剩下1个文件?如果是,怎么样?
另一种情况是在每个合并步骤之后安排MapReduce作业,例如,大小为50000的文件将通过在其他计算机上运行的reduce任务,然后在其他计算机上的大小为250.000的文件等并行合并。但这会产生大量的网络流量。在任何情况下,问题对于这种情况仍然有效 - 如何链接几个MapReduce作业,以便在仅输出1个结果文件后链接停止?