我有一个问题:我想提交一个配置文件目录的作业,而该目录不在hadoop dfs中,hadoop有没有选择这样做?我想提交目录,如提交作业的jar文件,以便hadoop可以将作业和配置目录分发给所有datanode。当我使用这个命令时,我发现-files选项似乎不起作用:bin / hadoop jar job.jar输出输出-files conf_dir。似乎-files选项仅适用于hadoop流式传输
答案 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守护程序设置。然而,这不是一个严格的规则,所以 在某些情况下,您可能需要诉诸反复试验,甚至阅读来源。