`
cloudeagle_bupt
  • 浏览: 536407 次
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

转自:http://blog.csdn.net/asongoficeandfire/article/details/23223561

系统环境:

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,可以使用一下命令来配置:

  1. exportMAVEN_OPTS="-Xmx2g-XX:MaxPermSize=512M-XX:ReservedCodeCacheSize=512m"



如果你使用的是windows系统,也可以在mvn.bat中找到:

  1. @REMsetMAVEN_OPTS=-Xdebug-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000

在其后添加 :

  1. -Xmx2g-XX:MaxPermSize=512M-XX:ReservedCodeCacheSize=512m


如果内存配置不够大,可能在构建时报如下错误:

  1. [INFO]Compiling203Scalasourcesand9Javasourcesto/Users/me/Development/spark/core/target/scala-2.10/classes...
  2. [ERROR]PermGenspace->[Help1]
  3. [INFO]Compiling203Scalasourcesand9Javasourcesto/Users/me/Development/spark/core/target/scala-2.10/classes...
  4. [ERROR]Javaheapspace->[Help1]


指定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-DskipTestscleanpackage


指定SCALA_HOME


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

如果编译完毕,前台输出如下字样,说明编译成功。

  1. [INFO]------------------------------------------------------------------------
  2. [INFO]ReactorSummary:
  3. [INFO]
  4. [INFO]SparkProjectParentPOM..........................SUCCESS[9.014s]
  5. [INFO]SparkProjectCore................................SUCCESS[10:12.198s]
  6. [INFO]SparkProjectBagel...............................SUCCESS[7:22.175s]
  7. [INFO]SparkProjectGraphX..............................SUCCESS[2:20.119s]
  8. [INFO]SparkProjectMLLibrary..........................SUCCESS[3:22.775s]
  9. [INFO]SparkProjectStreaming...........................SUCCESS[2:35.244s]
  10. [INFO]SparkProjectTools...............................SUCCESS[23.091s]
  11. [INFO]SparkProjectREPL................................SUCCESS[1:06.345s]
  12. [INFO]SparkProjectYARNParentPOM.....................SUCCESS[4:01.606s]
  13. [INFO]SparkProjectYARNStableAPI.....................SUCCESS[1:01.500s]
  14. [INFO]SparkProjectAssembly............................SUCCESS[3:24.366s]
  15. [INFO]SparkProjectExternalTwitter....................SUCCESS[37.682s]
  16. [INFO]SparkProjectExternalKafka......................SUCCESS[44.005s]
  17. [INFO]SparkProjectExternalFlume......................SUCCESS[37.477s]
  18. [INFO]SparkProjectExternalZeroMQ.....................SUCCESS[41.711s]
  19. [INFO]SparkProjectExternalMQTT.......................SUCCESS[34.665s]
  20. [INFO]SparkProjectExamples............................SUCCESS[2:48.186s]
  21. [INFO]------------------------------------------------------------------------
  22. [INFO]BUILDSUCCESS
  23. [INFO]------------------------------------------------------------------------
  24. [INFO]Totaltime:42:03.562s
  25. [INFO]Finishedat:TueApr0823:57:31CST2014
  26. [INFO]FinalMemory: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


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics