本帖最后由 pig2 于 2015-1-6 14:12 编辑
问题导读
1.Spark编译需要哪些软件?
2.Spark编译命令是什么?
3.修改代码后,如何运行测试用例?
概要
本来源码编译没有什么可说的,对于java项目来说,只要会点maven或ant的简单命令,依葫芦画瓢,一下子就ok了。但到了Spark上面,事情似乎不这么简单,按照spark officical document上的来做,总会出现这样或那样的编译错误,让人懊恼不已。
今天闲来无事,又重试了一把,居然o了,做个记录,以备后用。
准备
我的编译机器上安装的Linux是archlinux,并安装后如下软件
下载源码
第一步当然是将github上的源码下载下来
- git clone https://github.com/apache/spark.git
复制代码
源码编译
不是直接用maven也不是直接用sbt,而是使用spark中自带的编译脚本make-distribution.sh
- export SCALA_HOME=/usr/share/scala
- cd $SPARK_HOME
- ./make-distribution.sh
复制代码
如果一切顺利,会在$SPARK_HOME/assembly/target/scala-2.10目录下生成目标文件,比如
- assembly/target/scala-2.10/spark-assembly-1.0.0-SNAPSHOT-hadoop1.0.4.jar
复制代码
使用sbt编译
之前使用sbt编译一直会失败的主要原因就在于有些jar文件因为GFW的原因而访问不了。解决之道当然是添加代理才行。
代理的添加有下面几种方式,具体哪种好用,一一尝试吧,对于最新的spark。使用如下指令即可。
- export http_proxy=http://proxy-server:port
复制代码
方法二,设置JAVA_OPTS
- JAVA_OPTS="-Dhttp.proxyServer=proxy-server -Dhttp.proxyPort=portNumber"
复制代码
运行测试用例
既然能够顺利的编译出jar文件,那么肯定也改动两行代码来试试效果,如果知道自己的发动生效没有呢,运行测试用例是最好的办法了。
假设已经修改了$SPARK_HOME/core下的某些源码,重新编译的话,使用如下指令
- export SCALA_HOME=/usr/share/scala
- mvn package -DskipTests
复制代码
假设当前在$SPARK_HOME/core目录下,想要运行一下RandomSamplerSuite这个测试用例集合,使用以下指令即可。
- export SPARK_LOCAL_IP=127.0.0.1
- export SPARK_MASTER_IP=127.0.0.1
- mvn -Dsuites=org.apache.spark.util.random.RandomSamplerSuite test
复制代码
相关内容
Apache Spark源码走读之1 -- Spark论文阅读笔记
Apache Spark源码走读之2 -- Job的提交与运行
Apache Spark源码走读之3-- Task运行期之函数调用关系分析
Apache Spark源码走读之4 -- DStream实时流数据处理
Apache Spark源码走读之5-- DStream处理的容错性分析
Apache Spark源码走读之6-- 存储子系统分析
Apache Spark源码走读之7 -- Standalone部署方式分析
Apache Spark源码走读之8 -- Spark on Yarn
Apache Spark源码走读之10 -- 在YARN上运行SparkPi
Apache Spark源码走读之11 -- sql的解析与执行
Apache Spark源码走读之12 -- Hive on Spark运行环境搭建
Apache Spark源码走读之13 -- hiveql on spark实现详解
Apache Spark源码走读之14 -- Graphx实现剖析
Apache Spark源码走读之15 -- Standalone部署模式下的容错性分析
Apache Spark源码走读之16 -- spark repl实现详解
Apache Spark源码走读之17 -- 如何进行代码跟读
Apache Spark源码走读之18 -- 使用Intellij idea调试Spark源码
Apache Spark源码走读之19 -- standalone cluster模式下资源的申请与释放
Apache Spark源码走读之20 -- ShuffleMapTask计算结果的保存与读取
Apache Spark源码走读之21 -- WEB UI和Metrics初始化及数据更新过程分析
Apache Spark源码走读之22 -- 浅谈mllib中线性回归的算法实现
Apache Spark源码走读之23 -- Spark MLLib中拟牛顿法L-BFGS的源码实现
Apache Spark源码走读之24 -- Sort-based Shuffle的设计与实现
|