我有一个32核的系统。当我使用 Hadoop 运行 MapReduce 作业时,我从未看到 java 进程使用超过 150% CPU(根据 top),并且通常保持在 100% 左右。它应该接近 3200%。
我需要更改哪些属性(以及在哪个文件中)才能启用更多工作人员?
可能有两个问题,我在下面概述。我还想指出,这是一个非常常见的问题,您应该查看之前提出的 Hadoop 问题。
Your mapred.tasktracker.map.tasks.maximum
可以设置为低conf/mapred-site.xml
。如果当您检查 JobTracker 时,您看到几个待处理的任务,但只有几个正在运行的任务,这将是问题所在。每个任务都是一个线程,因此假设该节点上最多需要 32 个插槽。
否则,您的数据可能没有被分割成足够的块。您正在运行少量数据吗?您的 MapReduce 作业可能仅在几个输入拆分上运行,因此不需要更多映射器。尝试在数百 MB 的数据上运行您的作业,看看您是否仍然遇到相同的问题。
Hadoop 自动分割您的文件。文件分成的块数是文件的总大小除以块大小。默认情况下,一个映射任务将分配给每个块(而不是每个文件)。
In your conf/hdfs-site.xml
配置文件中,有一个dfs.block.size parameter
。大多数人将此设置为 64 或 128mb。但是,如果您尝试做一些小事情,您可以将其设置为更多地分解工作。
您还可以手动将文件拆分为 32 个块。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)