在银河麒麟系统上安装Spark需先确认架构与JDK版本,推荐手动部署:下载匹配Hadoop版本的二进制包,配置JAVA_HOME和SPARK_HOME,复制Hadoop配置文件,最后用spark-shell --master local[2]验证。

在银河麒麟操作系统上安装和配置Spark大数据环境,需先确认系统架构(x86_64或aarch64)、已有Java版本及Hadoop部署状态,避免因JDK不兼容、Hadoop库缺失或ARM指令集不匹配导致spark-shell启动失败、NoClassDefFoundError报错或Segmentation Fault崩溃。
验证并配置JDK环境(Spark运行前提)
Spark 3.x要求JDK 8u361+ 或 JDK 11.0.20+,银河麒麟V10默认可能预装OpenJDK 11,但路径与JAVA_HOME常未正确设置。
执行java -version,输出必须含“11.0.20”或“1.8.0_361”字样;若显示1.8.0_292或更低版本,说明JDK过旧,【不可跳过】需手动升级。
检查echo $JAVA_HOME,若为空或指向/usr/lib/jvm/java-11-openjdk-amd64(x86)却运行在ARM服务器上,则路径错误——飞腾平台应为/usr/lib/jvm/java-11-openjdk-aarch64。
编辑/etc/profile.d/java.sh,写入:
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-$(uname -m)
export PATH=$JAVA_HOME/bin:$PATH
执行source /etc/profile.d/java.sh,再运行java -version与javac -version双验证。
选择适配方式安装Spark(按场景分四类)
方法一:手动部署(推荐生产隔离环境)
① 下载与Hadoop版本严格匹配的二进制包,例如Hadoop 3.3.6集群 → 选spark-3.5.1-bin-hadoop3.tgz;若用Hadoop 2.7 → 必须选-hadoop2.7后缀包,混用会报ClassNotFoundException: org.apache.hadoop.fs.FileSystem。
② 解压至/opt并建软链:sudo tar -zxvf spark-*.tgz -C /opt/ && sudo ln -sf /opt/spark-*/ /opt/spark。
③ 配置/etc/profile.d/spark.sh:export SPARK_HOME=/opt/spark与export PATH=$SPARK_HOME/bin:$PATH。
④ 复制Hadoop配置文件:sudo cp /etc/hadoop/conf/{core-site.xml,hdfs-site.xml,yarn-site.xml} /opt/spark/conf/——缺yarn-site.xml会导致spark-submit --master yarn直接退出。
方法二:YUM在线安装+离线补Hadoop JAR(适合内网镜像仓库)
先执行sudo rpm -qa | grep -i spark | xargs -r sudo rpm -e --nodeps彻底清理残留;
再启用麒麟SP3更新源:sudo yum-config-manager --enable kylin-server-v10-sp3-updates;
安装:sudo yum install -y spark-core spark-sql;
关键一步:检查/usr/lib/spark/jars/下是否存在hadoop-client-api-3.3.6.jar等核心包,缺失则从Hadoop官网下载对应aarch64/x86_64版hadoop-3.3.6.tar.gz,解压后复制share/hadoop/client/*.jar到该目录。
方法三:Docker容器化快速验证(开发测试首选)
拉取官方镜像:docker pull apache/spark:3.5.1;
运行交互式Shell:docker run -it --rm -v $(pwd):/home/data apache/spark:3.5.1 spark-shell --master local[2]——此方式完全规避系统级依赖冲突,但无法访问宿主机HDFS。
方法四:Ambari纳管集成(企业级统一运维)
需提前在Ambari Server节点部署Kylin V10兼容插件;
Web界面添加服务时,选择“Spark 3.5.1 (Kylin SP3)”而非通用Spark包;
【注意】Ambari 2.7.5+才支持麒麟SP3国密SSL配置,低版本启用Spark会卡在Kerberos认证环节。
配置Spark本地模式验证
执行spark-shell --master local[2],等待Scala提示符scala>出现即成功;若卡在“Starting SparkContext”且日志含Failed to load native library,说明JDK或Spark包架构不匹配(如x86包跑在ARM上)。
测试HDFS读写:sc.textFile("hdfs://localhost:9000/test.txt").count()——前提是Hadoop伪分布式已启,且/opt/spark/conf/core-site.xml中fs.defaultFS值与Hadoop一致。
运行PySpark:pyspark --master local[2] --conf spark.sql.adaptive.enabled=true,输入spark.range(10).count()返回10即通过基础校验。


















