远程运行不同版本的火花上的火花应用程序

时间:2018-05-08 02:43:11

标签: scala apache-spark cloudera-manager

我有很少的火花测试,我通过火花1.6.0上的maven远程运行正常并使用scala。现在我想在spark2上运行这些测试。问题是cloudera,默认情况下使用spark 1.6。 cloudera从哪里获取此版本以及我需要做些什么来更改spark的默认版本?此外,spark 1.6和spark 2存在于同一个群集中。两种火花版本都存在于纱线上方。 hadoop配置文件存在于我用于在测试环境中运行测试的集群上。这就是我获取spark上下文的方式。

def getSparkContext(hadoopConfiguration: Configuration): SparkContext ={
val conf = new SparkConf().setAppName("SparkTest").setMaster("local")     
hadoopConfiguration.set("hadoop.security.authentication", "Kerberos")
UserGroupInformation.loginUserFromKeytab("alice", "/etc/security/keytab/alice.keytab")
val sc=new SparkContext(conf)
return sc
}

有什么方法可以在conf文件或cloudera本身中指定版本吗?

1 个答案:

答案 0 :(得分:0)

提交新的Spark Job时,有两个地方需要更改Spark-Version:

  1. SPARK_HOME设置为包含正确Spark安装的(本地)路径。 (有时 - 特别是对于次要版本更改 - SPARK_HOME中的版本不必100%正确,但我建议保持清洁。)
  2. 通知您的群集Spark jar所在的位置。默认情况下,spark-submit会将SPARK_HOME中的jar文件上传到您的群集中(这是您不应混合版本的原因之一)。但您可以通过暗示集群管理器使用位于hdfs中的jar来跳过此上载过程。当您使用Cloudera时,我假设您的集群管理器是Yarn。在这种情况下,要么将spark.yarn.jarsspark.yarn.archive设置为正确Spark版本的jar所在的路径。示例:--conf spark.yarn.jar=hdfs://server:port/<path to your jars with the desired Spark version>
  3. 在任何情况下,您都应该确保在运行时使用的Spark版本与编译时相同。您在Maven,Gradle或Sbt配置中指定的版本应始终与SPARK_HOMEspark.yarn.jars引用的版本匹配。