千家信息网

基于CentOS6.4环境如何编译Spark-2.1.0源码

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,小编给大家分享一下基于CentOS6.4环境如何编译Spark-2.1.0源码,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!1 写在前面的话有些小伙伴可能会问:Spark官网不是已经
千家信息网最后更新 2026年10月31日基于CentOS6.4环境如何编译Spark-2.1.0源码

小编给大家分享一下基于CentOS6.4环境如何编译Spark-2.1.0源码,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

1 写在前面的话

有些小伙伴可能会问:Spark官网不是已经提供了Spark针对不同版本的安装包了吗,我们为什么还需要对Spark源码进行编译呢?针对这个问题我们到Spark官网: spark.apache.org来看下,如下图所示:

Spark官网的确是提供了一些Hadoop版本的Spark安装包,但是提供的这些是否能够满足我们的要求呢?答案肯定是否定的,根据本人近几年做Spark的开发经验,列出如下几点

  • 在生产环境中Hadoop的选型,很大部分都是CDH或者HDP系列的,那么官方提供的这几个Hadoop系列是否能够生产的需求?

  • 在开发过程中,我们经常会遇到需要对Spark的源码进行修改,那么修改后的代码如何集成到Spark安装包中去呢?

针对如上列出的两点的个人觉得比较好的最佳实践:

  • 根据生产上运行的Hadoop版本编译出Spark的安装包

  • 修改Spark源码之后,重新编译Spark

所以:个人觉得如果想更好的学习和使用Spark,那么第一步就是要会根据Spark源码编译出安装包。

2 前置准备

