分享

spark编译1:构建基于hadoop的spark安装包

问题导读

1.spark集群能否单独运行?
2.如何在spark中指定想编译的hadoop版本?
3.构建的时候,版本选择需要注意什么?






上一篇
如何查看spark与hadoop、kafka、Scala、flume、hive等兼容版本【适用于任何版本】
http://www.aboutyun.com/forum.php?mod=viewthread&tid=23252


上一篇说了spark与其它组件兼容的版本,这里具体说下如何构建基于hadoop的spark安装包。首先我们需要有spark源码,上一篇已经交给大家如何使用git下载。当然我这里提供了百度网盘链接

链接:http://pan.baidu.com/s/1gfMpTqb 密码:c6dc
默认情况下,spark的执行不需要hadoop,也就是说没有hadoop集群下,spark集群可以设置,启动,使用。。尽管如此,如果你使用spark如Yarn的执行模式,或则访问hdfs创建rdd,它将会依赖hadoop。如果是这种情况,你的spark安装包必须兼容你所使用的hadoop集群的安装包

如果你使用的是spark2.3.0对应的hadoop默认为2.6.在假如使用的是spark1.2.0对应的是hadoop2.4.
这里需要注意的是:有些hadoop版本,是有小版本的,比如hadoop2.6.5,hadoop2.7有hadoop2.7.1,hadoop2.7.3.对于hadoop版本的+或则-的小版本之间,它们与spark大多都是兼容可以正常运行的。

spark构建运行开发者指定hadoop版本,你可以直接使用maven命令或则 make-distribution.sh脚本生成安装包。例如构建spark2.3.0,hadoop2.6
maven profile 使用-P选项, 如:
$SPARK_SRC/make-distribution.sh --tgz -Pyarn -Phadoop-2.6 -Dhadoop.version=2.6 -Phive
spark2.3.0支持2.6,2.7

如何自定义hadoop版本
基本的你需要在pom文件中添加profile指定hadoop版本

假如你想构建 Hadoop 2.6.5,按照下面步骤
第一步:
在 $SPARK_SRC/pom.xml中添加maven profile hadoop-2.6.5 在<profiles> 部分
[mw_shl_code=xml,true]<profile>
    <id>hadoop-2.6.5</id>
    <properties>
        <hadoop.version>2.6.5</hadoop.version>
        <protobuf.version>2.5.0</protobuf.version>
        <jets3t.version>0.9.0</jets3t.version>
        <commons.math3.version>3.1.1</commons.math3.version>
        <avro.mapred.classifier>hadoop2</avro.mapred.classifier>
    </properties>
</profile>[/mw_shl_code]
protobuf, jets3t, commons.math3 和avro.mapred.classifier 版本都是来自Apache Hadoop 2.5.2 二进制分布式libs. 你需要修改要构建的hadoop的对应版本。 1.jpg

对于这个avro.mapred.classifier,大家可以找找,不过在spark2.3.0 pom文件中也是有的
https://github.com/apache/spark/blob/master/pom.xml
2.jpg
上面是比较复杂的,我们也可以使用最简单的方式:
[mw_shl_code=xml,true]<profile>
    <id>hadoop-2.6.5</id>
</profile>[/mw_shl_code]


第二步:构建执行
使用make-distribution.sh构建
[mw_shl_code=bash,true]$SPARK_SRC/make-distribution.sh --tgz -Pyarn -Phadoop-2.6.5 -Dhadoop.version=2.6.5 -Phive
[/mw_shl_code]
使用maven命令构建
[mw_shl_code=bash,true]mvn -Pyarn -Dhadoop.version=2.6.5 -Dyarn.version=2.6.5 -DskipTests clean package  
[/mw_shl_code]
构建成功后,可以找到spark-2.*.*-bin-2.6.5.tgz

注意:
这种方式建议使用在hadoop小版本,对于hadoop主版本即使构建成功,也可能在生产中遇到一些问题。

参考:
https://etushar89.wordpress.com/2014/12/28/building-apache-spark-against-specific-hadoop-version/
下一篇
spark编译2:构建基于hadoop的spark安装包实践及遇到问题总结
http://www.aboutyun.com/forum.php?mod=viewthread&tid=23286






本帖被以下淘专辑推荐:

已有(1)人评论

跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条