了解Hadoop MapReduce中map和reduce任务的数量

了解Hadoop MapReduce中map和reduce任务的数量,hadoop,mapreduce,Hadoop,Mapreduce,假设hadoop系统中的节点有8GB内存可用 如果任务跟踪器和数据节点消耗2GB,并且每个任务所需的内存为200MB,那么可以启动多少个map和reduce 8-2=6GB 因此,6144MB/200MB=30.72 因此,总共将启动30个map和reduce任务 我是对的还是遗漏了什么?映射器和还原器的数量不是由可用资源决定的。您必须通过调用setNumReduceTasks()来设置代码中减缩器的数量 至于映射程序的数量,则更为复杂,因为它们是由Hadoop设置的。默认情况下,每个输入拆分大

假设hadoop系统中的节点有8GB内存可用

如果任务跟踪器和数据节点消耗2GB,并且每个任务所需的内存为200MB,那么可以启动多少个map和reduce

8-2=6GB

因此,6144MB/200MB=30.72

因此,总共将启动30个map和reduce任务


我是对的还是遗漏了什么?

映射器和还原器的数量不是由可用资源决定的。您必须通过调用
setNumReduceTasks()
来设置代码中减缩器的数量

至于映射程序的数量,则更为复杂,因为它们是由Hadoop设置的。默认情况下,每个输入拆分大约有一个映射任务。您可以通过更改默认块大小、记录读取器和输入文件的数量来调整

您还应该在hadoop配置文件中设置映射任务的最大数量,减少并发运行的任务,以及分配给每个任务的内存。最后两种配置是基于可用资源的配置。请记住,映射和减少在CPU上运行的任务,因此您实际上受到可用内核数量的限制(一个内核不能同时运行两个任务)


可能会帮助你了解更多细节

并发任务的数量不仅仅取决于节点上可用的内存。这也取决于磁芯的数量。如果您的节点有8个vCore,并且每个任务占用1个core,那么一次只能运行8个任务。

谢谢!但是,考虑到上述资源量,我们是否可以找出使用给定资源可以运行的映射和减少任务的最大数量?@user5155835我认为没有一种(简单的)方法可以通过编程方式找到这一点。你的想法几乎是正确的,但你也必须考虑可用内核的数量。不是编程的,而是理论上的,给定的资源?@ USS5155835,你的想法是正确的,除了一个内核不能同时运行两个地图任务,因此,您还受到可用内核数量的限制。并发任务的数量不仅仅取决于节点上可用的内存。这也取决于磁芯的数量。如果节点有8个vCore,并且每个任务占用1个core,那么一次只能运行8个任务。