2016-07-20 39 views
2

我想在HART模式下使用spark提交在hadoop集群上启动一个spark任务。Spark提交YARN模式HADOOP_CONF_DIR内容

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

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

回答

7

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

  • 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不需要的配置,或者可能是安全敏感的。

+0

非常感谢。我一直试图围绕这个问题一段时间,文档已经足够清晰,但有一些用例,我正在混合一些东西。我真的需要一个好的摘要:-) – NotGaeL

+0

Sparkred需要'mapred-site'吗? –

+0

@ cricket_007原则上不是。我会尽快测试并报告。 – Serhiy

相关问题