我创建了 ShuffleConsumerPlugin
的自定义实现,它可以正常工作。但是,它是在我的映射任务完成后实例化的:
org.apache.hadoop.mapred.LocalJobRunner: Waiting for map tasks
org.apache.hadoop.mapred.LocalJobRunner: Starting task: attempt_local1582630093_0001_m_000000_0
org.apache.hadoop.mapred.LocalJobRunner: map > sort
org.apache.hadoop.mapred.Task: Task 'attempt_local1582630093_0001_m_000000_0' done.
org.apache.hadoop.mapred.LocalJobRunner: map task executor complete.
org.apache.hadoop.mapred.LocalJobRunner: Waiting for reduce tasks
org.apache.hadoop.mapred.LocalJobRunner: Starting task: attempt_local1582630093_0001_r_000000_0
org.apache.hadoop.mapred.ReduceTask: Using ShuffleConsumerPlugin: FooPlugin
Reduce 任务在映射任务完成后开始。我按照建议将作业的 mapreduce.job.reduce.slowstart.completedmaps
设置为 0.0
here ,但这没有任何区别。
我正在使用 Hadoop 2.5.1
最佳答案
我猜你是在本地模式下工作。所以只有一个映射器运行。 Reduce 阶段将在至少一个映射器完全交付他的输出时开始(使用提到的设置 mapreduce.job.reduce.slowstart.completedmaps = 0.0)。
关于java - 为什么 ShuffleConsumerPlugin 在映射之前没有启动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26473297/