总结:如何让Hadoop在我的服务器上同时使用更多的CPU?
我在一台配备64GB RAM,SSD和16个CPU内核的高端服务器上运行Cassandra和Hadoop。我的mapreduce作业的输入有50M行。在映射阶段,Hadoop创建了七个映射器。其中六个完成得很快,第七个完成了两个小时以完成地图阶段。我建议更多这样的地图制作者......
job.getConfiguration()。set(“mapred.map.tasks”,“12”);
但Hadoop继续只创造七个。我想让更多的映射器并行运行,以更好地利用服务器中的16个核心。有人可以解释Hadoop如何决定创建多少个地图制作者?
在减少阶段,我有类似的担忧。我告诉Hadoop创建12个这样的缩减器......
job.setNumReduceTasks(12);
Hadoop确实创建了12个减速器,但是11个快速完成,最后一个减少了几个小时。我的工作有300K键,所以我不认为他们都被送到同一个减速器。
感谢。
答案 0 :(得分:0)
地图任务编号取决于您的输入数据 例如:
您无法在代码中指定地图编号
6快1慢的问题是因为数据不平衡。我以前没有使用过Cassandra,所以我不能告诉你如何解决它。