如何在Ubuntu上直接編譯Apache Doris

以下是在 Ubuntu 22.04 上直接編譯 Apache Doris 的完整流程,綜合多個版本和環境的最佳實踐:


注意:Ubuntu的數據盤VMware默認是20G,編譯不夠用,給到50G以上吧

一、環境準備

1. 安裝系統依賴
# 基礎構建工具鏈
apt install vim -y
apt install openssh-server -y
apt install build-essential -y
apt install openjdk-8-jdk -y
apt install maven -y
apt install cmake -y
apt install byacc -y
apt install flex -y
apt install automake -y
apt install libtool-bin -y
apt install bison -y
apt install binutils-dev -y
apt install libiberty-dev -y
apt install zip -y
apt install unzip -y
apt install libncurses5-dev -y
apt install curl -y
apt install git -y
apt install ninja-build -y
# 采坑:我的系統默認裝完后/usr/bin下只有python2和python3,需要手動ln -s /usr/bin/python2 /usr/bin/python
apt install python -y
# 到了build.sh編譯報錯采坑,才知道還要裝clang
apt install clang -y
add-apt-repository ppa:ubuntu-toolchain-r/ppa
apt update
apt install gcc-10 g++-10 -y
apt-get install autoconf automake libtool autopoint -y
# python裝完后,需要手動軟連接下默認版本2
ln -s /usr/bin/python2 /usr/bin/python
2. 調整系統參數
# 修改最大文件句柄數(避免 BE 啟動失敗)
sudo sh -c 'echo "* soft nofile 65536" >> /etc/security/limits.conf'
sudo sh -c 'echo "* hard nofile 65536" >> /etc/security/limits.conf'
ulimit -n 65536  # 臨時生效# 調整虛擬內存映射限制
sudo sysctl -w vm.max_map_count=2000000
sudo sh -c 'echo "vm.max_map_count=2000000" >> /etc/sysctl.conf'

二、源碼獲取與配置

1. 克隆源碼
# github或者官網下載源碼都行:https://doris.apache.org/download/
git clone https://github.com/apache/doris.git
# 瀏覽器下載:https://downloads.apache.org/doris/2.1/2.1.8.1/apache-doris-2.1.8.1-src.tar.gz
cd doris
2. 統一下載第三方包,本機公網下載
wget https://github.com/apache/doris-thirdparty/releases/download/automation/doris-thirdparty-source.tgz
# 采坑:上邊的包默認還少2個包,需要單獨下載:
wget https://github.com/apache/doris-thirdparty/archive/refs/tags/hadoop-3.3.6.3-for-doris.tar.gz
wget https://github.com/intel/hyperscan/archive/refs/tags/v5.4.2.tar.gz
# doris-thirdparty-hadoop-3.3.6.3-for-doris.tar.gz需要mv改名為hadoop-3.3.6.3-for-doris.tar.gz

將上面的包解壓后,會生成一個src目錄,下面放得所有3方依賴的gz包,cp到${doris_home}/thirdparty/src/下面

