版本适配

针对Apache,CDH,HDP等版本适配需要手动修改的地方进行说明

进入到项目的根目录下,依次执行如下指令

  1. mvn -N install
  2. mvn clean install -Dmaven.test.skip=true

linkis-dist -> package -> db 下的 linkis-dml.sql 脚本

将对应的引擎版本切换为自己需要的版本,如果你使用的版本和官方一致的话,则无需修改此步

比如:

  1. spark是3.0.0的话,则此处是 SET @SPARK_LABEL=”spark-3.0.0”;
  2. hive是2.1.1-cdh6.3.2的话,需先调整2.1.1_cdh6.3.2(构建时),则此处是 SET @HIVE_LABEL=”hive-2.1.1_cdh6.3.2”;
  1. -- 变量:
  2. SET @SPARK_LABEL="spark-2.4.3";
  3. SET @HIVE_LABEL="hive-2.3.3";
  4. SET @PYTHON_LABEL="python-python2";
  5. SET @PIPELINE_LABEL="pipeline-1";
  6. SET @JDBC_LABEL="jdbc-4";
  7. SET @PRESTO_LABEL="presto-0.234";
  8. SET @IO_FILE_LABEL="io_file-1.0";
  9. SET @OPENLOOKENG_LABEL="openlookeng-1.5.0";
引擎版本
hadoop2.7.2
hive2.3.3
spark2.4.3
flink1.12.2
引擎版本
hadoop3.1.1
hive3.1.2
spark3.0.1
flink1.13.2

Linkis版本小于1.3.2

  1. <hadoop.version>3.1.1</hadoop.version>
  2. <scala.version>2.12.10</scala.version>
  3. <scala.binary.version>2.12</scala.binary.version>
  4. <!-- 将hadoop-hdfs 替换成为hadoop-hdfs-client -->
  5. <dependency>
  6. <groupId>org.apache.hadoop</groupId>
  7. <artifactId>hadoop-hdfs-client</artifactId>
  8. <version>${hadoop.version}</version>
  9. <dependency>

当Linkis版本大于等于1.3.2时, 只需要设置 scala.version and scala.binary.version

  1. <scala.version>2.12.10</scala.version>
  2. <scala.binary.version>2.12</scala.binary.version>

因为我们可以直接使用hadoop-3.3 or hadoop-2.7 profile来编译 Profile hadoop-3.3 可以用于任意hadoop3.x, 默认hadoop3.x版本是3.3.1, Profile hadoop-2.7 可以用于任意hadoop2.x, 默认hadoop2.x版本是2.7.2, 想要用其他版本可以编译时指定 -Dhadoop.version=xxx

  1. mvn -N install
  2. mvn clean install -Phadoop-3.3 -Dmaven.test.skip=true
  3. mvn clean install -Phadoop-3.3 -Dhadoop.version=3.1.1 -Dmaven.test.skip=true

Linkis版本小于1.3.2

  1. <!-- 注意这里的 <version>${hadoop.version}</version> , 根据你有没有遇到错误来进行调整 -->
  2. <dependency>
  3. <groupId>org.apache.hadoop</groupId>
  4. <artifactId>hadoop-hdfs-client</artifactId>
  5. <version>${hadoop.version}</version>
  6. </dependency>

当Linkis版本大于等于1.3.2时,linkis-hadoop-common模块不需要变更

  1. <hive.version>3.1.2</hive.version>

Linkis版本小于1.3.2

  1. <spark.version>3.0.1</spark.version>

当Linkis版本大于等于1.3.2

  1. 我们可以直接编译spark-3.2 profile, 如果我们同时使用hadoop3, 那么我们还需要指定hadoop-3.3 profile.
  2. 默认 spark3.x 版本时3.2.1. 如果我们使用spark-3.2 profile编译, scala版本默认是2.12.15,因此我们不需要在项目根目录设置scala版本了(5.1.1提到当)
  3. 如果Linkis使用hadoop3编译,同时spark仍旧是2.x版本的话,由于spark兼容性问题需要激活profile `spark-2.4-hadoop-3.3`
  1. mvn -N install
  2. mvn clean install -Pspark-3.2 -Phadoop-3.3 -Dmaven.test.skip=true
  3. mvn clean install -Pspark-2.4-hadoop-3.3 -Phadoop-3.3 -Dmaven.test.skip=true
  1. <flink.version>1.13.2</flink.version>

