Spark提交YARN模式HADOOP_CONF_DIR内容

时间:2016-07-20 13:32:21

标签: hadoop apache-spark yarn

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

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

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

1 个答案:

答案 0 :(得分:8)

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运行提交,无需安装任何东西,但项目依赖关系,相关火花)。

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

  • 芯-site.xml中
  • 纱-site.xml中
  • HDFS-site.xml中
  • mapred-site.xml中

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