如何在hadoop mapreduce中提交具有配置文件目录的作业?

时间:2011-12-07 14:32:53

标签: hadoop mapreduce

我有一个问题:我想提交一个配置文件目录的作业,而该目录不在hadoop dfs中,hadoop有没有选择这样做?我想提交目录,如提交作业的jar文件,以便hadoop可以将作业和配置目录分发给所有datanode。当我使用这个命令时,我发现-files选项似乎不起作用:bin / hadoop jar job.jar输出输出-files conf_dir。似乎-files选项仅适用于hadoop流式传输

1 个答案:

答案 0 :(得分:-1)

  

我想提交一个带有配置文件目录的作业,而该目录不在hadoop dfs中,hadoop有没有选择这样做?

使用--config选项指定配置文件的目录。

  

我想提交目录,比如提交job的jar文件,以便hadoop可以将作业和配置目录分发给所有datanode。

在提交作业之前,配置文件应该存在于守护进程启动的所有节点中,因此在提交作业时分发它们没有意义。要发送任何其他参数,请使用-D option。如果sidesata很大,那么使用DistributedCache分发数据并在mapper和reducer中读取它。

  

我发现使用此命令时-files选项似乎不起作用:bin / hadoop jar job.jar输出输出-files conf_dir。似乎-files选项仅适用于hadoop流式传输。

-files选项使用逗号分隔的任何文件列表(不是目录),并将文件分发到所有节点。框架不读取那些文件,map中的代码和reduce任务必须显式读取文件。

另外,根据Hadoop - The Definitive Guide

  

请注意,在客户端配置中设置某些属性无效。对于   例如,如果在您的作业提交中设置了mapred.tasktracker.map.tasks.maximum   期望它会改变任务工作者运行的任务槽的数量 -   在你的工作,然后你会失望,因为这个属性只有荣幸   如果在tasktracker的mapred-site.html文件中设置。通常,您可以告诉组件   其中一个属性应该由其名称设置,所以mapred.task的事实   tracker.map.tasks.maximum以mapred.tasktracker开头,为您提供线索   仅为tasktracker守护程序设置。然而,这不是一个严格的规则,所以   在某些情况下,您可能需要诉诸反复试验,甚至阅读来源。