Spark之spark2.4.2源码编译集成hadoop-2.6.0-cdh5.7.0


前言:生产中不管是spark代码改造还是spark集成部署使用都离不开对spark源码的编译,本文详细记载了spark2.4.2版本源码编译的详细步骤,其中编译依赖的hadoop为2.6.0-cdh5.7.0版本

1.环境

1.1硬件环境

1台4G内存2core的CenOs6.x虚拟机

1.2软件环境
组件名称组件版本百度网盘链接
VMvm10链接:https://pan.baidu.com/s/1N5i8p8htXz9H_v__YNV1lA 提取码:yasn
Centoscentos6.7链接:https://pan.baidu.com/s/1Z_6AcQ_WnvKz1ga_VCSI9Q 提取码:a24x
JDKjdk-8u45-linux-x64.gz链接:https://pan.baidu.com/s/1a8enrSl39Zp7tF2SJOcRJg 提取码:am6j
Mavenapache-maven-3.5.4-bin.tar.gz链接:https://pan.baidu.com/s/1klnPGBrSlkbcqapzYbYjEA 提取码:svqo
Scalascala-2.11.12.tgz链接:https://pan.baidu.com/s/1hq1BIAZ9eqyQKYtn2SCplg 提取码:tipo

注意:
1)JDK最低要求是1.8,maven最低要求是3.5.4,scala最低要求是2.11.12
2)官网编译链接

2.编译依赖软件安装

2.1 JDK安装

JDK安装非常的简单,具体安装步骤可参考我之前的博客。
版本验证:

[hadoop@hadoop001 app]$ java -version
java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)
2.2 Maven安装

maven安装非常的简单,具体安装步骤可参考我之前的博客,在这里唯一要注意的是,在环境变量中最好添加如下配置:

export MAVEN_OPTS="-Xmx2g -XX:ReservedCodeCacheSize=512m"

版本验证:

[hadoop@hadoop001 app]$ which mvn
~/app/apache-maven-3.5.4/bin/mvn
2.3 Scala安装

Scala安装非常的简单,具体安装步骤可参考我之前的博客。
版本验证:

[hadoop@hadoop001 app]$ scala
Welcome to Scala 2.11.12 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_45).
Type in expressions for evaluation. Or try :help.

scala> 1+1
res0: Int = 2

scala> :quit

3.编译Spark

本次编译的spark对应的hadoop是hadoop-2.6.0-cdh5.7.0的版本

3.1上传源码包以及解压
[hadoop@hadoop001 ~]$ cd ~/soft/
[hadoop@hadoop001 ~]$ tar -zxvf ~/soft/spark-2.4.2.tar.gz -C ~/source/
3.2配置pom文件

添加cdh仓库地址

[hadoop@hadoop001 ~]$ vim ~/source/spark-2.4.2/pom.xml 

<repository>
	<id>cloudera</id>
	<name>cloudera repository</name>
	<url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
</repository>
3.3(可选)修改ake-distribution.sh文件

为了加编译速度,修改ake-distribution.sh文件

[hadoop@hadoop001 ~]$ vim ~/source/spark-2.4.2/dev/make-distribution.sh 

注销如下配置
#VERSION=$("$MVN" help:evaluate -Dexpression=project.version $@ 2>/dev/null | grep -v "INFO" | tail -n 1)
#SCALA_VERSION=$("$MVN" help:evaluate -Dexpression=scala.binary.version $@ 2>/dev/null\
#	| grep -v "INFO"\
#	| tail -n 1)
#SPARK_HADOOP_VERSION=$("$MVN" help:evaluate -Dexpression=hadoop.version $@ 2>/dev/null\
#	| grep -v "INFO"\
#	| tail -n 1)
#SPARK_HIVE=$("$MVN" help:evaluate -Dexpression=project.activeProfiles -pl sql/hive $@ 2>/dev/null\
#	| grep -v "INFO"\
#	| fgrep --count "<id>hive</id>";\
#	# Reset exit status to 0, otherwise the script stops here if the last grep finds nothing\
#	# because we use "set -o pipefail"
#	echo -n)
注销后面添加如下配置:
VERSION=2.4.2
SCALA_VERSION=2.11
SPARK_HADOOP_VERSION=2.6.0-cdh5.7.0
SPARK_HIVE=1
3.4编译
  • 执行如下命令,第一次编译会耗时很久,建议编译时虚拟机不要运行其它的程序。
