基于CentOS6.4环境编译Spark-2.1.0源码
来源:互联网 发布:淘宝活动广场在哪 编辑:程序博客网 时间:2024/06/05 18:38
有些小伙伴可能会问: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.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_51export 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.9export 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.9Java version: 1.7.0_51, vendor: Oracle CorporationJava home: /home/hadoop/app/jdk1.7.0_51/jreDefault locale: zh_CN, platform encoding: UTF-8OS 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
下载完成后解压即可,解压后的目录结构如下图所示
查看官方文档编译源码部分: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-cdh5.7.0
,并且我们需要将Spark运行在YARN上、支持对Hive的操作,那么我们的Spark源码编译脚本就是:
./dev/make-distribution.sh --name 2.6.0-cdh5.7.0 --tgz -Pyarn -Phadoop-2.6 -Phive -Phive-thriftserver -Dhadoop.version=2.6.0-cdh5.7.0
编译成功后,在Spark源码的根目录中就spark-2.1.0-bin-2.6.0-cdh5.7.0.tgz
包,那么我们就可以使用编译出来的这个安装包来进行Spark的安装了。
有小伙伴可能会问,为什么编译出来的安装包的名称是spark-2.1.0-bin-2.6.0-cdh5.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-cdh5.7.0
,所以根据该脚本最终输出的Spark安装包的全称为: spark-2.1.0-bin-2.6.0-cdh5.7.0.tgz
。通过该代码的查看希望大家能明白一个问题:源码面前,了无秘密。
注意:在编译过程中会出现下载某个依赖包的时间太久,这是由于网络问题,可以执行ctrl+c停止编译命令,然后重新运行编译命令,在编译过程中多试几次即可。有条件的小伙伴,建议开着VPN然后再进行编译,整个编译过程会顺畅很多。
- 基于CentOS6.4环境编译Spark-2.1.0源码
- 基于CentOS6.4环境编译Spark-2.1.0源码
- 基于CentOS6.5编译Spark2.2.0源码
- 基于CentOS6.5编译Spark2.2.0源码
- Spark源码阅读环境配置,以及手动编译Spark源码
- 使用IDEA搭建Spark源码环境及编译Spark源码
- Spark -4:maven编译spark 源码
- maven编译spark源码(spark-2.3.0)
- centos6.5源码编译http2.4.9、虚拟主机、基于用户认证
- mysql5.6 源码编译安装 基于centOS6.8 Basic Server
- Spark2.0源码阅读---spark源码编译与IDEA导入搭建阅读环境
- Centos6.2_64位 服务器环境配置:源码编译Mysql
- apue.3e源码编译、环境配置(centos6.7)
- centos6.5环境源码编译安装mysql5.6.34
- centos6.5下lamp环境的搭建(源码编译安装)
- CentOS6.5环境下编译hadoop2.8.1源码
- CentOS6.4编译源码安装svn
- CentOS6.4 LAMP配置 非源码编译
- 关于Java基类Object
- MC9S12XEP100的ATD模块(ADC12B16CV1)
- 僵死进程
- 负载均衡算法
- .net winfrom 用 MathML 显示数学公式并导出word与pdf
- 基于CentOS6.4环境编译Spark-2.1.0源码
- 二、Calcite官方文档翻译--进阶
- gunicorn常用命令
- 笨方法学习Python-习题12:提示别人
- codis集群部署实战
- 20171019
- Node开发环境在Ubuntu16.04上部署
- android lichee编译脚本解析
- 通知Notification小记