使用jar选项将作业提交到不同的公平调度程序池

时间:2012-11-12 18:49:11

标签: hadoop mapreduce

我对Hadoop相对较新,并且在使用hadoop jar选项时尝试在运行时将同一用户的不同作业提交给公平调度程序的不同池。

根据http://osdir.com/ml/hive-user-hadoop-apache/2009-03/msg00162.html中的解决方案,我在运行作业时使用了-D选项。

具体来说,我运行了命令:bin/hadoop jar hadoop-examples-1.0.4.jar grep input output 'dfs[a-z.]+' -D pool.name=sample_pool

我可以在作业跟踪调度程序页面中看到该池,但该作业仍然提交给用户池。我发现jar选项不支持-D选项:http://hadoop.apache.org/docs/r1.0.4/commands_manual.html#job

如何在运行时指定?

2 个答案:

答案 0 :(得分:0)

一些建议:

  • 您是否重新启动了作业跟踪器,因为您在第一个链接中建议了更改?
  • 您之前需要在其他参数之前设置所有-D属性(我不确定在最近的版本中是否已更改)。尝试:

    bin/hadoop jar hadoop-examples-1.0.4.jar -Dpool.name=sample_pool grep input output 'dfs[a-z.]+'

如果可能不重要,但我总是把-Dkey=value options-Dkey=value之间没有空格)捆绑在一起,我觉得它更明显这不是变量args列表的一部分。

正确选择验证此方法的一种方法是检查作业跟踪器中作业的job.xml - 是否列出了pool.name属性,是否具有您配置的值。 / p>

编辑只是阅读示例是如何捆绑的,您需要在程序名称之后和其他参数之前添加-D:

`bin/hadoop jar hadoop-examples-1.0.4.jar grep -Dpool.name=sample_pool input output 'dfs[a-z.]+' `

答案 1 :(得分:0)

我认为您可以指定参数mapred.fairscheduler.poolmapred.fairscheduler.poolnameproperty

例如,您可以运行命令

bin/hadoop jar hadoop-examples-1.0.4.jar -Dmapred.fairscheduler.pool=sample_pool grep input output 'dfs[a-z.]+'

<强> mapred.fairscheduler.pool:

  

指定作业所属的池。如果已指定,则忽略mapred.fairscheduler.poolnameproperty。

<强> mapred.fairscheduler.poolnameproperty:

  

指定使用哪个jobconf属性来确定作业所属的池。字符串,默认值:user.name(即每个用户一个池)。另一个有用的值是mapred.job.queue.name,以使用MapReduce&#34;&#34; queue&#34;访问控制列表系统(见下文)。 mapred.fairscheduler.poolnameproperty仅用于未显式设置mapred.fairscheduler.pool的作业。

<强>引用hadoop fair scheduler