Spark源码编译

 

前言

   Spark可以通过SBT和Maven两种方式进行编译,再通过make-distribution.sh脚本生成部署包。  

   SBT编译需要安装git工具,而Maven安装则需要maven工具,两种方式均需要在联网 下进行。

    尽管maven是Spark官网推荐的编译方式,但是sbt的编译速度更胜一筹。因此,对于spark的开发者来说,sbt编译可能是更好的选择。由于sbt编译也是基于maven的POM文件,因此sbt的编译参数与maven的编译参数是一致的。

心得

   有时间,自己一定要动手编译源码,想要成为高手和大数据领域大牛,前面的苦,是必定要吃的。

   无论是编译spark源码,还是hadoop源码。新手初次编译,一路会碰到很多问题,也许会花上个一天甚至几天,这个是正常。把心态端正就是!有错误,更好,解决错误,是最好锻炼和提升能力的。

更不要小看它们,能碰到是幸运,能弄懂和深入研究,之所以然,是福气。

主流是这3大版本,其实,是有9大版本。

CDH的CM是要花钱的,当然它的预编译包,是免费的。

以下是从官网下载:

以下是Github下载(仅source code)

http://archive-primary.cloudera.com/cdh5/cdh/5/

http://zh.hortonworks.com/products/

********************************************************************************

好的,那我这里就以,Githud为例。

准备Linux系统环境(如CentOS6.5)

思路流程:

  第一大步:在线安装git

  第二大步:创建一个目录来克隆spark源代码(mkdir -p /root/projects/opensource)

  第三大步:切换分支

  第四大步:安装jdk1.7+

  第三大步:

  第四大步:

当然,可以参考官网给出的文档,

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 03:53 LICENSE

drwxr-xr-x.  2 root root  4096 Sep  2 03:53 licenses

drwxr-xr-x.  3 root root  4096 Sep  2 03:53 mesos

drwxr-xr-x.  3 root root  4096 Sep  2 03:53 mllib

drwxr-xr-x.  3 root root  4096 Sep  2 03:53 mllib-local

-rw-r--r--.  1 root root 24749 Sep  2 03:53 NOTICE

-rw-r--r--.  1 root root 97324 Sep  2 03:53 pom.xml

drwxr-xr-x.  2 root root  4096 Sep  2 03:53 project

drwxr-xr-x.  6 root root  4096 Sep  2 03:53 python

drwxr-xr-x.  3 root root  4096 Sep  2 03:53 R

-rw-r--r--.  1 root root  3828 Sep  2 03:53 README.md

drwxr-xr-x.  5 root root  4096 Sep  2 03:53 repl

drwxr-xr-x.  2 root root  4096 Sep  2 03:53 sbin

-rw-r--r--.  1 root root 16952 Sep  2 03:53 scalastyle-config.xml

drwxr-xr-x.  6 root root  4096 Sep  2 03:53 sql

drwxr-xr-x.  3 root root  4096 Sep  2 03:53 streaming

drwxr-xr-x.  3 root root  4096 Sep  2 03:53 tools

drwxr-xr-x.  3 root root  4096 Sep  2 03:53 yarn

[[email protected] spark]#

第三大步:切换分支

  git checkout v1.6.1 //在spark目录下执行

[[email protected] spark]# pwd

/root/projects/opensource/spark

[[email protected] spark]# git branch -a

* master

remotes/origin/HEAD -> origin/master

remotes/origin/branch-0.5

remotes/origin/branch-0.6

remotes/origin/branch-0.7

remotes/origin/branch-0.8

remotes/origin/branch-0.9

remotes/origin/branch-1.0

remotes/origin/branch-1.0-jdbc

remotes/origin/branch-1.1

remotes/origin/branch-1.2

remotes/origin/branch-1.3

remotes/origin/branch-1.4

remotes/origin/branch-1.5

remotes/origin/branch-1.6

remotes/origin/branch-2.0

remotes/origin/master

[[email protected] spark]# git checkout v1.6.1

Note: checking out ‘v1.6.1‘.

You are in ‘detached HEAD‘ state. You can look around, make experimental

changes and commit them, and you can discard any commits you make in this

state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may

do so (now or later) by using -b with the checkout command again. Example:

git checkout -b new_branch_name

