写点什么

CDH5.11.2 集成 IceBerg(二):Spark3 适配

作者:冰心的小屋
  • 2023-06-30
    北京
  • 本文字数:1764 字

    阅读完需:约 6 分钟

1. Spark3 与 Hadoop 的兼容性

上⽂分析 Spark 的版本⾄少为 Spark3,接下来考虑 Spark3 与 hadoop 的兼容性:

经过分析,hadoop 最低版本为 2.7.4,但是 hadoop⽣产环境为 2.6.0,如果升级⻛险成本太⼤,稍有

散失对数据组来说是毁灭性的打击。所以只能在 hadoop2.6.0 的环境下集成 Spark3,需要编辑 Spark3

源码适配 hadoop2.6.0。

2. 编译源码适配 CDH5.11.2

2.1 下载源码

考虑到 Spark3.2 以上引⼊了 hadoop-client-api 和 hadoop-client-runtime 架包,为了减少不必要的依

赖,最后选择 Spark 的版本为 3.1.3,进⼊下载⻚:https://github.com/apache/spark/releases/tag/v3.1.3

2.2 删除所有 test

# 1. 解压tar -xvf spark-3.1.3.tgz# 2. 删除所有test,查找⽬录需要使⽤绝对路径find /Users/ice/Downloads/tmp/spark-3.1.3 -iname "test" -type d -exec rm -rf "{}" \;# 3. 删除所有pom.xml内为scope=test的依赖find spark-3.1.3 -name "pom.xml" -type f# spark-3.1.3/resource-managers/yarn/pom.xml# spark-3.1.3/resource-managers/mesos/pom.xml# spark-3.1.3/resource-managers/kubernetes/core/pom.xml# spark-3.1.3/resource-managers/kubernetes/integration-tests/pom.xml# spark-3.1.3/launcher/pom.xml# ...
复制代码

2.3 删除不必要的模块

编辑根⽬录的 pom.xml:

vim spark-3.1.3/pom.xml
复制代码


2.4 编译环境

编译环境依赖的组件:

  • java1.8

  • scala:2.12

  • maven >= 3.8.6

  • install libffi-devel:yum -y install libffi-devel

  • python3

2.5 设置 maven 源

通⽤的镜像下载使⽤阿⾥云

<?xml version="1.0" encoding="UTF-8"?><settings xmlns="http://maven.apache.org/SETTINGS/1.2.0"          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0                              https://maven.apache.org/xsd/settings-1.2.0.xsd">  <mirrors>    <mirror>      <id>nexus-aliyun</id>      <mirrorOf>central</mirrorOf>      <name>Nexus aliyun</name>      <url>http://maven.aliyun.com/nexus/content/groups/public</url>    </mirror>  </mirrors>  <profiles>    <profile>      <id>jdk-1.4</id>      <activation>        <jdk>1.4</jdk>      </activation>      <repositories>        <repository>          <id>jdk14</id>          <name>Repository for JDK 1.4 builds</name>          <url>http://www.myhost.com/maven/jdk14</url>          <layout>default</layout>          <snapshotPolicy>always</snapshotPolicy>        </repository>      </repositories>    </profile>    <profile>      <repositories>        <repository>          <id>cloudera</id>          <url>https://repository.cloudera.com/artifactory/clouderarepos/</url>          <releases>            <enabled>true</enabled>          </releases>          <snapshots>            <enabled>false</enabled>          </snapshots>        </repository>      </repositories>    </profile>  </profiles>  <activeProfiles>    <activeProfile>cloudera-profile</activeProfile>  </activeProfiles></settings>
复制代码

由于依赖的 hadoop 版本是 CDH5.11.2,编辑根⽬录下的 pom.xml 的 repositories 添加 CDH 源

<repositories>  <repository>    <id>cloudera</id>    <url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>  </repository></repositories>
复制代码

2.6 编译代码

pom.xml 增加 profile cdh

<profile>  <id>cdh</id>  <properties>    <hadoop.version>2.6.0-cdh5.11.2</hadoop.version>    <curator.version>2.7.1</curator.version>    <commons-io.version>2.4</commons-io.version>    <javax.servlet-api.name>servlet-api</javax.servlet-api.name>  </properties></profile>
复制代码

执⾏编译

./build/mvn -Pscala-2.12 -Pcdh -Pyarn -Phive -Phive-thriftserver -DskipTests clean package -X
复制代码

2.7 构建部署架包

dev/make-distribution.sh --name 2.6.0-cdh5.11.2 --pip --r --tgz --mvn mvn -Pscala-2.12 -Pcdh -Pyarn -Phive -Phive-thriftserver -DskipTests -X
复制代码

最后会在⽬录下⽣成 tgz 包


发布于: 刚刚阅读数: 4
用户头像

分享技术上的点点滴滴! 2013-08-06 加入

一杯咖啡,一首老歌,一段代码,欢迎做客冰屋。

评论

发布
暂无评论
CDH5.11.2集成IceBerg(二):Spark3适配_spark_冰心的小屋_InfoQ写作社区