以下是在 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/
目錄,包含 be
、fe
、udf
等子目錄
? 部署文件:可直接將 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 # 默認無密碼
六、常見問題解決
-
編譯失敗: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
-
BE 啟動報錯:內存不足
修改be.conf
中的 JVM 參數:JAVA_OPTS="-Xms4g -Xmx8g" # 根據機器配置調整
注意事項
? 版本兼容性:Doris 3.x 需 JDK17,低版本需降級至 JDK8
? 硬件要求:生產環境建議 16GB+ 內存,SSD 存儲
? 集群擴展:通過 ALTER SYSTEM ADD BACKEND
添加更多 BE 節點
以上步驟已覆蓋 Ubuntu 直接編譯的核心流程,如需 Docker 容器化編譯,可參考官方鏡像文檔。