分享

Spark大师之路:使用maven编译Spark

本帖最后由 sunshine_junge 于 2014-12-26 19:22 编辑


问题导读:
1.如何使用maven对Spark进行构建?
2.如何使用maven对Spark进行编译?








系统环境:
  1. windows 7
  2. apache maven 3.1.0
  3. scala 2.10
  4. jdk 1.7.0_40
  5. spark 0.9.0-incubating
复制代码




引言
如今JVM系的开源项目均引入了使用maven进行版本管理,Spark也不例外,今天就使用maven来对Spark进行构建。
Spark建议使用Maven3系列进行编译,并且要求Java版本最低为1.6。



编译

Maven内存配置
Spark编译可能比其他项目更耗内存,建议为maven配置较大内存,推荐的内存为2g,最大永久区内存为512m,可以使用一下命令来配置:

  1. export MAVEN_OPTS="-Xmx2g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m"
复制代码


如果你使用的是windows系统,也可以在mvn.bat中找到:
  1. @REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
复制代码




@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000在其后添加 :
  1. -Xmx2g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m
复制代码




如果内存配置不够大,可能在构建时报如下错误:
  1. [INFO] Compiling 203 Scala sources and 9 Java sources to /Users/me/Development/spark/core/target/scala-2.10/classes...
  2. [ERROR] PermGen space -> [Help 1]
  3. [INFO] Compiling 203 Scala sources and 9 Java sources to /Users/me/Development/spark/core/target/scala-2.10/classes...
  4. [ERROR] Java heap space -> [Help 1]
复制代码


指定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即可。

命令行配置的一个完整示例如下:
  1. mvn -Pyarn -Dhadoop.version=2.2.0 -Dyarn.version=2.2.0 -DskipTests clean package
复制代码


指定SCALA_HOME

Spark编译需要调用scalac,你需要在命令行中引入SCALA_HOME变量,或者将其添加系统变量中(添加方法再次不赘述)。

如果编译完毕,前台输出如下字样,说明编译成功。
  1. [INFO] ------------------------------------------------------------------------
  2. [INFO] Reactor Summary:
  3. [INFO]
  4. [INFO] Spark Project Parent POM .......................... SUCCESS [9.014s]
  5. [INFO] Spark Project Core ................................ SUCCESS [10:12.198s]
  6. [INFO] Spark Project Bagel ............................... SUCCESS [7:22.175s]
  7. [INFO] Spark Project GraphX .............................. SUCCESS [2:20.119s]
  8. [INFO] Spark Project ML Library .......................... SUCCESS [3:22.775s]
  9. [INFO] Spark Project Streaming ........................... SUCCESS [2:35.244s]
  10. [INFO] Spark Project Tools ............................... SUCCESS [23.091s]
  11. [INFO] Spark Project REPL ................................ SUCCESS [1:06.345s]
  12. [INFO] Spark Project YARN Parent POM ..................... SUCCESS [4:01.606s]
  13. [INFO] Spark Project YARN Stable API ..................... SUCCESS [1:01.500s]
  14. [INFO] Spark Project Assembly ............................ SUCCESS [3:24.366s]
  15. [INFO] Spark Project External Twitter .................... SUCCESS [37.682s]
  16. [INFO] Spark Project External Kafka ...................... SUCCESS [44.005s]
  17. [INFO] Spark Project External Flume ...................... SUCCESS [37.477s]
  18. [INFO] Spark Project External ZeroMQ ..................... SUCCESS [41.711s]
  19. [INFO] Spark Project External MQTT ....................... SUCCESS [34.665s]
  20. [INFO] Spark Project Examples ............................ SUCCESS [2:48.186s]
  21. [INFO] ------------------------------------------------------------------------
  22. [INFO] BUILD SUCCESS
  23. [INFO] ------------------------------------------------------------------------
  24. [INFO] Total time: 42:03.562s
  25. [INFO] Finished at: Tue Apr 08 23:57:31 CST 2014
  26. [INFO] Final Memory: 60M/247M
  27. [INFO] ------------------------------------------------------------------------
复制代码





纯净版编译

使用-Pyarn或者-Pyarn-alpha编译出来的是一个完整的包,存放在./assembly/target/scala-2.10下,这个包包含了Spark编译得到的jar包,以及编译过程中所依赖的包。
如果你只想得到Spark的包,而不需要其依赖的Hadoop等,那么可以使用-Pbigtop-dist这个选项指定纯净版的profile(在./assembly/pom.xml中标识)。

编译得到Spark的jar包之后,你就可以调用其API进行二次开发啦!




参考:
http://spark.apache.org/docs/latest/building-with-maven.html
http://hi.baidu.com/startgo123/item/9b95dc0af3ae8c3ca3332aa4



引用:http://blog.csdn.net/asongoficeandfire/article/details/23223561




欢迎加入about云群90371779322273151432264021 ,云计算爱好者群,亦可关注about云腾讯认证空间||关注本站微信

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

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

本版积分规则

关闭

推荐上一条 /2 下一条