我无法了解以下 2 个 mapreduce 作业配置属性之间的差异。
mapreduce.reduce.shuffle.parallelcopies
mapreduce.tasktracker.http.threads
mapreduce.reduce.shuffle.parallelcopies 是在复制(洗牌)阶段由 reduce 运行的并行传输的数量。
mapreduce.tasktracker.http.threads 是 http 服务器的工作线程数。这用于 map 输出获取。
parallelcopies 表示并行传输的数量,我猜它指的是一次将 map 输出并行传输到 reducer。 http threads 表示要在 reducer 中运行以复制 map 输出的 http 线程数。
我无法区分这两个属性,对我来说似乎是相同的,因为两者都与 reducer 的提取器数量有关。
请帮助我了解这些属性的实际用途以及它们将如何提供帮助?
最佳答案
下图让您了解 mapreduce 程序的流程。
在 map tack 之后,运行 map 任务的节点将通过 HTTP 线程提供输出文件,此类线程的数量将由 mapreduce.tasktracker.http.threads 控制。默认情况下它是 40,意味着一个 tasktracker 将通过 40 个 http 线程获取数据。因此它可以为 40 个 reducer (最少)提供服务,同时它也可以变高。
一旦映射端的数据可用,reducer 就会从每个映射器节点复制它们。所以一次他们必须从许多节点复制。为了利用所有系统资源并减少复制中间数据的时间,reducer 将并行执行此操作。此并行副本数由 mapreduce.reduce.shuffle.parallelcopies 控制。默认为 5,因此一个 reducer 可以并行复制 5 个 map 输出。
关于hadoop - Mapreduce 并行副本与 http 线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29841442/