CDP Private Cloud Base 7.3.1 → Acceldata ODP 3.3.6.4 引擎迁移风险评估表
风险等级:🔴高风险(需大量代码改造,业务逻辑可能出错);🟡中风险(少量改造,回归测试必做);🟢低风险(基本兼容,仅验证)
一、Impala → Trino(核心高风险区)
表格
| 风险项 | 具体说明 | 风险等级 | 改造动作 |
|---|---|---|---|
| SQL 语法差异 | Impala 特有语法 Trino 不兼容:COMPUTE STATS、INVALIDATE METADATA/REFRESH TABLE、Kudu 的UPSERT/MERGE扩展语法、时间函数与字符串函数行为差异 |
🔴 | COMPUTE STATS→Trino ANALYZE;元数据刷新改用 Catalog 同步机制;Kudu UPSERT 逻辑重写;全量 SQL 脚本语法扫描,建立函数映射表 |
| 内置函数差异 | Impala 大量内置 UDF(日期、字符串、聚合)与 Trino 名称 / 返回类型不同;UDF 加载方式不同 | 🔴 | 整理 UDF 清单;自定义 UDF 重新打包适配 Trino;替换同名但行为不一致的函数 |
| 元数据缓存机制 | Impala 本地节点缓存表元数据与分区统计,低延迟;Trino 依赖 Hive Metastore,大表元数据加载延迟上升 | 🟡 | 优化 Metastore 性能;Trino Gateway 做连接池;分区表预加载元数据,必要时加 Metastore 缓存层 |
| Kudu 查询能力 | Impala 原生深度适配 Kudu,主键查询、增量更新性能极强;Trino Kudu 连接器能力有限 | 🔴 | 高频 Kudu 交互式查询评估是否保留独立方案;热点 Kudu 查询迁移至 Pinot 做实时指标 |
| 并发与资源隔离 | Impala 内置资源池、查询队列;Trino 原生隔离能力弱 | 🟡 | 部署 Trino Gateway,配置查询队列、内存限制、租户资源配额 |
| 事务支持 | Impala 支持 Kudu 行级事务;Trino 仅支持 Iceberg/Hudi 表级事务,不支持 Kudu 行事务 | 🔴 | Kudu 事务业务逻辑重新评估,部分场景需业务层实现幂等 |
二、Spark 3.5.4(CDP)→ Spark 4.1.1(ODP)
ODP 支持 Spark3 与 Spark4 共存,可分步迁移
表格
| 风险项 | 具体说明 | 风险等级 | 改造动作 |
|---|---|---|---|
| Scala 版本变更 | CDP Spark3.5 为 Scala 2.12;ODP Spark4 为 Scala 2.13;Jar 包、自定义 UDF、Listener 依赖 Scala 版本,二进制不兼容 | 🔴 | 所有自定义代码、UDF、第三方 Jar 重新编译为 Scala 2.13;先用 Spark3.5 并行运行,分批切换作业 |
| API 废弃与移除 | Spark4 废弃 RDD 部分方法、旧 Streaming、老 Hadoop 兼容 API;部分配置参数改名 / 移除 | 🟡 | 代码静态扫描,升级 Spark 代码替换废弃 API;核对 spark-defaults.conf 配置项 |
| SQL 行为变更 | Spark4 默认开启 ANSI 模式;类型转换、除零、空值处理行为与 CDP Spark3.5 不一致 | 🟡 | 开启 ANSI 校验做回归测试;可临时关闭 ANSI 过渡,长期建议适配 ANSI 规范 |
| Gluten 向量化兼容 | Gluten 对 SQL 算子有白名单,复杂算子不支持向量化时回退为原生 Spark | 🟡 | 核心 ETL 作业验证 Gluten;识别无法向量化的 SQL,单独关闭 Gluten |
| Celeborn RSS 迁移 | CDP 无内置 Celeborn;ODP 可开启 Celeborn,Shuffle 机制改变;硬编码本地 Shuffle 配置会冲突 | 🟡 | 分批试点开启 Celeborn;调整 spark.shuffle 参数,关闭本地磁盘 Shuffle 硬编码 |
| JDK 版本 | CDP Spark3 最高 JDK11;Spark4 推荐 JDK17;JDK17 模块机制导致旧 Jar 反射报错 | 🟡 | 测试环境 JDK17 全量验证;加 JDK17 反射兼容启动参数;Spark3 可继续用 JDK11 |
三、Hive 3.1.3(CDP)→ Hive 4.0.1(ODP)
表格
| 风险项 | 具体说明 | 风险等级 | 改造动作 |
|---|---|---|---|
| Metastore 元数据兼容性 | Hive4 Metastore schema 升级;CDP Hive3 为 Cloudera 定制分支,元数据表结构有少量私有扩展 | 🟡 | Metastore 升级前完整备份元数据库;先做元数据双向兼容性验证,不建议原地直接升级 Metastore |
| SQL 语法与执行引擎 | Hive4 默认执行引擎、向量化、时间函数行为变更;Tez 支持变化 | 🟡 | Hive SQL 回归测试;Tez 作业单独验证;可继续用 Spark 作为 Hive 查询引擎 |
| 表格式支持差异 | CDP Hive3:Iceberg 增强,Delta Lake 非原生;ODP Hive4:Iceberg/Hudi/Delta Lake 原生 | 🟢 | 存量 Iceberg/Hudi 表基本兼容;Delta Lake 表可直接注册,少量表属性需调整 |
四、Hadoop 底层 HDFS / YARN(CDP Hadoop3.4 定制版 vs ODP Hadoop3.3.6 社区版)
表格
| 风险项 | 具体说明 | 风险等级 | 改造动作 |
|---|---|---|---|
| HDFS 私有补丁 | CDP 内置大量 Cloudera 私有 HDFS HA、小文件、纠删码补丁;社区 3.3.6 没有这些修复 | 🟡 | 重点验证 HA 故障切换、海量小文件场景;高压力集群做长时间稳定性压测 |
| YARN 调度行为 | Cloudera YARN 调度策略、资源抢占行为定制;社区 YARN 行为略有差异 | 🟡 | 复制原有容量 / 公平调度配置,对比资源抢占逻辑,调整队列权重 |
| Ozone 迁移(可选) | CDP Ozone1.3;ODP Ozone2.1,元数据结构升级 | 🟡 | Ozone 元数据需迁移,不能原地升级;对象桶、S3 网关 API 基本兼容 |
五、湖仓表格式(Iceberg / Hudi / Delta Lake)
表格
| 风险项 | 具体说明 | 风险等级 | 改造动作 |
|---|---|---|---|
| Iceberg 版本差异 | CDP Iceberg1.5.2(Cloudera 增强);ODP Iceberg 社区版本 | 🟡 | Iceberg 表元数据可迁移;验证快照、分区演化、表回滚能力 |
| Hudi 版本差异 | CDP 内置 Hudi 版本;ODP Hudi 为社区版,打包版本不同 | 🟡 | Hudi 表读写兼容性测试;核对 Hudi 写入配置参数,部分参数改名 |
| Delta Lake | CDP 无官方 Delta 支持;ODP 原生支持 | 🟢 | 新增业务可直接使用 Delta;存量 CDP 无 Delta 表,不存在迁移负担 |
六、安全 & 元数据组件 Ranger / Atlas(补充表)
表格
| 风险项 | 具体说明 | 风险等级 | 改造动作 |
|---|---|---|---|
| Ranger 策略迁移 | CDP Ranger 有 Cloudera 扩展:行级过滤、列掩码、动态策略;ODP 原生 Apache Ranger 不支持 Cloudera 专属增强策略 | 🔴 | 基础表 / 列权限可导出导入;行级安全、数据脱敏策略需在 Trino/Hive 层重新实现 |
| Atlas 血缘 | CDP Atlas 有 Cloudera 增强血缘采集(Impala 查询血缘);ODP Atlas 原生,无 Impala,Trino 血缘需单独配置 | 🟡 | 原 Impala 血缘链路失效;部署 Trino 血缘采集插件,重建数据血缘 |