分享

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

xioaxu790 2014-12-19 20:58:16 发表于 代码分析 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 0 24458
本帖最后由 pig2 于 2015-1-6 14:12 编辑
问题导读
1.Spark编译需要哪些软件?


2.Spark编译命令是什么?


3.修改代码后,如何运行测试用例?





概要
本来源码编译没有什么可说的,对于java项目来说,只要会点maven或ant的简单命令,依葫芦画瓢,一下子就ok了。但到了Spark上面,事情似乎不这么简单,按照spark officical document上的来做,总会出现这样或那样的编译错误,让人懊恼不已。

今天闲来无事,又重试了一把,居然o了,做个记录,以备后用。

准备
我的编译机器上安装的Linux是archlinux,并安装后如下软件
  • scala 2.11
  • maven
  • git



下载源码
第一步当然是将github上的源码下载下来
  1. git clone https://github.com/apache/spark.git
复制代码


源码编译
不是直接用maven也不是直接用sbt,而是使用spark中自带的编译脚本make-distribution.sh
  1. export SCALA_HOME=/usr/share/scala
  2. cd $SPARK_HOME
  3. ./make-distribution.sh
复制代码


如果一切顺利,会在$SPARK_HOME/assembly/target/scala-2.10目录下生成目标文件,比如
  1. assembly/target/scala-2.10/spark-assembly-1.0.0-SNAPSHOT-hadoop1.0.4.jar
复制代码


使用sbt编译
之前使用sbt编译一直会失败的主要原因就在于有些jar文件因为GFW的原因而访问不了。解决之道当然是添加代理才行。

代理的添加有下面几种方式,具体哪种好用,一一尝试吧,对于最新的spark。使用如下指令即可。
  1. export http_proxy=http://proxy-server:port
复制代码


方法二,设置JAVA_OPTS
  1. JAVA_OPTS="-Dhttp.proxyServer=proxy-server -Dhttp.proxyPort=portNumber"
复制代码



运行测试用例
既然能够顺利的编译出jar文件,那么肯定也改动两行代码来试试效果,如果知道自己的发动生效没有呢,运行测试用例是最好的办法了。

假设已经修改了$SPARK_HOME/core下的某些源码,重新编译的话,使用如下指令
  1. export SCALA_HOME=/usr/share/scala
  2. mvn package -DskipTests
复制代码


假设当前在$SPARK_HOME/core目录下,想要运行一下RandomSamplerSuite这个测试用例集合,使用以下指令即可。
  1. export SPARK_LOCAL_IP=127.0.0.1
  2. export SPARK_MASTER_IP=127.0.0.1
  3. 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的设计与实现

没找到任何评论,期待你打破沉寂

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条