我是mapreduce-hadoop世界的新手。在配置和文档中,它们指定了Map器和还原器的数量。这到底是什么意思?我的朋友是:是否指定要进行的级别Map/减少。也就是说,如果reducer的数量=2,那么reduce方法将被调用2次。它是?它指定了并行工作的mapper/reducer线程的数量,但是每个线程只Map/reduce一次。哪一个是正确的?或者它意味着别的什么。我很困惑。。请回答我
aoyhnmkz1#
不,你完全错了。指定maptasks的数量只会给框架一个提示,输入格式决定输入拆分的数量,一个拆分=一个maptask。reduce任务的数量表示Map输出键划分了多少个任务,假设您有1000个不同的Map输出键和5个reduce任务,那么每个reduce任务将得到大约200个键。对于每个键,reduce函数都会被调用,因此在我的示例中,每个reduce任务大约调用200次。maptasks,reduce tasks的数量并不能说明并行化。每个节点的并行线程数由tasktracker确定。因此,您应该指定要并行运行的tasktracker可用的map和reduce插槽数。配置为 mapred.tasktracker.map|reduce.tasks.maximum . 请注意,减速器(在插槽中)将执行一项任务。因此,配置reduce插槽的数量和相应的reduce任务的数量是非常重要的。如果您总共有10个reduce插槽,那么您至少还需要10个reduce任务,否则某些插槽将处于空闲状态。
mapred.tasktracker.map|reduce.tasks.maximum
bd1hkmkf2#
由于您是map reduce的新手,我坚信您需要仔细阅读本文:http://static.googleusercontent.com/external_content/untrusted_dlcp/research.google.com/en//archive/mapreduce-osdi04.pdf你们中的大多数人一旦清楚地理解了这个范例,疑虑就会消除。这是一个完美的起点。
2条答案
按热度按时间aoyhnmkz1#
不,你完全错了。
指定maptasks的数量只会给框架一个提示,输入格式决定输入拆分的数量,一个拆分=一个maptask。
reduce任务的数量表示Map输出键划分了多少个任务,假设您有1000个不同的Map输出键和5个reduce任务,那么每个reduce任务将得到大约200个键。对于每个键,reduce函数都会被调用,因此在我的示例中,每个reduce任务大约调用200次。
maptasks,reduce tasks的数量并不能说明并行化。每个节点的并行线程数由tasktracker确定。因此,您应该指定要并行运行的tasktracker可用的map和reduce插槽数。配置为
mapred.tasktracker.map|reduce.tasks.maximum
. 请注意,减速器(在插槽中)将执行一项任务。因此,配置reduce插槽的数量和相应的reduce任务的数量是非常重要的。如果您总共有10个reduce插槽,那么您至少还需要10个reduce任务,否则某些插槽将处于空闲状态。bd1hkmkf2#
由于您是map reduce的新手,我坚信您需要仔细阅读本文:http://static.googleusercontent.com/external_content/untrusted_dlcp/research.google.com/en//archive/mapreduce-osdi04.pdf
你们中的大多数人一旦清楚地理解了这个范例,疑虑就会消除。这是一个完美的起点。