版本适配 - 图1临时方案

注意以下复制类操作均在flink中

由于flink1.12.2到1.13.2版本,有部分类进行调整,所以需要进行flink的编译和调整,编译flink选择scala的版本为2.12版本(scala版本根据自己的实际使用版本来)

flink编译参考指令: mvn clean install -DskipTests -P scala-2.12 -Dfast -T 4 -Dmaven.compile.fock=true

  1. -- 注意,下列的类是从flink1.12.2版本给copyflink1.13.2版本来
  2. org.apache.flink.table.client.config.entries.DeploymentEntry
  3. org.apache.flink.table.client.config.entries.ExecutionEntry
  4. org.apache.flink.table.client.gateway.local.CollectBatchTableSink
  5. org.apache.flink.table.client.gateway.local.CollectStreamTableSink

org.apache.linkis.manager.label.conf.LabelCommonConfig 文件调整

  1. public static final CommonVars<String> SPARK_ENGINE_VERSION =
  2. CommonVars.apply("wds.linkis.spark.engine.version", "3.0.1");
  3. public static final CommonVars<String> HIVE_ENGINE_VERSION =
  4. CommonVars.apply("wds.linkis.hive.engine.version", "3.1.2");

org.apache.linkis.governance.common.conf.GovernanceCommonConf 文件调整

  1. val SPARK_ENGINE_VERSION = CommonVars("wds.linkis.spark.engine.version", "3.0.1")
  2. val HIVE_ENGINE_VERSION = CommonVars("wds.linkis.hive.engine.version", "3.1.2")
引擎版本
hadoop3.1.1
hive3.1.0
spark2.3.2
json4s.version3.2.11

Linkis版本小于1.3.2

  1. <hadoop.version>3.1.1</hadoop.version>
  2. <json4s.version>3.2.11</json4s.version>
  3. <!-- 将hadoop-hdfs 替换成为hadoop-hdfs-client -->
  4. <dependency>
  5. <groupId>org.apache.hadoop</groupId>
  6. <artifactId>hadoop-hdfs-client</artifactId>
  7. <version>${hadoop.version}</version>
  8. <dependency>

当Linkis版本大于等于1.3.2时, 只需要设置 json4s.version

  1. <json4s.version>3.2.11</json4s.version>

因为我们可以直接使用hadoop-3.3 or hadoop-2.7 profile来编译 Profile hadoop-3.3 可以用于任意hadoop3.x, 默认hadoop3.x版本是3.3.1, Profile hadoop-2.7 可以用于任意hadoop2.x, 默认hadoop2.x版本是2.7.2, 想要用其他版本可以编译时指定 -Dhadoop.version=xxx

  1. mvn -N install
  2. mvn clean install -Phadoop-3.3 -Dmaven.test.skip=true
  3. mvn clean install -Phadoop-3.3 -Dhadoop.version=3.1.1 -Dmaven.test.skip=true
  1. <hive.version>3.1.0</hive.version>

Linkis版本小于1.3.2

  1. <spark.version>2.3.2</spark.version>

当Linkis版本大于等于1.3.2

  1. 我们可以直接编译spark-3.2 profile, 如果我们同时使用hadoop3, 那么我们还需要指定hadoop-3.3 profile.
  2. 默认 spark3.x 版本时3.2.1. 如果我们使用spark-3.2 profile编译, scala版本默认是2.12.15,因此我们不需要在项目根目录设置scala版本了(5.1.1提到当)
  3. 如果Linkis使用hadoop3编译,同时spark仍旧是2.x版本的话,由于spark兼容性问题需要激活profile `spark-2.4-hadoop-3.3`
  1. mvn -N install
  2. mvn clean install -Pspark-3.2 -Phadoop-3.3 -Dmaven.test.skip=true
  3. mvn clean install -Pspark-2.4-hadoop-3.3 -Phadoop-3.3 -Dmaven.test.skip=true

