除了修改hadoop-env.sh之外,如何在hadoop中指定系统属性?

zjf*_*fdu 1 java hadoop system-properties

我想在运行hadoop作业时设置系统属性(而不是hadoop属性).我发现设置系统属性并不容易.甚至我在shell中设置了属性

export HADOOP_OPTS="$HADOOP_OPTS:-Dproperty=value"
Run Code Online (Sandbox Code Playgroud)

它仍然无法正常工作.hadoop命令行的"-D"选项仅适用于Configuration,而不适用于系统属性.所以"-D"选项也不起作用

有人有想法吗?谢谢

Que*_*atl 7

为什么不在-Dfoo.bar=example命令行启动作业时简单地使用内联,如下所示:

hadoop jar example.jar com.example.ExampleTool -Dfoo.bar=example argument

为了在代码中获取属性,请使用 conf.get("foo.bar");


现在,如果你真的需要将它设置为系统属性,你可以使用从Hadoop配置获得的值在代码的开头设置它,如下所示:

String property = conf.get("foo.bar");
System.setProperty("foo.bar", property);
Run Code Online (Sandbox Code Playgroud)

  • 原因是我使用的是需要获取系统属性的库 (2认同)

Jia*_*Liu 5

hadoop脚本调用Java类这样

exec "$JAVA" $JAVA_HEAP_MAX $HADOOP_OPTS $CLASS "$@"
Run Code Online (Sandbox Code Playgroud)

所以,我们可以像这样传递系统范围的属性:

export HADOOP_OPTS="$HADOOP_OPTS -Dfoo=bar"
Run Code Online (Sandbox Code Playgroud)