HEAD is now at 15de51c... Preparing Spark release v1.6.1-rc1

[[email protected] spark]#

那么,就有了。make-distribution.sh

[[email protected] spark]# pwd

/root/projects/opensource/spark

[[email protected] spark]# ll

total 1636

drwxr-xr-x.  3 root root    4096 Sep  2 03:57 assembly

drwxr-xr-x.  3 root root    4096 Sep  2 03:57 bagel

drwxr-xr-x.  2 root root    4096 Sep  2 03:57 bin

drwxr-xr-x.  2 root root    4096 Sep  2 03:57 build

-rw-r--r--.  1 root root 1343562 Sep  2 03:57 CHANGES.txt

drwxr-xr-x.  2 root root    4096 Sep  2 03:57 conf

-rw-r--r--.  1 root root     988 Sep  2 03:53 CONTRIBUTING.md

drwxr-xr-x.  3 root root    4096 Sep  2 03:57 core

drwxr-xr-x.  3 root root    4096 Sep  2 03:57 data

drwxr-xr-x.  7 root root    4096 Sep  2 03:57 dev

drwxr-xr-x.  4 root root    4096 Sep  2 03:57 docker

drwxr-xr-x.  3 root root    4096 Sep  2 03:57 docker-integration-tests

drwxr-xr-x.  9 root root    4096 Sep  2 03:57 docs

drwxr-xr-x.  3 root root    4096 Sep  2 03:57 ec2

drwxr-xr-x.  3 root root    4096 Sep  2 03:57 examples

drwxr-xr-x. 11 root root    4096 Sep  2 03:57 external

drwxr-xr-x.  6 root root    4096 Sep  2 03:57 extras

drwxr-xr-x.  4 root root    4096 Sep  2 03:57 graphx

drwxr-xr-x.  3 root root    4096 Sep  2 03:57 launcher

-rw-r--r--.  1 root root   17352 Sep  2 03:57 LICENSE

drwxr-xr-x.  2 root root    4096 Sep  2 03:57 licenses

-rwxr-xr-x.  1 root root    8557 Sep  2 03:57 make-distribution.sh

drwxr-xr-x.  3 root root    4096 Sep  2 03:57 mllib

drwxr-xr-x.  5 root root    4096 Sep  2 03:57 network

-rw-r--r--.  1 root root   23529 Sep  2 03:57 NOTICE

-rw-r--r--.  1 root root   91106 Sep  2 03:57 pom.xml

drwxr-xr-x.  3 root root    4096 Sep  2 03:57 project

-rw-r--r--.  1 root root   13991 Sep  2 03:57 pylintrc

drwxr-xr-x.  6 root root    4096 Sep  2 03:57 python

drwxr-xr-x.  3 root root    4096 Sep  2 03:57 R

-rw-r--r--.  1 root root    3359 Sep  2 03:57 README.md

drwxr-xr-x.  5 root root    4096 Sep  2 03:57 repl

drwxr-xr-x.  2 root root    4096 Sep  2 03:57 sbin

drwxr-xr-x.  2 root root    4096 Sep  2 03:57 sbt

-rw-r--r--.  1 root root   13191 Sep  2 03:57 scalastyle-config.xml

drwxr-xr-x.  6 root root    4096 Sep  2 03:57 sql

drwxr-xr-x.  3 root root    4096 Sep  2 03:57 streaming

drwxr-xr-x.  3 root root    4096 Sep  2 03:57 tags

drwxr-xr-x.  3 root root    4096 Sep  2 03:57 tools

-rw-r--r--.  1 root root     848 Sep  2 03:57 tox.ini

drwxr-xr-x.  3 root root    4096 Sep  2 03:57 unsafe

drwxr-xr-x.  3 root root    4096 Sep  2 03:57 yarn

[[email protected] spark]#

其实啊,对应下面的这个界面

按照http://spark.apache.org/docs/1.6.1/building-spark.html 这个步骤来。

● 安装jdk7+

  

时间: 2024-10-13 00:19:21

Spark源码编译的相关文章

Apache Spark源码走读之9 -- Spark源码编译

