首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >设置hadoop任务数/节点

设置hadoop任务数/节点
EN

Stack Overflow用户
提问于 2014-02-05 02:35:55
回答 3查看 212关注 0票数 1

我在一个集群上运行Hadoop作业,该集群由我们的几个应用程序共享。我们大约有40个节点和4个映射器插槽/节点。每当我的作业(只有mapper)运行时,它会占用所有160个插槽,并阻止其他作业运行。我尝试在作业"mapred.tasktracker.map.tasks.maximum=1“中设置属性,并将任务代码中的"mapred.map.tasks”设置为30 (以将其限制为仅30个节点)。

代码语言:javascript
运行
复制
    conf.setInt ( "mapred.tasktracker.map.tasks.maximum", 1 );
    conf.setInt ( "mapred.map.tasks", 30 );
    conf.setBoolean ( "mapred.map.tasks.speculative.execution", false );

我有两个问题:

a.当作业运行时,job.xml反映"mapred.tasktracker.map.tasks.maximum=1",但作业最终仍占用160个插槽。

b. job.xml中的mapred.map.tasks不是30。这仍然是一个很大的数字(比如800)。

任何帮助都将不胜感激。

EN

回答 3

Stack Overflow用户

发布于 2014-02-05 03:10:46

我发现在将数据移动到HDFS时,最好通过设置输入文件的块大小来控制映射器的最大数量。例如,如果将块大小设置为总大小的1/30,则最终将有30个块,因此最多有30个map任务。

hadoop fs -D fs.local.block.size=134217728 -put local_name remote_location

票数 0
EN

Stack Overflow用户

发布于 2014-02-05 07:54:04

我们可以为job指定最大和最小map任务,但hadoop不保证它的执行,就像它对reducers所做的那样。Hadoop使用最小和最大map任务值来估计,并尽最大努力使任务数量接近Hadoop应该在集群中使用像it.You这样的调度器来解决您的问题。公平调度是一种将资源分配给作业的方法,使得所有作业在一段时间内平均获得相等的资源份额。

票数 0
EN

Stack Overflow用户

发布于 2014-02-05 09:25:20

您不能限制映射器数量。

映射器的数量是由你的数据大小和块size.If你的数据非常大,你只能增加你的块大小来减少映射器的数量。

因为如果限制数量,映射器将阻塞等待所有其他映射器的结束。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21560613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档