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

bxpogfeg  于 2021-06-03  发布在  Hadoop
关注(0)|答案(3)|浏览(313)

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

export HADOOP_OPTS="$HADOOP_OPTS:-Dproperty=value"

还是不行。hadoop命令行的“-d”选项仅用于配置,不用于系统属性。所以“-d”选项也不起作用
有人有主意吗?谢谢

pinkon5k

pinkon5k1#

这个 hadoop 像这样脚本调用java类

exec "$JAVA" $JAVA_HEAP_MAX $HADOOP_OPTS $CLASS "$@"

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

export HADOOP_OPTS="$HADOOP_OPTS -Dfoo=bar"
s4n0splo

s4n0splo2#

检查系统属性和环境变量之间的差异以及如何在此处设置它们。

qmelpv7a

qmelpv7a3#

为什么不简单地使用 -Dfoo.bar=example 当通过命令行启动作业时,如: hadoop jar example.jar com.example.ExampleTool -Dfoo.bar=example argument 要获取代码中的属性,请使用 conf.get("foo.bar"); 现在,如果确实需要将其设置为系统属性,可以在代码开始时使用从hadoop config获得的值进行设置,如下所示:

String property = conf.get("foo.bar");
System.setProperty("foo.bar", property);

相关问题