Hadoop作业配置文件规范

时间:2011-11-16 16:27:04

标签: bash hadoop cloudera

我有大约10个Hadoop工作。我有一系列配置这些作业的XML文件,例如:

-conf /path/on/my/local/system/start-conf.xml
-conf /path/on/my/local/system/job-1-conf.xml
-conf /path/on/my/local/system/job-2-conf.xml
-conf /path/on/my/local/system/job-i-conf.xml
...
-conf /path/on/my/local/system/job-10-conf.xml

假设我有一个用于运行名为“com.my.project.RunClass”的作业的类 假设我使用此命令运行我的作业:

hadoop jar /path/to/project.jar com.my.project.RunClass -conf /path/on/my/local/system/start-conf.xml

我想用一些占位符替换段“/ path / on / my / local / system”,例如:$ {root.conf.dir},这样我就可以运行类似的工作:

hadoop jar /path/to/project.jar com.my.project.RunClass -conf ${root.conf.dir}/job-1-conf.xml -Droot.conf.dir=/path/on/my/local/system

任何版本的Hadoop都可以实现吗?我正在使用Cloudera发行版,似乎它每次都失败了。

1 个答案:

答案 0 :(得分:1)

我不知道bash 4. *,但是较旧的bashes不支持带有'。'的vars名称。

尝试

root_conf_dir="/path/on/my/local/system"
hadoop jar /path/to/project.jar com.my.project.RunClass \
    -conf "${root_conf_dir}"/job-1-conf.xml \
    -Droot.conf.dir="${root_conf_dir}"

我希望这会有所帮助。