出于负载平衡的原因,我想在 Hadoop 环境中创建比 reducer 更多的分区。有没有办法将分区分配给特定的 reducer ,如果是,我可以在哪里定义它们。我写了一个单独的 Partitioner,现在想用特定的分区来解决特定的 reducer。
预先感谢您的帮助!
最佳答案
分配是为 reducer 完成的。创建的分区与选择的 reducer 数量一样多。您可以通过以下方式选择 reducer 的数量
job.setNumReduceTasks(n);
数量 n 不必受您拥有的物理 reducer 数量的限制。只有一些等待才能获得下一个减少槽。在您的分区程序代码中,您可以实现将键分配给特定分区所需的逻辑。
但是,我认为通过超出物理可用的 reducer 插槽的数量无法实现任何效率,因为它只会导致等待下一个 reducer 插槽。
关于hadoop将分区分配给reducer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16232609/