Q132284591 发表于 2015-7-30 15:22:44

Apache Spark源码走读之9

  欢迎转载,转载请注明出处,徽沪一郎。

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

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


[*]scala 2.11
[*]maven
[*]git

下载源码
  第一步当然是将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
页: [1]
查看完整版本: Apache Spark源码走读之9