根据Spark官方文档编译模块的介绍(http://spark.apache.org/docs/2.1.0/building-spark.html)的介绍:

The Maven-based build is the build of reference for Apache Spark. Building Spark using Maven requires Maven 3.3.9 or newer and Java 7+. Note that support for Java 7 is deprecated as of Spark 2.0.0 and may be removed in Spark 2.2.0."

我们得知:

  • Java需要7+版本,而且在Spark2.0.0之后Java 7已经被标识成deprecated了,但是不影响使用,但是在Spark2.2.0版本之后Java 7的支持将会被移除;

  • Maven需要3.3.9+版本

2.1 Java7的安装

2.1.1 下载

Java SE安装包下载地址:http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html

本文章我们使用的JDK版本是:jdk1.7.0_51

2.1.2 安装

我们所有的软件都安装在hadoop用户的根目录的app文件夹下

//解压 tar -zxvf jdk-7u51-linux-x64.tar.gz -C ~/app//将JDK目录添加到系统环境变量(~/.bash_profile)中 export JAVA_HOME=/home/hadoop/app/jdk1.7.0_51 export PATH=$JAVA_HOME/bin:$PATH //让配置文件生效 source ~/.bash_profile//执行java,查看java版本 java -version //如果安装成功后,则有如下信息的输出 java version "1.7.0_51" Java(TM) SE Runtime Environment (build 1.7.0_51-b13) Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)

2.2 Maven3.3.9的安装

2.2.1 下载

Maven3.3.9安装包下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache//maven/maven-3/3.3.9/binaries/

2.2.2 安装

// 解压 tar -zxvf apache-maven-3.3.9-bin.tar.gz -C ~/app/ //将JDK目录添加到系统环境变量(~/.bash_profile)中 export MAVEN_HOME=/home/hadoop/app/apache-maven-3.3.9 export PATH=$MAVEN_HOME/bin:$PATH //让配置文件生效 source ~/.bash_profile//执行mvn,查看版本 mvn -v //如果安装成功后,则有如下信息的输出 Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T08:41:47-08:00) Maven home: /home/hadoop/app/apache-maven-3.3.9 Java version: 1.7.0_51, vendor: Oracle Corporation Java home: /home/hadoop/app/jdk1.7.0_51/jre Default locale: zh_CN, platform encoding: UTF-8 OS name: "linux", version: "2.6.32-358.el6.x86_64", arch: "amd64", family: "unix"

2.3 Spark-2.1.0源码下载

下载地址:http://spark.apache.org/downloads.html

下载完成后解压即可,解压后的目录结构如下图所示

3 Spark源码编译

查看官方文档编译源码部分:http://spark.apache.org/docs/2.1.0/building-spark.html#building-a-runnable-distribution

我们可以使用Spark源码目录中的dev下的make-distribution.sh脚本,官方提供的编译命令如下:

./dev/make-distribution.sh --name custom-spark --tgz -Psparkr -Phadoop-2.4 -Phive -Phive-thriftserver -Pmesos -Pyarn

参数说明:

  • --name:指定编译完成后Spark安装包的名字

  • --tgz:以tgz的方式进行压缩

  • -Psparkr:编译出来的Spark支持R语言

  • -Phadoop-2.4:以hadoop-2.4的profile进行编译,具体的profile可以看出源码根目录中的pom.xml中查看

  • -Phive和-Phive-thriftserver:编译出来的Spark支持对Hive的操作

  • -Pmesos:编译出来的Spark支持运行在Mesos上

  • -Pyarn:编译出来的Spark支持运行在YARN上

那么我们可以根据具体的条件来编译Spark,比如我们使用的Hadoop版本是2.6.0-cdh6.7.0,并且我们需要将Spark运行在YARN上、支持对Hive的操作,那么我们的Spark源码编译脚本就是:

./dev/make-distribution.sh --name 2.6.0-cdh6.7.0 --tgz -Pyarn -Phadoop-2.6 -Phive -Phive-thriftserver -Dhadoop.version=2.6.0-cdh6.7.0

编译成功后,在Spark源码的根目录中就spark-2.1.0-bin-2.6.0-cdh6.7.0.tgz包,那么我们就可以使用编译出来的这个安装包来进行Spark的安装了。

有小伙伴可能会问,为什么编译出来的安装包的名称是spark-2.1.0-bin-2.6.0-cdh6.7.0.tgz呢?我们可以带着这个疑惑,查看make-distribution.sh的源码,在该脚本的最后部分,有如下代码:

if [ "$MAKE_TGZ" == "true" ]; then TARDIR_NAME=spark-$VERSION-bin-$NAME  TARDIR="$SPARK_HOME/$TARDIR_NAME" rm -rf "$TARDIR" cp -r "$DISTDIR" "$TARDIR" tar czf "spark-$VERSION-bin-$NAME.tgz" -C "$SPARK_HOME" "$TARDIR_NAME" rm -rf "$TARDIR" fi

该VERSION就是我们Spark的版本即2.1.0,NAME就是我们在编译时指定的2.6.0-cdh6.7.0,所以根据该脚本最终输出的Spark安装包的全称为: spark-2.1.0-bin-2.6.0-cdh6.7.0.tgz。通过该代码的查看希望大家能明白一个问题:源码面前,了无秘密。

注意:在编译过程中会出现下载某个依赖包的时间太久,这是由于网络问题,可以执行ctrl+c停止编译命令,然后重新运行编译命令,在编译过程中多试几次即可。有条件的小伙伴,建议开着VPN然后再进行编译,整个编译过程会顺畅很多。

看完了这篇文章,相信你对"基于CentOS6.4环境如何编译Spark-2.1.0源码"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!

编译 源码 版本 支持 环境 运行 官方 就是 目录 脚本 过程 成功 代码 命令 地址 小伙 小伙伴 文件 根目录 部分 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 博彦科技互联网金融 广州为想互联网科技有限公司 河南云网互联网络科技有限公司 互联网科技行业发展 智能科技公司是互联网公司吗 贷财互联网科技 朗涯互联网科技 科技大学互联网专业好不好 互联网实体化科技化 互联网科技与管理 武汉健翔互联网络科技有限公司 阿大互联网科技有限公司 互联网科技圈年度人物 上海京穆互联网科技有限公司 高科技互联网套路 元气玛特互联网科技公司是外包吗 伍佰万互联网科技怎么赚钱 青岛互联网科技园 网互联网络科技 山东亿川互联网科技有限责任公司 互联网品科技 深圳艾佳互联网科技 甘肃拓世互联网科技有限公司 海南购全球互联网科技 亳州好赞互联网科技有限公司 互联网科技职业技能培训学校 唐山双旺合互联网科技产业园 互联网科技大佬云集 山东亿川互联网科技有限责任公司 广州全民伙伴互联网科技有限公司
0