使用maven编译Spark
问题导读:
1.maven编译spark应该注意什么问题?
2.spark在编译的时候,是否可以指定任意hadoop版本?
static/image/hrline/4.gif
系统环境:windows 7
apache maven 3.1.0
scala 2.10
jdk 1.7.0_40
spark 0.9.0-incubating
引言如今JVM系的开源项目均引入了使用maven进行版本管理,Spark也不例外,今天就使用maven来对Spark进行构建。
Spark建议使用Maven3系列进行编译,并且要求Java版本最低为1.6。
编译Maven内存配置Spark编译可能比其他项目更耗内存,建议为maven配置较大内存,推荐的内存为2g,最大永久区内存为512m,可以使用一下命令来配置:
export MAVEN_OPTS="-Xmx2g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m"
如果你使用的是windows系统,也可以在mvn.bat中找到:
@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
在其后添加 :
-Xmx2g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m
如果内存配置不够大,可能在构建时报如下错误:
Compiling 203 Scala sources and 9 Java sources to /Users/me/Development/spark/core/target/scala-2.10/classes...
PermGen space ->
Compiling 203 Scala sources and 9 Java sources to /Users/me/Development/spark/core/target/scala-2.10/classes...
Java heap space ->
指定Hadoop版本
Spark依赖于HDFS存储数据,而HDFS使用的protobuf版本又不一致,所以应该为我们所构建的Spark指定对应的HDFS版本,这个版本需要和你集群中所使用的HDFS版本一致。Spark默认对应的Hadoop版本为1.0.4,你可以在maven命令中使用-Dhadoop.version=${your.version}来指定你的版本号。
如果你使用的是Hadoop2.x,0.23.x版本或者Cloudera的CDH MRv2,那么需要在编译命令中使用-Pyarn-alpha或者-Pyarn来指定。另外,还需要指定yarn的版本,同样使用-Dyarn.version=${your.version}完成。
注意:以上配置也可以通过修改pom.xml文件实现,方法是在pom.xml文件里找到-P之后对应的profile标签,修改hadoop.version和yarn.version对应的value即可。
命令行配置的一个完整示例如下:
mvn -Pyarn -Dhadoop.version=2.2.0 -Dyarn.version=2.2.0 -DskipTests clean package
指定SCALA_HOME
Spark编译需要调用scalac,你需要在命令行中引入SCALA_HOME变量,或者将其添加系统变量中(添加方法再次不赘述)。
如果编译完毕,前台输出如下字样,说明编译成功。
------------------------------------------------------------------------
Reactor Summary:
Spark Project Parent POM .......................... SUCCESS
Spark Project Core ................................ SUCCESS
Spark Project Bagel ............................... SUCCESS
Spark Project GraphX .............................. SUCCESS
Spark Project ML Library .......................... SUCCESS
Spark Project Streaming ........................... SUCCESS
Spark Project Tools ............................... SUCCESS
Spark Project REPL ................................ SUCCESS
Spark Project YARN Parent POM ..................... SUCCESS
Spark Project YARN Stable API ..................... SUCCESS
Spark Project Assembly ............................ SUCCESS
Spark Project External Twitter .................... SUCCESS
Spark Project External Kafka ...................... SUCCESS
Spark Project External Flume ...................... SUCCESS
Spark Project External ZeroMQ ..................... SUCCESS
Spark Project External MQTT ....................... SUCCESS
Spark Project Examples ............................ SUCCESS
------------------------------------------------------------------------
BUILD SUCCESS
------------------------------------------------------------------------
Total time: 42:03.562s
Finished at: Tue Apr 08 23:57:31 CST 2014
Final Memory: 60M/247M
------------------------------------------------------------------------
纯净版编译
使用-Pyarn或者-Pyarn-alpha编译出来的是一个完整的包,存放在./assembly/target/scala-2.10下,这个包包含了Spark编译得到的jar包,以及编译过程中所依赖的包。
如果你只想得到Spark的包,而不需要其依赖的Hadoop等,那么可以使用-Pbigtop-dist这个选项指定纯净版的profile(在./assembly/pom.xml中标识)。
编译得到Spark的jar包之后,你就可以调用其API进行二次开发啦!
出处:http://blog.csdn.net/asongoficeandfire/article/details/23223561
{:soso_e179:} {:soso_e179:}{:soso_e179:}
页:
[1]