基础引擎依赖性、兼容性、默认版本优化
1. 需求背景
- 低版本 linkis 需要通过修改代码来适配不同的 Hive、Spark 等版本,因为兼容性问题,编译可能会失败,可以减少这些基础引擎的兼容性问题。
- Hadoop、Hive、Spark 3.x 已经很成熟,并且低版本的引擎可能有潜在的风险点,社区很多用户默认使用 3.x 版本,因此考虑将 Linkis 默认编译的版本修改为 3.x 。
2. 使用说明
2.1 默认版本调整说明
Linkis 1.4.0 将 Hadoop、Hive、Spark 默认版本修改为 3.x,具体版本分别为 Hadoop 3.3.4、Hive 3.1.3、Spark 3.2.1 。
2.2 不同版本适配
不同的hive版本的编译,我们只需要指定-D=xxx
就可以了,比如:
mvn clean install package -Dhive.version=2.3.3
不同版本的spark编译,我们也只需要指定-D=xxx
就可以了,常用的使用场景如下:
#spark3+hadoop3
mvn install package
#spark3+hadoop2
mvn install package -Phadoop-2.7
#spark2+hadoop2
mvn install package -Pspark-2.4 -Phadoop-2.7
#spark2+ hadoop3
mvn install package -Pspark-2.4
3. 注意事项
- 默认版本编译时,基础版本为:hadoop3.3.4 + hive3.1.3 + spark3.2.1
mvn install package
由于默认基础引擎的默认版本升级,spark-3.2
、hadoop-3.3
和spark-2.4-hadoop-3.3
profile被移除,新增profile hadoop-2.7
and spark-2.4
。
spark的子版本可以通过
-Dspark.version=xxx
来指定,系统默认使用的 scala 版本为 2.12.17,可适配 spark 3.x 版本 。如需编译 spark 2.x,需要使用 scala 2.11 版本。可通过 -Pspark-2.4 参数,或者 -Dspark.version=2.xx -Dscala.version=2.11.12 -Dscala.binary.version=2.11 编译。hadoop的子版本可以通过
-Dhadoop.version=xxx
来指定
举个例子 :
mvn install package -Pspark-3.2 -Phadoop-3.3 -Dspark.version=3.1.3
- hive 2.x 版本需要依赖 jersey,hive EC 默认编译时未添加 jersey依赖,可通过如下指引编译。
编译 hive 2.3.3 版本
编译 hive EC 时默认添加了指定 2.3.3 版本时激活添加 jersey 依赖的 profile,用户可通过指定 -Dhive.version=2.3.3 参数编译
编译其它 hive 2.x 版本
修改 linkis-engineconn-plugins/hive/pom.xml 文件,将 2.3.3 修改为用户编译版本,如 2.1.0
<profile>
<id>hive-jersey-dependencies</id>
<activation>
<property>
<name>hive.version</name>
<!-- <value>2.3.3</value> -->
<value>2.1.0</value>
</property>
</activation>
...
</profile>
编译时添加 -Dhive.version=2.1.0 参数。