Spark 提交 YARN 模式 HADOOP_CONF_DIR 内容

Spark submit YARN mode HADOOP_CONF_DIR contents

我正在尝试在 YARN 模式下使用 spark submit 在 hadoop 集群上启动 spark 任务。

我正在从我的开发机器上启动 spark-submit。

根据 Running Spark On YARN 文档,我应该在环境变量 HADOOP_CONF_DIRYARN_CONF_DIR 上为 hadoop 集群配置提供路径。这就是它变得棘手的地方:如果我将任务发送到远程 YARN 服务,为什么这些文件夹必须存在于我的本地机器上?这是否意味着 spark-submit 必须位于 inside 集群中,因此我无法远程启动 spark 任务?如果没有,我应该用什么填充这些文件夹?是否应该从任务管理器服务所在的YARN集群节点复制hadoop配置文件夹?

1) 提交作业时,Spark 需要知道它正在连接什么。文件被解析,所需的配置被用于连接到 Hadoop 集群。请注意,在文档中他们说它是 客户端配置 (在第一句中),这意味着您实际上不需要所有配置来连接到文件中的集群(以使用极简配置连接到非安全的 Hadoop 集群)您至少需要以下配置:

  • fs.defaultFS(如果您打算从 HDFS 读取)
  • dfs.nameservices
  • yarn.resourcemanager.hostnameyarn.resourcemanager.address
  • yarn.application.classpath
  • (可能需要其他,具体取决于配置)

您可以通过在您提交的作业代码中设置相同的设置来避免拥有文件:

SparkConf sparkConfiguration = new SparkConf();
sparkConfiguration.set("spark.hadoop.fs.defaultFS", "...");
...

2) Spark 提交可以位于任何机器上,不一定在集群上,只要它知道如何连接到集群即可(您甚至可以 运行 从 Eclipse 提交,无需安装任何东西, 但项目依赖关系, 与 Spark 相关)。

3) 您应该使用以下内容填充配置文件夹:

  • 核心-site.xml
  • 纱-site.xml
  • hdfs-site.xml
  • mapred-site.xml

从服务器复制这些文件是最简单的开始方法。在您可以删除一些 spark-submit 不需要或可能对安全敏感的配置后。