TT Bigdata TT Bigdata
首页
  • 部署专题

    • 常规安装
    • 一键部署
  • 组件安装

    • 常规&高可用
  • 版本专题

    • 更新说明
  • Ambari-Env

    • 环境准备
    • 开始使用
  • 组件编译

    • 专区—Ambari
    • 专区—Bigtop-官方组件
    • 专区—Bigtop-扩展组件
  • 报错解决

    • 专区—Ambari
    • 专区—Bigtop
  • 其他技巧

    • Maven镜像加速
    • Gradle镜像加速
    • Bower镜像加速
    • 虚拟环境思路
    • R环境安装+一键安装脚本
    • Ivy配置私有镜像仓库
    • Node.js 多版本共存方案
    • Ambari Web本地启动
    • Npm镜像加速
    • PostgreSQL快速安装
    • Temurin JDK 23快速安装
  • 成神之路

    • 专区—Ambari
    • 专区—Bigtop
  • 集成案例

    • Redis集成教学
    • Dolphin集成教学
    • Doris集成教学
    • 持续整理...
  • 核心代码

    • 各组件代码
    • 通用代码模板
  • 国产化&其他系统

    • Rocky系列
    • Ubuntu系列
  • 生产调优

    • 组件调优指南
    • 1v1指导调优
  • 支持&共建

    • 蓝图愿景
    • 技术支持
    • 合作共建
登陆
GitHub (opens new window)

JaneTTR

数据酿造智慧,每一滴都是沉淀!
首页
  • 部署专题

    • 常规安装
    • 一键部署
  • 组件安装

    • 常规&高可用
  • 版本专题

    • 更新说明
  • Ambari-Env

    • 环境准备
    • 开始使用
  • 组件编译

    • 专区—Ambari
    • 专区—Bigtop-官方组件
    • 专区—Bigtop-扩展组件
  • 报错解决

    • 专区—Ambari
    • 专区—Bigtop
  • 其他技巧

    • Maven镜像加速
    • Gradle镜像加速
    • Bower镜像加速
    • 虚拟环境思路
    • R环境安装+一键安装脚本
    • Ivy配置私有镜像仓库
    • Node.js 多版本共存方案
    • Ambari Web本地启动
    • Npm镜像加速
    • PostgreSQL快速安装
    • Temurin JDK 23快速安装
  • 成神之路

    • 专区—Ambari
    • 专区—Bigtop
  • 集成案例

    • Redis集成教学
    • Dolphin集成教学
    • Doris集成教学
    • 持续整理...
  • 核心代码

    • 各组件代码
    • 通用代码模板
  • 国产化&其他系统

    • Rocky系列
    • Ubuntu系列
  • 生产调优

    • 组件调优指南
    • 1v1指导调优
  • 支持&共建

    • 蓝图愿景
    • 技术支持
    • 合作共建
登陆
GitHub (opens new window)
  • Sqoop编译

  • Ranger编译

  • Phoenix编译

  • Dolphinscheduler编译

  • Doris编译

  • Cloudbeaver编译

  • Atlas编译

  • Superset编译

  • Celeborn编译

  • Ozone编译

  • Impala编译

    • version-4.4.1

      • Impala_4.4.1 编译
      • [O] Impala 版本适配改造(一)
      • [O] Impala 版本适配改造(二)
      • [O] Impala 版本适配改造(三)
      • [B] Impala 版本适配改造(一)
      • [B] Impala 版本适配改造(二)
      • [B] Impala 版本适配改造(三)
        • 第二步:Relocated Jar 兼容修复
          • 改造核心说明
          • 架构理解
        • 补丁文件与内容
      • [B] Impala 版本适配改造(四)
  • Trino编译

  • Paimon编译

  • Hudi编译

  • 组件编译-Bigtop-增强
  • Impala编译
  • version-4.4.1
JaneTTR
2025-05-06
目录

[B] Impala 版本适配改造(三)

# 第二步:Relocated Jar 兼容修复

本节聚焦在 Hadoop 3.3.4 升级后引入的 relocated jar 路径变动问题,例如 protobuf、guava 这些常用依赖,经常在大版本升级后出现包名变化或 shaded jar 的“重定位”现象,导致 Impala 源码无法直接编译通过。

场景在 Hadoop3 适配中极为常见,务必引起重视!


# 改造核心说明

提示

主要修复思路为统一依赖路径,全部切换为新版兼容的 groupId,同时修正 pom.xml 依赖与实际 import 路径,避免 shaded/repackaged 引起的类冲突。

本补丁具体修复点如下:

变更项 说明
commons-lang 从 org.apache.commons.lang ➡️ org.apache.commons.lang3
protobuf Struct 从 com.cloudera.cloud.storage.relocated.protobuf ➡️ com.google.protobuf
guava Lists 从 org.apache.iceberg.relocated.com.google.common.collect ➡️ com.google.common.collect
fe/pom.xml 依赖 新增 protobuf-java 3.19.1 明确版本依赖,兼容新 Hadoop3 生态
必改 这些都是编译期的 hard break,不做迁移直接 build fail!

# 架构理解

下面这张图可以直观理解Impala 构建依赖链路下 relocated jar 的影响路径:

relocated-jar依赖路径变更影响示意

  • 最终目的是所有依赖的实际类加载都能走新版的标准路径,消除 shaded 包冲突

笔记

类似的 relocated jar 问题,在 Hadoop 3.x 生态(尤其是 Spark、Flink、HBase)也大量存在,建议养成遇到编译期依赖冲突时,优先核查 jar 包重定位和 groupId 变更。

