编译spark之前需要的准备。
操作系统虚拟机
我的系统是win7 64位,使用VMVare或者Virtualbox,基本不想太折腾的思想,我使用的是VMVare。
Linux
使用CentOS。
jdk
使用jdk1.7 linux 64位。
maven3
上面这些都准备好了之后,到spark的网站上下载最新版。目前是1.3.0
使用VMVare安装CentOs,并使用VMVare的共享文件夹功能,将windows上下载的jdk,maven3,spark1.3.0安装包放到CentOs上进行安装。默认的共享文件夹在CentOs的目录是/mnt/hgfs/下。
安装jdk。
解压安装包: tar -zvxf jdk-7u67-linux-x64.gz
配置环境变量:
vim ~/.bashrc
内容:export JAVA_HOME=/usr/java/jdk1.7.0_67export JRE_HOME=$JAVA_HOME/jreexport PATH=$JAVA_HOME/bin:$PATHexport CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH(注:java环境变量一定要在~/.bashrc配置,这是因为spark的shell脚本会ssh远程执行命令,这种模式属于non-interactive + non-login shell,是不会加载/etc/profile等文件,但会加载~/.bashrc文件,详细见)
安装maven3
vim ~/.bashrc
内容:
#set maven environmentM2_HOME=/usr/apache-maven-3.2.5export MAVEN_OPTS="-Xms256m -Xmx512m -XX:MaxPermSize=256m"export PATH=$M2_HOME/bin:$PATH同事建议使用oschina的镜像,但是oschina的不见得就比默认的中央库快,具体原因不明。
内存建议尽量的多,512好慢,改成1024会快很多。
编译spark
解压spark的压缩包,执行里面的make-distribution.sh
我使用sh make-distribution.sh完全无反应,但直接执行make-distribution.sh就没问题。网上的说法是sh开头的是软连接,指定使用bash shell执行.sh脚本,不需要权限,而直接执行,需要用户有执行权限,并且使用脚本的第一行指定的shell进行执行,第一行不指定默认使用bash shell。
执行脚本后,如果你的jdk是1.7,会提示编译的代码无法在1.6下执行,是否继续。选择继续后就是漫长的等待。
maven3本身的依赖加上sprak的依赖,非常的多。期间可能会出现编译错误:
[error] Required file not found: sbt-interface.jar
[error] See zinc -help for information about locating necessary files
网上有人说只要重新编译即可:build/mvn
但是我的不可以,我是将虚拟机关机之后重新执行脚本才可以。
检查编译是否成功
执行脚本:./sbin/start-master.sh浏览器输入: 可以看到spark运行状况