首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在 Hadoop 2.2.0 环境下使用 Spark 2.2.x

到 Github 下载支持 Hadoop 2.5 及其之前版本的 Spark 2.2.1 :https://github.com/397090770/spark-2.2-for-hadoop-2.2

Apache Spark 2.2.0 于今年7月份正式发布,

这个版本是 Structured Streaming 的一个重要里程碑,因为其可以正式在生产环境中使用,实验标签(experimental tag)已经被移除;

CBO (Cost-Based Optimizer)有了进一步的优化;

SQL完全支持 SQL-2003 标准;

R 中引入了新的分布式机器学习算法;

MLlib 和 GraphX 中添加了新的算法

更多详情请参见:Apache Spark 2.2.0新特性详细介绍。这么多的新特性,我们肯定很迫不及待地使用。但是如果你线上使用的 Hadoop 集群版本是 2.5 及其之前版本,那对不起了,这个版本的 Spark 你用不了了!因为从 Spark 2.2.0 开始移除了对 Apache Hadoop 2.5 及其之前版本的支持(详见:Remove support for Hadoop 2.5 and earlier)!

难道我们得为了使用 Apache Spark 2.2.x 而升级咱们的 Hadoop 集群?这代价也太高了吧。。那咋办呢?其实我们可以修改 Apache Spark 2.2.x 关于 Hadoop 及 YARN 的相关代码,让它支持 Apache Hadoop 2.5 及其之前版本就行了。

Spark 2.2.x 不支持 Hadoop 2.2.0 的可能原因

其实 Spark 2.2.0 不支持 Hadoop 2.5 及其之前版本,是因为这个版本的 Spark 移除了那些兼容不同版本的 Hadoop 代码。因为 Hadoop 2.x 后面几个版本添加了许多类方法等,这些方法和类在之前的 Hadoop 版本不存在,特别是 Hadoop 2.2(我公司目前还在使用 Hadoop 2.2.0 )、Hadoop 2.3 和 Hadoop 2.6 相比少了许多功能,为了支持不同版本的 Hadoop,Spark 代码里面就要编写很多兼容的代码,其中使用大量使用了反射机制。比如在 Client 类中创建 ApplicationSubmissionContext 的时候设置 spark.yarn.tags,Spark 2.1.0 是像下面实现的:

因为 Spark 2.1.x 支持 Hadoop 2.2.x,而 setApplicationTags 是从 Hadoop 2.4 开始引入的,所以为了兼容 Hadoop 2.2.x,不得不这么写。而 Spark 2.2.x 移除了对 Hadoop 2.5 及其之前版本的支持,所以上面的代码可以直接一行搞定:

而像这样的代码在 Spark 2.1.0 存在很多,估计是这些代码太臃肿而且难以维护,所以社区可能因为这个而宣布不再支持 Hadoop 2.5 及其之前版本了!

解决办法

好了,基于上面的分析,如果想在 Hadoop 2.2.x 上使用 Spark 2.2.x,我们完全可以把 Spark 2.2.x 移除的代码给弄回来,不就支持了吗?基于这个思路,我基于 Spark 2.2.1 和 Spark 2.1.0,将支持 Hadoop 2.2.x 的代码全部移回去了!然后可以直接把 Apache Spark 2.2.1 跑在 Hadoop 2.2.0 上,相关代码在:https://github.com/397090770/spark-2.2-for-hadoop-2.2。

上面代码在编译的时候如果不指定 Hadoop 默认使用的是 2.6.5,不过你可以通过 hadoop.version 参数指定你需要的版本,具体的编译如下:

小技巧

在编译的时候想加快速度,可以修改 ./dev/make-distribution.sh 文件的下面语句:

上面的 1C 代表使用1个核进行编译,所以如果你的电脑不止一个核,你可以增加核的个数;另外,编译的时候加上

clean 参数之后,不管你代码是否修改了,都会编译,所以我们可以去掉这个参数,最后修改的结果如下:

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171214G04AEB00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券