Spark源码编译---Spark学习笔记1

原创 2014年03月28日 01:10:28

要学习一个框架最好的方式就是调试其源代码。

编译Spark 0.81  with hadoop2.2.0

本机环境:

1.eclipse kepler

2.maven3.1

3.scala2.9.3

4.ubuntu12.04

步骤:

1. 先从网上下载spark0.81的源代码.  下载方式:_

2.  upzip v0.8.1-incubating.zip

3.  export MAVEN_OPTS="-Xmx1g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m"  //这里-Xmx自己设置,我设置的是1G,机子比较旧。。。。推荐2G,如果jvm挂了,还是设置为1g把,慢就慢点了。

victor@victor-ubuntu:~/software/incubator-spark-0.8.1-incubating$ export MAVEN_OPTS="-Xmx1g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m"

4.  maven就是好用,mvn -Dyarn.version=2.2.0 -Dhadoop.version=2.2.0  -Pnew-yarn -DskipTests package

victor@victor-ubuntu:~/software/incubator-spark-0.8.1-incubating$ mvn -Dyarn.version=2.2.0 -Dhadoop.version=2.2.0  -Pnew-yarn -DskipTests package

5. ....最终编译成功。

[INFO] Reactor Summary:
[INFO] 
[INFO] Spark Project Parent POM .......................... SUCCESS [5.742s]
[INFO] Spark Project Core ................................ SUCCESS [6:55.638s]
[INFO] Spark Project Bagel ............................... SUCCESS [57.687s]
[INFO] Spark Project Streaming ........................... SUCCESS [1:59.625s]
[INFO] Spark Project ML Library .......................... SUCCESS [1:12.154s]
[INFO] Spark Project Examples ............................ SUCCESS [4:01.735s]
[INFO] Spark Project Tools ............................... SUCCESS [18.163s]
[INFO] Spark Project REPL ................................ SUCCESS [59.977s]
[INFO] Spark Project YARN Support ........................ SUCCESS [1:24.402s]
[INFO] Spark Project Assembly ............................ SUCCESS [47.046s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 18:42.710s
[INFO] Finished at: Fri Mar 28 00:47:06 CST 2014
[INFO] Final Memory: 64M/560M
[INFO] ------------------------------------------------------------------------

然后用sbt(simple build tool)

victor@victor-ubuntu:~/software/incubator-spark-0.8.1-incubating$ SPARK_HADOOP_VERSION=2.2.0 SPARK_YARN=true ./sbt/sbt assembly
Getting org.scala-sbt sbt 0.12.4 ...


[info] Checking every *.class/*.jar file's SHA-1.
[info] SHA-1: 040d65230771f2da5c90328a4e4ea844a489f39e
[info] Packaging /home/victor/software/incubator-spark-0.8.1-incubating/examples/target/scala-2.9.3/spark-examples-assembly-0.8.1-incubating.jar ...
[info] Done packaging.



[info] Done packaging.
[success] Total time: 4488 s, completed Mar 28, 2014 2:18:46 AM

打包完成后,在assembly/target/scala-2.9.3/目录下会生成两个jar包,其中一个是spark-assembly-0.8.1-incubating-hadoop2.2.0.jar,examples/target/scala-2.9.3/下面也有一个jar包:spark-examples-assembly-0.8.1-incubating.jar,接下来将重点使用这两个包。

victor@victor-ubuntu:~/software/incubator-spark-0.8.1-incubating/assembly/target/scala-2.9.3$ ll
total 90504
drwxrwxr-x 3 victor victor     4096  3月 28 21:43 ./
drwxrwxr-x 9 victor victor     4096  3月 28 01:27 ../
drwxrwxr-x 3 victor victor     4096  3月 28 01:27 cache/
-rw-rw-r-- 1 victor victor 92659663  3月 28 02:06 spark-assembly-0.8.1-incubating-hadoop2.2.0.jar



victor@victor-ubuntu:~/software/incubator-spark-0.8.1-incubating/examples/target/scala-2.9.3$ ll
total 179004
drwxrwxr-x 5 victor victor      4096  3月 28 01:59 ./
drwxrwxr-x 8 victor victor      4096  3月 28 01:26 ../
drwxrwxr-x 3 victor victor      4096  3月 28 01:23 cache/
drwxrwxr-x 4 victor victor      4096  3月 28 00:40 classes/
-rw-rw-r-- 1 victor victor  59982904  3月 28 00:43 spark-examples_2.9.3-assembly-0.8.1-incubating.jar
-rw-rw-r-- 1 victor victor 123286056  3月 28 02:18 spark-examples-assembly-0.8.1-incubating.jar
drwxrwxr-x 3 victor victor      4096  3月 28 00:41 test-classes/

将以下文件夹放到一个文件夹spark_client作为客户端。conf/assembly/target/scala-2.9.3/ 只需拷贝jar包examples/target/scala-2.9.3/只需拷贝jar包spark-class文件

保证:conf目录、spark-class文件,assembly目录(内部有target目录)、examples目录(内部有target目录)要写一个脚本来运行spark程序,就用example的例子把。详见我的下一篇,运行篇---->Spark学习笔记2--计算Pi


A Note About Hadoop Versions

Spark uses the Hadoop-client library to talk to HDFS and other Hadoop-supported storage systems. Because the HDFS protocol has changed in different versions of Hadoop, you must build Spark against the same version that your cluster uses. By default, Spark links to Hadoop 1.0.4. You can change this by setting the SPARK_HADOOP_VERSION variable when compiling:

SPARK_HADOOP_VERSION=2.2.0 sbt/sbt assembly

In addition, if you wish to run Spark on YARN, set SPARK_YARN to true:

SPARK_HADOOP_VERSION=2.0.5-alpha SPARK_YARN=true sbt/sbt assembly

Note that on Windows, you need to set the environment variables on separate lines, e.g., set SPARK_HADOOP_VERSION=1.2.1.

For this version of Spark (0.8.1) Hadoop 2.2.x (or newer) users will have to build Spark and publish it locally. See Launching Spark on YARN. This is needed because Hadoop 2.2 has non backwards compatible API changes.


<原创,转载请注明出处http://blog.csdn.net/oopsoom/article/details/22345777>

修改spark源码并编译部署

主要讲如何编译spark源码
  • FishSeeker
  • FishSeeker
  • 2017年04月03日 10:03
  • 1920

Spark学习: Spark-Scala-IntelliJ开发环境搭建和编译Jar包流程

spark-scala使用IntelliJ搭建的开发环境。
  • databatman
  • databatman
  • 2016年08月29日 22:55
  • 5613

Apache Spark MLlib学习笔记(五)MLlib决策树类算法源码解析 1

从这章开始分析spark MLlib的decision tree的源码实现。 首先看下官方给的java使用决策树的例子,路径是/home/yangqiao/codes/spark/examples/...
  • qiao1245
  • qiao1245
  • 2015年04月08日 16:41
  • 1720

Spark源码学习笔记1-SparkContext

SparkContext构造函数做了哪些重要的事情?
  • zhyi0802
  • zhyi0802
  • 2017年04月29日 00:09
  • 370

Spark源码学习笔记6-RpcEnv(Rpc实现层)

继5-RpcEnv(Rpc抽象层) 之后,我们再来了解下Rpc框架下的实现层。
  • zhyi0802
  • zhyi0802
  • 2017年05月07日 23:37
  • 1064

第49讲:Scala中Variance代码实战及其在Spark中的应用源码解析学习笔记

第49讲:Scala中Variance代码实战及其在Spark中的应用源码解析学习笔记 本期内容: 1.scala的variance代码实战 2.spark中对variance的使用   泛...
  • slq1023
  • slq1023
  • 2015年08月26日 20:17
  • 297

Spark源码学习笔记(随笔)-groupByKey()是宽依赖吗

最近从源码角度温习之前学的Spark的基础,在RDD的Dependency这一节中,关于一些Transition操作是Narrow Dependency还是Shuffle Dependency。对于m...
  • zhyi0802
  • zhyi0802
  • 2017年06月07日 13:08
  • 301

Spark源码学习笔记4-SparkEnv

继3-LiveListenerBus之后,我们来看看SparkContext构造函数中初始化的SparkEnv
  • zhyi0802
  • zhyi0802
  • 2017年04月30日 23:58
  • 850

Apache Spark MLlib学习笔记(七)MLlib决策树类算法源码解析 3

上篇已经分析到Spark MLlib库的决策树最终实现使用了random forrest的run方法,这篇将对run方法进行详细的剖析和解释。 上篇提到input先被转换成Metadata处理,因此...
  • qiao1245
  • qiao1245
  • 2015年04月10日 20:57
  • 1387

第43讲:Scala中类型变量Bounds代码实战及其在Spark中的应用源码解析学习笔记

第43讲:Scala中类型变量Bounds代码实战及其在Spark中的应用源码解析学习笔记 scala中的类型变量bounds代码实战及其在spark中的应用 类型变量的上界与下界 在spark...
  • slq1023
  • slq1023
  • 2015年08月14日 23:04
  • 359
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Spark源码编译---Spark学习笔记1
举报原因:
原因补充:

(最多只允许输入30个字)