tar -zxvf doris-thirdparty-source.tgz
mv src/* ${DORIS_HOME}/thirdparty/
# 注意:不要漏了上面采坑的兩個gz包:\
# hadoop-3.3.6.3-for-doris.tar.gz和hyperscan-5.4.2.tar.gz
3. 配置java編譯環境(如若沒有)
# 設置 Java 環境變量(根據實際路徑調整),Doris2.X需要jdk1.8,master版本需要jdk17+
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
exprot DORIS_HOME=${doris_home:默認你的doris下載包的路徑}

三、編譯流程

1. 編譯第三方依賴,依賴從GitHub上下載三方包,二.2操作后,忽略下面步驟
# 如果已經離線下載,這步不需要執行
cd ${doris_home}/thirdparty
./build-thirdparty.sh  # 自動下載并編譯 gflags/glog 等依賴
2. 編譯 Doris 核心組件
cd ${doris_home}
# 支持 AVX2 的機器(默認)
# sh build.sh --clean --be --fe  # 首次編譯建議加 --clean
# 上面步驟采坑,如果用的操作系統是Ubuntu,執行build.sh使用bash,不然報錯
# 編譯這一步預計得個幾十分鐘,主要看編譯機器的配置
bash build.sh# 不支持 AVX2 的機器(如虛擬機)
USE_AVX2=0 sh build.sh --be --fe
3. 編譯輸出

? 編譯產物:位于 output/ 目錄,包含 befeudf 等子目錄
? 部署文件:可直接將 output 目錄拷貝到生產環境使用


四、安裝與啟動

1. FE 配置與啟動
# 修改配置文件 fe/conf/fe.conf
meta_dir = /opt/doris/fe/meta  # 元數據存儲路徑
priority_networks = 192.168.1.0/24  # 綁定 IP 段# 啟動 FE(需提前創建元數據目錄)
mkdir -p /opt/doris/fe/meta
./output/fe/bin/start_fe.sh --daemon
2. BE 配置與啟動
# 修改配置文件 be/conf/be.conf
storage_root_path = /opt/doris/be/storage  # 數據存儲路徑# 啟動 BE
mkdir -p /opt/doris/be/storage
./output/be/bin/start_be.sh --daemon

五、驗證與調試

1. 檢查服務狀態
# 查看 FE 日志
tail -f output/fe/log/fe.log# 查看 BE 日志
tail -f output/be/log/be.out
2. 通過 MySQL 客戶端連接
mysql -h 127.0.0.1 -P 9030 -uroot  # 默認無密碼

六、常見問題解決

  1. 編譯失敗:protobuf 版本沖突
    手動安裝 Protocol Buffers 3.21.12 并更新動態鏈接庫:

    wget https://github.com/protocolbuffers/protobuf/releases/download/v3.21.12/protobuf-3.21.12.tar.gz
    tar zxvf protobuf-3.21.12.tar.gz && cd protobuf-3.21.12
    ./configure --prefix=/usr/local && make -j$(nproc) && sudo make install
    sudo ldconfig
    
  2. BE 啟動報錯:內存不足
    修改 be.conf 中的 JVM 參數:

    JAVA_OPTS="-Xms4g -Xmx8g"  # 根據機器配置調整
    

注意事項

? 版本兼容性:Doris 3.x 需 JDK17,低版本需降級至 JDK8
? 硬件要求:生產環境建議 16GB+ 內存,SSD 存儲
? 集群擴展:通過 ALTER SYSTEM ADD BACKEND 添加更多 BE 節點

以上步驟已覆蓋 Ubuntu 直接編譯的核心流程,如需 Docker 容器化編譯,可參考官方鏡像文檔。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/72801.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/72801.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/72801.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

vuejs相關鏈接和格式化插件推薦

vue官網: https://cn.vuejs.org/ 配合路由設置: https://router.vuejs.org/zh/guide/ element plus (vue3) | element UI (vue2): https://element-plus.org/zh-CN/#/zh-CN 構建工具vite: https://cn.vitejs.dev/ 右鍵選擇…

IDEA中Git版本回退終極指南:Reset與Revert雙方案詳解

目錄 前言一、版本回退前置知識二、Reset方案:整體改寫歷史1、IDEA圖形化操作(推薦)1.1、查看提交歷史1.2、選擇目標版本1.3、選擇回退模式1.3.1、Soft(推薦)1.3.2、Mixed1.3.3、Hard(慎用)1.3.…

PHP并發請求優化:使用`curl_multi_select()`實現高效的多請求處理

PHP并發請求優化:使用curl_multi_select()實現高效的多請求處理 背景 最近在項目中遇到一個需求,需要從多個 1 級網站(超過 200 個)獲取數據,并且是通過 POST 請求瞬間發送到這些網站上。開始時我直接使用了 curl_ex…

【leetcode hot 100 206】反轉鏈表

解法一:(頭插法)在遍歷鏈表時,將當前節點的 next 指針改為指向前一個節點。 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val)…

【QT】-易錯點筆記-2025-2-7

1,QList<phy_simulator*> pList;為空不能append()追加,要先new,再用 QList<phy_simulator> pList為空時,確實不能調用 append() 方法。原因很簡單,QList 是一個類對象,在 C++ 中,指針本身并不代表它指向的對象。因此,當你有一個指向 QList<phy_simulato…

AI-Deepseek + PPT

01--Deepseek提問 首先去Deepseek問一個問題&#xff1a; Deepseek的回答&#xff1a; 在汽車CAN總線通信中&#xff0c;DBC文件里的信號處理&#xff08;如初始值、系數、偏移&#xff09;主要是為了 將原始二進制數據轉換為實際物理值&#xff0c;確保不同電子控制單元&…

實驗一:在Windows 10/11下配置和管理TCP/IP

目錄 1.【實訓目標】 2.【實訓環境】 3.【實訓內容】 4.【實訓步驟】 1.【實訓目標】 1.了解網絡基本配置中包含的協議、服務、客戶端。 2.了解Windows支持的網絡協議及參數設置方法。 3.掌握TCP/IP協議的配置。 2.【實訓環境】 硬件環境&#xff1a;每人一臺計算機&a…

Java直通車系列14【Spring MVC】(深入學習 Controller 編寫)

目錄 基本概念 編寫 Controller 的步驟和要點 1. 定義 Controller 類 2. 映射請求 3. 處理請求參數 4. 調用業務邏輯 5. 返回響應 場景示例 1. 簡單的 Hello World 示例 2. 處理路徑變量和請求參數 3. 處理表單提交 4. 處理 JSON 數據 5. 異常處理 基本概念 Cont…

EA - 開源工程的編譯

文章目錄 EA - 開源工程的編譯概述筆記環境備注x86版本EABase_x86EAAssert_x86EAThread_x86修改 eathread_atomic_standalone_msvc.h原始修改后 EAStdC_x86EASTL_x86EAMain_x86EATest_x86備注備注END EA - 開源工程的編譯 概述 EA開源了‘命令與征服’的游戲源碼 嘗試編譯. 首…

一招解決Pytorch GPU版本安裝慢的問題

Pytorch是一個流行的深度學習框架&#xff0c;廣泛應用于計算機視覺、自然語言處理等領域。安裝Pytorch GPU版本可以充分利用GPU的并行計算能力&#xff0c;加速模型的訓練和推理過程。接下來&#xff0c;我們將詳細介紹如何在Windows操作系統上安裝Pytorch GPU版本。 查看是否…

為解決局域網IP、DNS切換的Windows BAT腳本

一、背景 為解決公司普通人員需要切換IP、DNS的情況&#xff0c;于是搞了個windows下的bat腳本&#xff0c;可以對有線網絡、無線網絡進行切換設置。 腳本內容 echo off title 多網絡接口IP切換工具:menu cls echo echo 請選擇要配置的網絡接口: echo echo 1. 有線網絡&am…

uni_app實現下拉刷新

1. 在頁面配置中啟用下拉刷新 首先&#xff0c;你需要在頁面的 pages.json 文件中啟用下拉刷新功能。 {"pages": [{"path": "pages/index/index","style": {"navigationBarTitleText": "首頁","enablePull…

OpenCV計算攝影學(14)實現對比度保留去色(Contrast Preserving Decolorization)的函數decolor()

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 將彩色圖像轉換為灰度圖像。它是數字印刷、風格化的黑白照片渲染&#xff0c;以及許多單通道圖像處理應用中的基本工具。 cv::decolor 是 OpenCV…

Qt常用控件之 縱向列表QListWidget

縱向列表QListWidget QListWidget 是一個縱向列表控件。 QListWidget屬性 屬性說明currentRow當前被選中的是第幾行。count一共有多少行。sortingEnabled是否允許排序。isWrapping是否允許換行。itemAlignment元素的對齊方式。selectRectVisible被選中的元素矩形是否可見。s…

關于 QPalette設置按鈕背景未顯示出來 的解決方法

若該文為原創文章&#xff0c;轉載請注明原文出處 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/146047054 長沙紅胖子Qt&#xff08;長沙創微智科&#xff09;博文大全&#xff1a;開發技術集合&#xff08;包含Qt實用技術、樹莓派、三維、OpenCV…

PostgreSQL 安裝與使用

下載地址: EDB: Open-Source, Enterprise Postgres Database Management 安裝圖形化安裝界面安裝。安裝完后將bin目錄配置到系統環境變量 執行psql -h localhost -p 5432 -U postgres 密碼在安裝過程中設置的 ? 0、修改密碼 ALTER USER sonar WITH PASSWORD 123456; 1、新…

【基礎3】快速排序

核心思路 快速排序是Java中Arrays.sort()的實現原理&#xff0c;采用分治策略&#xff0c;通過選擇基準元素&#xff0c;將數組分為兩個子數組&#xff0c;使得左邊元素 ≤ 基準元素 ≤ 右邊元素&#xff0c;然后遞歸排序子數組。 舉個簡單的例子&#xff0c;圖書管理員需要按…

FreeSWITCH 簡單圖形化界面40 - 使用mod_curl模塊進行http請求

FreeSWITCH 簡單圖形化界面40 - 使用mod_curl模塊進行http請求 0、界面預覽00、簡介1、編譯安裝1.1 編輯模塊配置文件 2、使用2.1 撥號規則GET 請求POST 請求JSON 數據 2.2 Lua 腳本GET 請求POST 請求JSON 數據 3 、示例3.1 示例 1&#xff1a;提交 CDR 到第三方接口3.2 示例 2…

Linux 開發工具

linux中&#xff0c;常見的軟件安裝方式---下載 yum/apt.rpm安裝包安裝源碼安裝 yum 查看軟件包 通過yumlist命令可以羅列出當前?共有哪些軟件包.由于包的數?可能?常之多,這?我們需要使? grep 命令只篩選出我們關注的包.例如: # Centos $ yum list | grep lrzsz lr…

Agent革命:Manus如何用工作流拆解掀起AI生產力革命

一、現象級產品的誕生背景 2025年3月6日&#xff0c;一款名為Manus的AI產品在技術圈引發地震式傳播。其官方測試數據顯示&#xff1a;在GAIA基準測試中&#xff0c;基礎任務準確率達86.5%&#xff08;接近人類水平&#xff09;&#xff0c;中高級任務完成率突破57%。這標志著A…