2

我对 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

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

如何在运行时指定它?

4

2 回答 2

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.poolname 属性:

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

参考hadoop 公平调度器

于 2014-03-12T02:02:47.860 回答
0

几个建议:

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

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

如果可能没关系,但我总是把(和-Dkey=value options之间没有空格)聚在一起,我发现这更明显地表明这不是变量 args 列表的一部分。-Dkey=value

验证已正确获取此内容的一种方法是检查作业跟踪器中的作业的 job.xml - 它是否列出了 pool.name 属性,是否具有您配置的值。

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

`bin/hadoop jar hadoop-examples-1.0.4.jar grep -Dpool.name=sample_pool input output 'dfs[a-z.]+' `
于 2012-11-13T11:23:42.460 回答