如何通过hadoopshell脚本指定hadoopxml配置变量?

xoshrz7s  于 2021-06-04  发布在  Hadoop
关注(0)|答案(1)|浏览(332)

我正在编写代码来创建一个临时hadoop集群。与大多数hadoop集群不同,我需要日志、hdfs文件等的位置位于特定的临时网络位置,每次集群启动时,这个位置都是不同的。该网络目录将在运行时生成;我在签入shell脚本时不知道目录名,比如 hadoop-env.sh xml文件 core-default.xml .
在签入时:我可以修改shell脚本 hadoop-env.sh xml文件 core-default.xml .
在运行时:生成要用于数据存储的临时目录。
我可以通过指定如下环境变量来指示大多数hadoop使用这个临时目录 HADOOP_LOG_DIR 以及 HADOOP_PID_DIR ,如果需要,我可以修改shell脚本来读取这些环境变量。
但是,hdfs通过xml文件(而不是环境变量或shell脚本)中定义的两个属性来确定存储文件系统的本地目录: hadoop.tmp.dir 在core-default.xml和 dfs.datanode.data.dir 在hdfs-default.xml中。
有没有办法编辑这些xml文件来确定 hadoop.tmp.dir 在运行时?或者,是否有任何方法可以使用环境变量重写xml配置的值 hadoop.tmp.dir ?

lymnna71

lymnna711#

我们之前也有类似的要求。将dfs.data.dir和dfs.name.dir配置为hadoop选项的一部分对我们来说效果很好。例如。

export HADOOP_OPTS="-Ddfs.name.dir=$NAMENODE_DATA -Ddfs.data.dir=$DFS_DATA"

此方法还可以用于配置其他配置,如namenode url。

相关问题