首页 > 解决方案 > 如何在使用 Spark 2.1 部署的 YARN 集群上使用不同的 Spark 版本(Spark 2.4)?

问题描述

我有一个带有 Spark 2.1 的 Hortonworks 纱线集群。

但是我想用 spark 2.3+ 运行我的应用程序(因为使用中的基本第三方 ML 库需要它)。

我们是否必须使用spark-submitSpark 2.1 版本,或者我们必须使用 Java 或 Scala 和 FAT jar 将作业提交给纱线?这甚至可能吗?Hadoop 库呢?

标签: apache-spark

解决方案


在 Hortonworks 集群上,在 yarn 客户端/集群模式下运行自定义 spark 版本需要以下步骤:

  1. 下载具有适当 hadoop 版本的 Spark 预构建文件

  2. 解压并解压到 spark 文件夹中。例如。/home/centos/spark/spark-2.3.1-bin-hadoop2.7/

  3. 将 jersey-bundle 1.19.1 jar 复制到 spark jar 文件夹 [从这里下载][1]

  4. 创建一个包含 spark jar 文件夹中所有 jar 的 zip 文件。火花罐.zip

  5. 将此 spark-jar.zip 文件放在一个世界上可访问的 hdfs 位置,例如 (hdfs dfs -put spark-jars.zip /user/centos/data/spark/)

  6. 获取 hdp 版本(hdp-select status hadoop-client):例如输出。hadoop 客户端 - 3.0.1.0-187

  7. 在下面的导出命令中使用上面的 hdp 版本

  8. 导出 HADOOP_CONF_DIR=${HADOOP_CONF_DIR:-/usr/hdp/ 3.0.1.0-187 /hadoop/conf}

  9. 导出 HADOOP_HOME=${HADOOP_HOME:-/usr/hdp/ 3.0.1.0-187 /hadoop}

  10. 导出 SPARK_HOME=/home/centos/spark/spark-2.3.1-bin-hadoop2.7/

  11. 编辑 spark_home/conf 目录下的 spark-defaults.conf 文件,添加以下条目

spark.driver.extraJavaOptions -Dhdp.version=3.0.1.0-187

spark.yarn.am.extraJavaOptions -Dhdp.version=3.0.1.0-187

  1. 在 spark_home/conf 目录中创建 java-opts 文件,添加以下条目并使用上述 hdp 版本

-dhdp.version=3.0.1.0-187

  1. 导出 LD_LIBRARY_PATH=/usr/hdp/3.0.1.0-187/hadoop/lib/native:/usr/hdp/3.0.1.0-187/hadoop/lib/native/Linux-amd64-64
  2. spark-shell --master yarn --deploy-mode client --conf spark.yarn.archive=hdfs:///user/centos/data/spark/spark-jars.zip

推荐阅读