# 补丁文件与内容

  • 位置: bigtop-packages/src/common/impala/patch1-RELOCATED-JAR-FIXED.diff

  • 内容如下:

Subject: [PATCH] optimized: 处理hadoop 3.3.4 不兼容问题
---
Index: java/TableFlattener/src/main/java/org/apache/impala/infra/tableflattener/SchemaFlattener.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/java/TableFlattener/src/main/java/org/apache/impala/infra/tableflattener/SchemaFlattener.java b/java/TableFlattener/src/main/java/org/apache/impala/infra/tableflattener/SchemaFlattener.java
--- a/java/TableFlattener/src/main/java/org/apache/impala/infra/tableflattener/SchemaFlattener.java	(revision 57b8347ef66abdb645badf925d8150e2a32f0e44)
+++ b/java/TableFlattener/src/main/java/org/apache/impala/infra/tableflattener/SchemaFlattener.java	(date 1740982071128)
@@ -23,7 +23,7 @@
 import org.apache.avro.Schema.Field;
 import org.apache.avro.Schema.Type;
 import org.apache.avro.generic.GenericRecord;
-import org.apache.commons.lang.NotImplementedException;
+import org.apache.commons.lang3.NotImplementedException;
 import org.apache.hadoop.conf.Configuration;
 import org.kitesdk.data.Dataset;
 import org.kitesdk.data.DatasetDescriptor;
Index: fe/src/main/java/org/apache/impala/util/IcebergMetadataScanner.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/fe/src/main/java/org/apache/impala/util/IcebergMetadataScanner.java b/fe/src/main/java/org/apache/impala/util/IcebergMetadataScanner.java
--- a/fe/src/main/java/org/apache/impala/util/IcebergMetadataScanner.java	(revision 57b8347ef66abdb645badf925d8150e2a32f0e44)
+++ b/fe/src/main/java/org/apache/impala/util/IcebergMetadataScanner.java	(date 1740966368026)
@@ -17,7 +17,7 @@

 package org.apache.impala.util;

-import com.cloudera.cloud.storage.relocated.protobuf.Struct;
+import com.google.protobuf.Struct;;
 import com.google.common.base.Preconditions;

 import java.util.Iterator;
Index: fe/src/main/java/org/apache/impala/util/IcebergSchemaConverter.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/fe/src/main/java/org/apache/impala/util/IcebergSchemaConverter.java b/fe/src/main/java/org/apache/impala/util/IcebergSchemaConverter.java
--- a/fe/src/main/java/org/apache/impala/util/IcebergSchemaConverter.java	(revision 57b8347ef66abdb645badf925d8150e2a32f0e44)
+++ b/fe/src/main/java/org/apache/impala/util/IcebergSchemaConverter.java	(date 1740970508500)
@@ -30,7 +30,7 @@
 import org.apache.iceberg.PartitionSpec;
 import org.apache.iceberg.Schema;
 import org.apache.iceberg.hive.HiveSchemaUtil;
-import org.apache.iceberg.relocated.com.google.common.collect.Lists;
+import com.google.common.collect.Lists;
 import org.apache.iceberg.types.Types;
 import org.apache.impala.analysis.IcebergPartitionField;
 import org.apache.impala.analysis.IcebergPartitionSpec;
Index: fe/src/main/java/org/apache/impala/util/MigrateTableUtil.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/fe/src/main/java/org/apache/impala/util/MigrateTableUtil.java b/fe/src/main/java/org/apache/impala/util/MigrateTableUtil.java
--- a/fe/src/main/java/org/apache/impala/util/MigrateTableUtil.java	(revision 57b8347ef66abdb645badf925d8150e2a32f0e44)
+++ b/fe/src/main/java/org/apache/impala/util/MigrateTableUtil.java	(date 1740970508491)
@@ -40,7 +40,7 @@
 import org.apache.iceberg.Table;
 import org.apache.iceberg.catalog.TableIdentifier;
 import org.apache.iceberg.data.TableMigrationUtil;
-import org.apache.iceberg.relocated.com.google.common.collect.Lists;
+import com.google.common.collect.Lists;
 import org.apache.impala.analysis.TableName;
 import org.apache.impala.catalog.FeCatalog;
 import org.apache.impala.catalog.FeFsPartition;
Index: fe/pom.xml
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/fe/pom.xml b/fe/pom.xml
--- a/fe/pom.xml	(revision 57b8347ef66abdb645badf925d8150e2a32f0e44)
+++ b/fe/pom.xml	(date 1740984830952)
@@ -613,6 +613,12 @@
       <version>1.72</version>
       <scope>test</scope>
     </dependency>
+
+    <dependency>
+      <groupId>com.google.protobuf</groupId>
+      <artifactId>protobuf-java</artifactId>
+      <version>3.19.1</version>
+    </dependency>
   </dependencies>

   <reporting>


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#Impala#依赖适配#Relocated Jar#Hadoop3
[B] Impala 版本适配改造(二)
[B] Impala 版本适配改造(四)

← [B] Impala 版本适配改造(二) [B] Impala 版本适配改造(四)→

最近更新
01
bigtop-select 打包缺 compat 报错修复 deb
07-16
02
bigtop-select 打包缺 control 文件报错修复 deb
07-16
03
首次编译-环境初始化 必装
07-16
更多文章>
Theme by Vdoing | Copyright © 2017-2025 JaneTTR | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式