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编译

    • version-2.1.7

      • Doris_2.1.7 编译
      • [O] Doris 版本适配改造(一)
      • [O] Doris 版本适配改造(二)
        • 1. 背景与目标
        • 2. 关键 diff 与实现
        • 3. 为什么要禁用自动拉包?
        • 4. 推荐第三方依赖管理方案
          • 常见 thirdparty 目录结构示例
        • 5. 编译流程变化与使用说明
        • 6. 固定依赖包资源说明
        • 7. 完整 diff 见下方:
      • [B] Doris 版本适配改造(一)
      • [B] Doris 版本适配改造(二)
      • [B] Doris 版本适配改造(三)
  • Cloudbeaver编译

  • Atlas编译

  • Superset编译

  • Celeborn编译

  • Ozone编译

  • Impala编译

  • Trino编译

  • Paimon编译

  • Hudi编译

  • 组件编译-Bigtop-增强
  • Doris编译
  • version-2.1.7
JaneTTR
2025-05-07
目录

[O] Doris 版本适配改造(二)

# 1. 背景与目标

在 Doris 官方的 build.sh 构建流程中,默认会通过 update_submodule 自动从 github 拉取 apache-orc、clucene 等第三方子包。看似省事,但实际有如下致命隐患:

警告

第三方子包的 HEAD 或分支内容经常变更,随时间推移,同一份构建脚本每次拉取到的内容可能都不同,最终导致编译结果不可重现!

# 2. 关键 diff 与实现

本次 patch 的主要变更点非常直接:

-    update_submodule "be/src/apache-orc" "apache-orc" "https://ghgo.xyz/https://github.com/apache/doris-thirdparty/archive/refs/heads/orc.tar.gz"
-    update_submodule "be/src/clucene" "clucene" "https://ghgo.xyz/https://github.com/apache/doris-thirdparty/archive/refs/heads/clucene.tar.gz"
+#    update_submodule "be/src/apache-orc" "apache-orc" "https://ghgo.xyz/https://github.com/apache/doris-thirdparty/archive/refs/heads/orc.tar.gz"
+#    update_submodule "be/src/clucene" "clucene" "https://ghgo.xyz/https://github.com/apache/doris-thirdparty/archive/refs/heads/clucene.tar.gz"
1
2
3
4

即,直接注释掉了 update_submodule 相关自动下载逻辑,彻底杜绝第三方包内容漂移带来的风险。 但带来编译一致性的大幅提升。

# 3. 为什么要禁用自动拉包?

问题现象 原因分析 风险等级
子包内容变化,导致二次编译出包内容不同 github 分支或 tag 可随时被重写 高
某些第三方包被删除,导致编译中断 官方并未保障老分支包的永久可用性 高
CI/CD 自动化跑不通/环境不稳定 网络或镜像加速依赖仍有不确定性 中

注意

自动拉包机制在开源环境下从来不是可重现构建的保障方案。生产环境务必手动下载、固化依赖内容!

# 4. 推荐第三方依赖管理方案

建议采用手动或平台固化的方式管理 thirdparty 依赖包,具体做法如下:

  1. 统一下载所有 thirdparty 包,版本内容由研发或运维团队自控;
  2. 放置到本地/私有对象存储/Nexus/YUM 仓库等目录,并对外暴露只读链接;
  3. 所有构建脚本统一指向该固化目录,不再依赖网络和外部源内容漂移;
  4. 如需升级第三方包,严格通过审批/变更,保障每一次构建可溯源。

# 常见 thirdparty 目录结构示例

thirdparty/
  ├── apache-orc-xxx.tar.gz
  ├── clucene-xxx.tar.gz
  ├── ...
1
2
3
4

若需本地一键初始化 thirdparty 目录,可结合自定义 shell 脚本实现,详见本站其他组件离线包方案。

image-20250622113326251

# 5. 编译流程变化与使用说明

禁用自动拉包后,首次构建时如遇包缺失,需手动提前下载好对应 tar.gz 放入目标目录,否则会提示找不到依赖。

提示

这样虽然首次维护成本略有提升,但每一次的 Doris 编译结果都可以做到完全可控、可重现!强一致性

# 6. 固定依赖包资源说明

目前,Doris 编译所需的 所有 thirdparty 依赖包我们已全部提前下载并在本地固化管理,确保每次构建环境完全一致。

笔记

如需获取同款可用的 thirdparty 固定依赖包,或希望复现文中构建环境,欢迎联系作者。环境包分享 我们可根据需求协助提供内部归档包或自助初始化脚本,助你一键还原生产环境。

作者联系方式见首页

# 7. 完整 diff 见下方:

Subject: [PATCH] optimized: 不使用 doris 的 下载子包,因为子包会变
---
Index: build.sh
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/build.sh b/build.sh
--- a/build.sh	(revision 37f5d3ec9fb2933345c4411d9a581c84062f3de6)
+++ b/build.sh	(date 1736594835875)
@@ -501,8 +501,8 @@

 # Clean and build Backend
 if [[ "${BUILD_BE}" -eq 1 ]]; then
-    update_submodule "be/src/apache-orc" "apache-orc" "https://ghgo.xyz/https://github.com/apache/doris-thirdparty/archive/refs/heads/orc.tar.gz"
-    update_submodule "be/src/clucene" "clucene" "https://ghgo.xyz/https://github.com/apache/doris-thirdparty/archive/refs/heads/clucene.tar.gz"
+#    update_submodule "be/src/apache-orc" "apache-orc" "https://ghgo.xyz/https://github.com/apache/doris-thirdparty/archive/refs/heads/orc.tar.gz"
+#    update_submodule "be/src/clucene" "clucene" "https://ghgo.xyz/https://github.com/apache/doris-thirdparty/archive/refs/heads/clucene.tar.gz"
     if [[ -e "${DORIS_HOME}/gensrc/build/gen_cpp/version.h" ]]; then
         rm -f "${DORIS_HOME}/gensrc/build/gen_cpp/version.h"
     fi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#Doris#源码编译#子包管理#构建稳定性
[O] Doris 版本适配改造(一)
[B] Doris 版本适配改造(一)

← [O] Doris 版本适配改造(一) [B] Doris 版本适配改造(一)→

最近更新
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
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式