如何将HADOOP_CONF_DIR文件(yarn-site.xml,…)从客户端定位到远程hdfs目录



我有一个唯一的Yarn集群,它被许多向它提交spark应用程序的远程客户端使用。我需要在每个客户端设置HADOOP_CONF_DIR环境变量,因为我的主是yarn(--master yarn),但我不想将其从yarn集群分别复制到每个客户端。我想把HADOOP_CONF_DIR在hdfs是可访问的所有客户端。现在,我如何在每个客户端中处理这个环境变量(HADOOP_CONF_DIR)以访问和读取hdfs URL。

例如,当我这样使用时:

export HADOOP_CONF_DIR=hdfs://namenodeIP:9000/path/to/conf_dir

或者在python代码中我使用:

os.environ['HADOOP_CONF_DIR']=hdfs://namenodeIP:9000/path/to/conf_dir

他们两个都不适合我。

正确的形式是什么?我应该把它放在哪里呢?在代码中,在spark-env.sh中,在终端中,…

我认为这是不可能的。您需要这个变量也知道HDFS的namenode位置,而不仅仅是YARN。

如果你对客户端机器有控制权,你可以使用像Syncthing这样的工具来自动分发文件,但这假设你的集群内连接值与外部访问相同(即在所有服务器地址中使用FQDN值)。