[hadoop@hadoop001 ~]$ cd ~/source/spark-2.4.2/
[hadoop@hadoop001 spark-2.4.2]$ ./dev/make-distribution.sh --name 2.6.0-cdh5.7.0 --tgz  -Pyarn -Phive -Phive-thriftserver  -Phadoop-2.6 -Dhadoop.version=2.6.0-cdh5.7.0
  • 命令参数解析:
 1) --name 指定的是编译后”spark-2.4.2-后缀“ 的后缀名,规范写成hadoop的版本
 2) -tgz,表示打成tar.gz包,必须有
 3) -Pyarn,表示打的包支持yarn
 4) -Phive -Phive-thriftserver,表示打的包支持hive的相关服务
 5)  -Phadoop-2.6 -Dhadoop.version=2.6.0-cdh5.7.0,表示打的包支持集成hadoop的相关服务
  • package查看
#make-distribution脚本最终打包的包在sparkhome目录下
#生成的能运行的包:spark-2.2.0-bin-2.6.0-cdh5.7.0.tgz
[hadoop@hadoop001 spark-2.4.2]$ du -sh ~/source/spark-2.4.2/*.tgz
205M	/home/hadoop/source/spark-2.4.2/spark-2.4.2-bin-2.6.0-cdh5.7.0.tgz

注意:并不是说高版本一定会支持低版本,比如spark2.4.2能支持的hadoop版本只能是pom文件中指定的那些。最低是hadoop-2.6

4.部署验证

4.1解压以及添加环境变量
#解压
[hadoop@hadoop001 spark-2.4.2]$ cp spark-2.4.2-bin-2.6.0-cdh5.7.0.tgz ~/soft/
[hadoop@hadoop001 spark-2.4.2]$ cd ~/soft/
[hadoop@hadoop001 soft]$ tar -zxvf spark-2.4.2-bin-2.6.0-cdh5.7.0.tgz -C ~/app/
#添加环境变量
[hadoop@hadoop001 ~]$ vim ~/.bash_profile
export SPARK_HOME=/home/hadoop/app/spark-2.4.2-bin-2.6.0-cdh5.7.0
export PATH=$SPARK_HOME/bin:$SPARK_HOME/sbin:$PATH
[hadoop@hadoop001 ~]$ source ~/.bash_profile
4.2解压后目录详解
bin:客户端相关脚本,如beeline,可以删除cmd的结尾文件
conf:配置文件脚本模板,用时拷贝修改
data:存放的一些测试数据
examples:存放测试用例代码,代码非常好 强烈建议观看学习
jars:一堆jar包,所有jar包放一起,不像1.0那样就几个jar,2.0散开了(最佳实践)
LICENSE、 licenses、 NOTICE、python、README.md、RELEASE等文件夹都可以删除
sbin:服务端的相关脚本,如集群启停命令
yarn:存在yarn相关jar包

4.2运行测试脚本
[hadoop@hadoop001 ~]$ spark-shell local[2]
19/04/28 20:57:03 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
Spark context Web UI available at http://hadoop001:4040
Spark context available as 'sc' (master = local[*], app id = local-1556456234963).
Spark session available as 'spark'.
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 2.4.2
      /_/
         
Using Scala version 2.11.12 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_45)
Type in expressions to have them evaluated.
Type :help for more information.
scala> 

测试脚本运行OK,在scala命令行窗口里我们就可以进行快速的spark的编程以及测试了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值