Spark源码的编译过程详细解读(各版本)(博主推荐)
本文转自大数据躺过的坑博客园博客,原文链接:xxxxx,如需转载请自行联系原作者说在前面的话
如果出现缺少了某个文件的情况,则要先清理maven(使用命令 mvn clean) 再重新编译。
Spark源码编译的3大方式
1、Maven编译
2、SBT编译 (暂时没)
3、打包编译make-distribution.sh
前言
Spark可以通过SBT和Maven两种方式进行编译,再通过make-distribution.sh脚本生成部署包。
SBT编译需要安装git工具,而Maven安装则需要maven工具,两种方式均需要在联网 下进行。
尽管maven是Spark官网推荐的编译方式,但是sbt的编译速度更胜一筹。因此,对于spark的开发者来说,sbt编译可能是更好的选择。由于sbt编译也是基于maven的POM文件,因此sbt的编译参数与maven的编译参数是一致的。
心得
有时间,自己一定要动手编译源码,想要成为高手和大数据领域大牛,前面的苦,是必定要吃的。
无论是编译spark源码,还是hadoop源码。新手初次编译,一路会碰到很多问题,也许会花上个一天甚至几天,这个是正常。把心态端正就是!有错误,更好,解决错误,是最好锻炼和提升能力的。
更不要小看它们,能碰到是幸运,能弄懂和深入研究,之所以然,是福气。
各大版本简介
1、Apache版------可自己编译,也可采用预编译的版本
2、CDH版---------无需自己编译
Cloudera Manager安装之利用parcels方式安装3节点集群(包含最新稳定版本或指定版本的安装)(添加服务)
3、HDP版----------无需自己编译
Ambari安装部署搭建hdp集群(图文分五大步详解)(博主强烈推荐)
主流是这3大版本,其实,是有9大版本。CDH的CM是要花钱的,当然它的预编译包,是免费的。
hadoop/spark源码的下载方式:
1、官网下载
2、Github下载(仅source code)
以下是从官网下载:
以下是Github下载(仅source code)
CDH的下载
http://archive-primary.cloudera.com/cdh5/cdh/5/
HDP的下载
http://zh.hortonworks.com/products/
好的,那我这里就以,Githud为例。
准备Linux系统环境(如CentOS6.5)
********************************************************************************
* 思路流程:
* 第一大步:在线安装git
* 第二大步:创建一个目录来克隆spark源代码(mkdir -p /root/projects/opensource)
* 第三大步:切换分支
* 第四大步:安装jdk1.7+
* 第五大步:安装maven
* 第六大步:看官网,跟着走
* 第七大步:通过MVN下载对应的包
********************************************************************************
当然,可以参考官网给出的文档,
http://spark.apache.org/docs/1.6.1/building-spark.html
第一大步:在线安装git(root 用户下)
yum install git (root用户)
或者
Sudo yum install git (普通用户)
[[email protected] ~]# yum install git
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
* base: mirrors.cug.edu.cn
* extras: mirrors.cug.edu.cn
* updates: mirrors.cug.edu.cn
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package git.x86_64 0:1.7.1-4.el6_7.1 will be installed
--> Processing Dependency: perl-Git = 1.7.1-4.el6_7.1 for package: git-1.7.1-4.el6_7.1.x86_64
--> Processing Dependency: perl(Git) for package: git-1.7.1-4.el6_7.1.x86_64
--> Processing Dependency: perl(Error) for package: git-1.7.1-4.el6_7.1.x86_64
--> Running transaction check
---> Package perl-Error.noarch 1:0.17015-4.el6 will be installed
---> Package perl-Git.noarch 0:1.7.1-4.el6_7.1 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
===============================================================================================================================================================================================
Package Arch Version Repository Size
===============================================================================================================================================================================================
Installing:
git x86_64 1.7.1-4.el6_7.1 base 4.6 M
Installing for dependencies:
perl-Error noarch 1:0.17015-4.el6 base 29 k
perl-Git noarch 1.7.1-4.el6_7.1 base 28 k
Transaction Summary
===============================================================================================================================================================================================
Install 3 Package(s)
Total download size: 4.7 M
Installed size: 15 M
Is this ok [y/N]: y
Downloading Packages:
(1/3): git-1.7.1-4.el6_7.1.x86_64.rpm | 4.6 MB 00:01
(2/3): perl-Error-0.17015-4.el6.noarch.rpm | 29 kB 00:00
(3/3): perl-Git-1.7.1-4.el6_7.1.noarch.rpm | 28 kB 00:00
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total 683 kB/s | 4.7 MB 00:06
warning: rpmts_HdrFromFdno: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
Importing GPG key 0xC105B9DE:
Userid : CentOS-6 Key (CentOS 6 Official Signing Key) <[email protected]>
Package: centos-release-6-5.el6.centos.11.1.x86_64 (@anaconda-CentOS-201311272149.x86_64/6.5)
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
Is this ok [y/N]: y
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : 1:perl-Error-0.17015-4.el6.noarch 1/3
Installing : git-1.7.1-4.el6_7.1.x86_64 2/3
Installing : perl-Git-1.7.1-4.el6_7.1.noarch 3/3
Verifying : perl-Git-1.7.1-4.el6_7.1.noarch 1/3
Verifying : 1:perl-Error-0.17015-4.el6.noarch 2/3
Verifying : git-1.7.1-4.el6_7.1.x86_64 3/3
Installed:
git.x86_64 0:1.7.1-4.el6_7.1
Dependency Installed:
perl-Error.noarch 1:0.17015-4.el6 perl-Git.noarch 0:1.7.1-4.el6_7.1
Complete!
[[email protected] ~]#
第二大步:创建一个目录克隆spark源代码
mkdir -p /root/projects/opensource
cd /root/projects/opensource
git clone https://github.com/apache/spark.git
[[email protected] ~]# pwd
/root
[[email protected] ~]# mkdir -p /root/projects/opensource
[[email protected] ~]# cd projects/opensource/
[[email protected] opensource]# pwd
/root/projects/opensource
[[email protected] opensource]# ls
[[email protected] opensource]#
[[email protected] opensource]# pwd
/root/projects/opensource
[[email protected] opensource]# git clone https://github.com/apache/spark.git
Initialized empty Git repository in /root/projects/opensource/spark/.git/
remote: Counting objects: 403059, done.
remote: Compressing objects: 100% (13/13), done.
remote: Total 403059 (delta 4), reused 1 (delta 1), pack-reused 403045
Receiving objects: 100% (403059/403059), 182.79 MiB | 896 KiB/s, done.
Resolving deltas: 100% (157557/157557), done.
[[email protected] opensource]# ls
spark
[[email protected] opensource]# cd spark/
[[email protected] spark]#
其实就是,对应着,如下网页界面。
[[email protected] spark]# pwd
/root/projects/opensource/spark
[[email protected] spark]# ll
total 280
-rw-r--r--. 1 root root 1804 Sep 2 03:53 appveyor.yml
drwxr-xr-x. 3 root root 4096 Sep 2 03:53 assembly
drwxr-xr-x. 2 root root 4096 Sep 2 03:53 bin
drwxr-xr-x. 2 root root 4096 Sep 2 03:53 build
drwxr-xr-x. 8 root root 4096 Sep 2 03:53 common
drwxr-xr-x. 2 root root 4096 Sep 2 03:53 conf
-rw-r--r--. 1 root root 988 Sep 2 03:53 CONTRIBUTING.md
drwxr-xr-x. 3 root root 4096 Sep 2 03:53 core
drwxr-xr-x. 5 root root 4096 Sep 2 03:53 data
drwxr-xr-x. 6 root root 4096 Sep 2 03:53 dev
drwxr-xr-x. 9 root root 4096 Sep 2 03:53 docs
drwxr-xr-x. 3 root root 4096 Sep 2 03:53 examples
drwxr-xr-x. 15 root root 4096 Sep 2 03:53 external
drwxr-xr-x. 3 root root 4096 Sep 2 03:53 graphx
drwxr-xr-x. 3 root root 4096 Sep 2 03:53 launcher
-rw-r--r--. 1 root root 17811 Sep 2