org.apache.linkis.manager.label.conf.LabelCommonConfig 文件调整

  1. public static final CommonVars<String> SPARK_ENGINE_VERSION =
  2. CommonVars.apply("wds.linkis.spark.engine.version", "2.3.2");
  3. public static final CommonVars<String> HIVE_ENGINE_VERSION =
  4. CommonVars.apply("wds.linkis.hive.engine.version", "3.1.0");

org.apache.linkis.governance.common.conf.GovernanceCommonConf 文件调整

  1. val SPARK_ENGINE_VERSION = CommonVars("wds.linkis.spark.engine.version", "2.3.2")
  2. val HIVE_ENGINE_VERSION = CommonVars("wds.linkis.hive.engine.version", "3.1.0")
  1. <mirrors>
  2. <!-- mirror
  3. | Specifies a repository mirror site to use instead of a given repository. The repository that
  4. | this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
  5. | for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
  6. |
  7. <mirror>
  8. <id>mirrorId</id>
  9. <mirrorOf>repositoryId</mirrorOf>
  10. <name>Human Readable Name for this Mirror.</name>
  11. <url>http://my.repository.com/repo/path</url>
  12. </mirror>
  13. -->
  14. <mirror>
  15. <id>nexus-aliyun</id>
  16. <mirrorOf>*,!cloudera</mirrorOf>
  17. <name>Nexus aliyun</name>
  18. <url>http://maven.aliyun.com/nexus/content/groups/public</url>
  19. </mirror>
  20. <mirror>
  21. <id>aliyunmaven</id>
  22. <mirrorOf>*,!cloudera</mirrorOf>
  23. <name>阿里云公共仓库</name>
  24. <url>https://maven.aliyun.com/repository/public</url>
  25. </mirror>
  26. <mirror>
  27. <id>aliyunmaven</id>
  28. <mirrorOf>*,!cloudera</mirrorOf>
  29. <name>spring-plugin</name>
  30. <url>https://maven.aliyun.com/repository/spring-plugin</url>
  31. </mirror>
  32. <mirror>
  33. <id>maven-default-http-blocker</id>
  34. <mirrorOf>external:http:*</mirrorOf>
  35. <name>Pseudo repository to mirror external repositories initially using HTTP.</name>
  36. <url>http://0.0.0.0/</url>
  37. <blocked>true</blocked>
  38. </mirror>
  39. </mirrors>
  1. <repositories>
  2. <repository>
  3. <id>cloudera</id>
  4. <url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
  5. <releases>
  6. <enabled>true</enabled>
  7. </releases>
  8. </repository>
  9. <!--防止cloudera找不到,加上阿里源-->
  10. <repository>
  11. <id>aliyun</id>
  12. <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
  13. <releases>
  14. <enabled>true</enabled>
  15. </releases>
  16. </repository>
  17. </repositories>
引擎版本
hadoop2.6.0-cdh5.12.1
zookeeper3.4.5-cdh5.12.1
hive1.1.0-cdh5.12.1
spark2.3.4
flink1.12.4
pythonpython3
  1. <hadoop.version>2.6.0-cdh5.12.1</hadoop.version>
  2. <zookeeper.version>3.4.5-cdh5.12.1</zookeeper.version>
  3. <scala.version>2.11.8</scala.version>
  1. -- 修改
  2. <hive.version>1.1.0-cdh5.12.1</hive.version>
  3. -- 添加
  4. <package.hive.version>1.1.0_cdh5.12.1</package.hive.version>
  • 修改 assembly 下的 distribution.xml 文件
  1. <outputDirectory>/dist/v${package.hive.version}/lib</outputDirectory>
  2. <outputDirectory>dist/v${package.hive.version}/conf</outputDirectory>
  3. <outputDirectory>plugin/${package.hive.version}</outputDirectory>
  • 修改CustomerDelimitedJSONSerDe文件

    1. /* hive版本过低,需注释
    2. case INTERVAL_YEAR_MONTH:
    3. {
    4. wc = ((HiveIntervalYearMonthObjectInspector) oi).getPrimitiveWritableObject(o);
    5. binaryData = Base64.encodeBase64(String.valueOf(wc).getBytes());
    6. break;
    7. }
    8. case INTERVAL_DAY_TIME:
    9. {
    10. wc = ((HiveIntervalDayTimeObjectInspector) oi).getPrimitiveWritableObject(o);
    11. binaryData = Base64.encodeBase64(String.valueOf(wc).getBytes());
    12. break;
    13. }
    14. */
  1. <flink.version>1.12.4</flink.version>
  1. <spark.version>2.3.4</spark.version>
  1. <python.version>python3</python.version>

