apache-spark - 如何在使用 Spark 2.1 部署的 YARN 集群上使用不同的 Spark 版本(Spark 2.4)?
问题描述
我有一个带有 Spark 2.1 的 Hortonworks 纱线集群。
但是我想用 spark 2.3+ 运行我的应用程序(因为使用中的基本第三方 ML 库需要它)。
我们是否必须使用spark-submit
Spark 2.1 版本,或者我们必须使用 Java 或 Scala 和 FAT jar 将作业提交给纱线?这甚至可能吗?Hadoop 库呢?
解决方案
在 Hortonworks 集群上,在 yarn 客户端/集群模式下运行自定义 spark 版本需要以下步骤:
下载具有适当 hadoop 版本的 Spark 预构建文件
解压并解压到 spark 文件夹中。例如。/home/centos/spark/spark-2.3.1-bin-hadoop2.7/
将 jersey-bundle 1.19.1 jar 复制到 spark jar 文件夹 [从这里下载][1]
创建一个包含 spark jar 文件夹中所有 jar 的 zip 文件。火花罐.zip
将此 spark-jar.zip 文件放在一个世界上可访问的 hdfs 位置,例如 (hdfs dfs -put spark-jars.zip /user/centos/data/spark/)
获取 hdp 版本(hdp-select status hadoop-client):例如输出。hadoop 客户端 - 3.0.1.0-187
在下面的导出命令中使用上面的 hdp 版本
导出 HADOOP_CONF_DIR=${HADOOP_CONF_DIR:-/usr/hdp/ 3.0.1.0-187 /hadoop/conf}
导出 HADOOP_HOME=${HADOOP_HOME:-/usr/hdp/ 3.0.1.0-187 /hadoop}
导出 SPARK_HOME=/home/centos/spark/spark-2.3.1-bin-hadoop2.7/
编辑 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
- 在 spark_home/conf 目录中创建 java-opts 文件,添加以下条目并使用上述 hdp 版本
-dhdp.version=3.0.1.0-187
- 导出 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
- spark-shell --master yarn --deploy-mode client --conf spark.yarn.archive=hdfs:///user/centos/data/spark/spark-jars.zip
推荐阅读
- android - 每小时在 SQLite db 中插入一行以获取特定 ID(不是唯一的)
- c++ - OpenFileMapping 有多贵?(内存映射文件)
- javascript - Redux Reducer 或组件的 ShouldComponentUpdate 中的深度比较?
- mysql - DBContext Hell,使用 LINQ 调用 mySQL 数据库的正确方法
- arrays - Swift:我的哈希表适用于幻数,但不适用于动态数字
- javascript - 我知道如何将 if 语句写成公式,但不是在脚本中
- django - Django电子商务项目作为初学者rabbitmq在windows 10上安装问题
- python - findall 函数的 Python 正则表达式问题
- python - 使用来自 Rekognition AI 服务的标签标记 S3 存储桶中的图像 - boto3
- python - 平滑要在 ARIMA 中使用的时间序列数据