求助:通过Ambari在HDP 3.1.5上安装Spark 3.*的方法
关于HDP 3.1.5集群安装Spark 3及集成Ambari的问题解答
一、现有指南是否适用于Spark 3?
你找到的那篇指南是针对Spark 2.x版本的,完全不适用于Spark 3.x。核心原因包括:
- Spark 3.x默认使用Scala 2.12,而Spark 2.x依赖Scala 2.11,HDP 3.1.5自带的组件(如Hive 3.1.0)对Scala版本的适配逻辑不同;
- Spark 3.x的配置结构、核心组件(如SQL引擎、Shuffle机制)有大幅改动,和Spark 2.x的部署步骤、参数配置差异极大;
- Spark 3.x对Hadoop 3.x的适配细节(如HDFS API、YARN资源管理)和Spark 2.x不一致,直接套用旧指南会出现启动失败、任务报错等问题。
二、如何将Spark 3添加到Ambari?
由于HDP 3.1.5官方未提供Spark 3的Ambari集成支持,需要通过自定义Ambari服务包的方式实现,具体步骤如下:
1. 准备适配的Spark 3安装包
- 选择兼容HDP 3.1.5的Spark版本:优先选Spark 3.2.x系列(该版本对Hadoop 3.1.x适配最完善,HDP 3.1.5对应Hadoop 3.1.1);
- 下载预编译包时,选择
hadoop-3.1且scala-2.12的版本,避免自行编译带来的依赖问题。
2. 构建/导入Spark 3的Ambari服务包
Ambari通过服务定义文件识别组件,你需要:
- 若自行构建:参考Ambari官方的服务开发规范,编写
metainfo.xml(定义服务结构)、service.xml(配置项)、启动/停止脚本(如start_spark_master.sh),将这些文件打包放到Ambari Server的服务目录:/var/lib/ambari-server/resources/stacks/HDP/3.1/services/SPARK3; - 若用社区现成包:找适配HDP 3.1.5的Spark3 Ambari服务包(注意验证版本兼容性),解压到上述目录即可。
3. 在Ambari中安装Spark 3服务
- 重启Ambari Server:执行
ambari-server restart,让Ambari加载新的服务定义; - 登录Ambari UI,进入「Add Service」向导,找到「Spark3」服务,按照向导分配组件(Master、Worker、History Server到对应节点);
- 配置关键参数:指定Spark安装目录、HDFS上的Spark历史日志路径、YARN队列、Hive配置文件路径(需集成Hive时)等。
4. 兼容性配置与验证
- 配置Spark与HDP组件的集成:在
spark-defaults.conf中添加spark.hadoop.conf.dir=/etc/hadoop/conf、spark.sql.warehouse.dir=/apps/hive/warehouse等参数,确保能访问HDFS、Hive元数据; - 验证服务可用性:启动Spark3服务后,在节点上执行
spark-shell,测试读取HDFS文件、运行SQL查询,提交YARN任务验证资源调度是否正常。
注意事项
HDP 3.1.5官方不支持Spark3,自定义安装后可能存在兼容性风险,比如和HBase、Kafka等组件的集成需要额外测试,集群升级或维护时需注意避免组件冲突。
内容的提问来源于stack exchange,提问作者Дмитрий Балак
相关产品推荐
相关产品推荐