org.apache.linkis.manager.label.conf.LabelCommonConfig 文件调整

  1. public static final CommonVars<String> SPARK_ENGINE_VERSION =
  2. CommonVars.apply("wds.linkis.spark.engine.version", "2.3.4");
  3. public static final CommonVars<String> HIVE_ENGINE_VERSION =
  4. CommonVars.apply("wds.linkis.hive.engine.version", "1.1.0");
  5. CommonVars.apply("wds.linkis.python.engine.version", "python3")

org.apache.linkis.governance.common.conf.GovernanceCommonConf 文件调整

  1. val SPARK_ENGINE_VERSION = CommonVars("wds.linkis.spark.engine.version", "2.3.4")
  2. val HIVE_ENGINE_VERSION = CommonVars("wds.linkis.hive.engine.version", "1.1.0")
  3. val PYTHON_ENGINE_VERSION = CommonVars("wds.linkis.python.engine.version", "python3")
引擎版本
hadoop3.0.0-cdh6.3.2
hive2.1.1-cdh6.3.2
spark3.0.0
  1. <hadoop.version>3.0.0-cdh6.3.2</hadoop.version>
  2. <scala.version>2.12.10</scala.version>
  1. <!-- 将hadoop-hdfs 切换 hadoop-hdfs-client -->
  2. <dependency>
  3. <groupId>org.apache.hadoop</groupId>
  4. <artifactId>hadoop-hdfs-client</artifactId>
  5. </dependency>
  1. -- 修改
  2. <hive.version>2.1.1-cdh6.3.2</hive.version>
  3. -- 添加
  4. <package.hive.version>2.1.1_cdh6.3.2</package.hive.version>

修改 assembly 下的 distribution.xml 文件

  1. <outputDirectory>/dist/v${package.hive.version}/lib</outputDirectory>
  2. <outputDirectory>dist/v${package.hive.version}/conf</outputDirectory>
  3. <outputDirectory>plugin/${package.hive.version}</outputDirectory>
  1. <spark.version>3.0.0</spark.version>

org.apache.linkis.manager.label.conf.LabelCommonConfig 文件调整

  1. public static final CommonVars<String> SPARK_ENGINE_VERSION =
  2. CommonVars.apply("wds.linkis.spark.engine.version", "3.0.0");
  3. public static final CommonVars<String> HIVE_ENGINE_VERSION =
  4. CommonVars.apply("wds.linkis.hive.engine.version", "2.1.1_cdh6.3.2");

org.apache.linkis.governance.common.conf.GovernanceCommonConf 文件调整

  1. val SPARK_ENGINE_VERSION = CommonVars("wds.linkis.spark.engine.version", "3.0.0")
  2. val HIVE_ENGINE_VERSION = CommonVars("wds.linkis.hive.engine.version", "2.1.1_cdh6.3.2")
  • 如果遇到类缺少或者类中方法缺少的情况下,找到对应引用这个包依赖,如何尝试切换到有对应包或者类的版本中来
  • 引擎版本如果需要使用到-的话,使用_来进行替换,并且加上<package.引擎名字.version>来指定替换后的版本,同时在对应的引擎distribution文件中使用${package.引擎名字.version}来替换原有的
  • 如果有时候使用阿里云镜像出现下载guava的jar出现403的问题的话,可以切换到华为,腾讯等镜像仓库