摘要:如何让 Hadoop 在我的服务器上同时使用更多 CPU?
我在具有 64GB RAM、SSD 和 16 个 CPU 内核的单个高端服务器上运行 Cassandra 和 Hadoop。我的 mapreduce 作业的输入有 50M 行。在映射阶段,Hadoop 创建了七个映射器。其中六个很快就完成了,第七个运行了两个小时来完成地图阶段。我已经建议了更多这样的映射器......
job.getConfiguration().set("mapred.map.tasks", "12");
但 Hadoop 继续只创建了 7 个。我想让更多的映射器并行运行,以更好地利用服务器中的 16 个内核。有人能解释一下 Hadoop 如何决定创建多少个映射器吗?
在减少阶段我也有类似的担忧。我告诉 Hadoop 创建 12 个这样的 reducer ...
job.setNumReduceTasks(12);
Hadoop 确实创建了 12 个 reducer,但 11 个快速完成,最后一个运行了几个小时。我的工作有 300K 键,所以我不认为它们都被路由到同一个减速器。
谢谢。