欢迎转载,转载请注明出处,徽沪一郎. 概要 本来源码编译没有什么可说的,对于java项目来说,只要会点maven或ant的简单命令,依葫芦画瓢,一下子就ok了.但到了Spark上面,事情似乎不这么简单,按照spark officical document上的来做,总会出现这样或那样的编译错误,让人懊恼不已. 今天闲来无事,又重试了一把,居然o了,做个记录,以备后用. 准备 我的编译机器上安装的Linux是archlinux,并安装后如下软件 scala 2.11 maven git 下载源码 第

01 Spark源码编译

1.1设置机器名:hostname gedit /etc/sysconfig/network Scala http://www.scala-lang.org/ cd /opt mkdir scala cp /home/hserver1/desktop/scala-2.12.2.tgz /opt/scala cd /opt/scala tar -xvf scala-2.12.2.tgz 配置环境变量 gedit /etc/profile export SCALA_HOME=/opt/scala/s

编译spark源码

本例记录spark源码编译的过程及问题 因为编译会有很多很多莫名其妙的错误,为了方便,使用hadoop的cdh版本,注意版本要和我的一致, 环境: maven3.0.5 scala2.10.4                                下载地址:http://www.scala-lang.org/download/all.html spark-1.3.0-src                        下载地址:http://spark.apache.org/downl

1、Spark 2.1 源码编译支持CDH

目前CDH支持的spark版本都是1.x, 如果想要使用spark 2x的版本, 只能编译spark源码生成支持CDH的版本. 一.准备工作 找一台Linux主机, 由于spark源码编译会下载很多的第三方类库包, 因此需要主机能够联网. 1.安装Java, 配置环境变量, 版本为JDK1.7或者以上 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261

Spark 2.1.1 源码编译

Spark 2.1.1 源码编译 标签(空格分隔): Spark Spark 源码编译 环境准备与起因 由于线上Spark On Yarn Spark Streaming程序在消费kafka 写入HDFS table 使用Partition by 和 Savemode.append,在一定条件下导致写入HDFS 超过了处理批次.经过排查应该与 Spark 写入parquet 文件追加时候元数据检查所导致,修改源码后需要对其进行编译. 参考Spark的官方文档 根据Spark官方文档编译模块的介绍

Spark源码学习和总结1

一. Spark源码编译 解析: wget http://archive.apache.org/dist/spark/spark-1.6.0/spark-1.6.0-bin-hadoop2.6.tgz gtar -zxvf spark-1.6.0-bin-hadoop2.6.tgz cd spark-1.6.0-bin-hadoop2.6 ./sbt/sbt gen-idea 说明:漫长的等待后,上述命令生成SBT工程,我们就可以使用IDEA以SBT Project的方式打开. 二. RDD实现

搭建Spark源码研读和代码调试的开发环境

转载自https://github.com/linbojin/spark-notes/blob/master/ide-setup.md Table of Contents 源码获取与编译 从Github上获取Spark源码 编译Spark项目 源码导入与代码运行 导入源码到Intellij IDEA 16 运行实例代码 1. 配置运行参数 2. 添加缺失的flume sink源代码 3. 添加运行依赖的jars 4. 成功运行实例代码 单步调试源代码 工欲善其事,必先利其器,第一篇笔记介绍如何搭

了解Spark源码的概况

本文旨在帮助那些想要对Spark有更深入了解的工程师们,了解Spark源码的概况,搭建Spark源码阅读环境,编译.调试Spark源码,为将来更深入地学习打下基础. 一.项目结构 在大型项目中,往往涉及非常多的功能模块,此时借助于Maven进行项目.子项目(模块)的管理,能够节省很多开发和沟通成本.整个Spark项目就是一个大的Maven项目,包含着多个子项目.无论是Spark父项目还是子项目,本身都可以作为独立的Maven项目来管理.core是Spark最为核心的功能模块,提供了RPC框架.度

window环境下使用sbt编译spark源码

前些天用maven编译打包spark,搞得焦头烂额的,各种错误,层出不穷,想想也是醉了,于是乎,换种方式,使用sbt编译,看看人品如何! 首先,从官网spark官网下载spark源码包,解压出来.我这边使用的是1.4.0版本. 然后,我们需要把sbt配置好,配置很简单,无非就是SBT_HOME什么的,大家可以参考官网给出的安装配置手册. 在window的命令行模式下进入刚刚解压的spark源码目录下,我们根据官网提示的命令输入: sbt -Pyarn -Phadoop-2.3 assembly