当前位置: 首页 > news >正文

如何在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 容器化编译,可参考官方镜像文档。

相关文章:

  • mysql虚拟列
  • 基于SpringBoot的商城管理系统(源码+部署教程)
  • .Net 6 上传文件接口 文件大小报错整体配置
  • ARMv8寄存器的介绍
  • 【十三】Golang 通道
  • 机器始终是一个机器:技术本质与哲学边界
  • l c a
  • 数据安全基石:备份文件的重要性与自动化实践
  • Elasticsearch:使用 BigQuery 提取数据
  • C语言-文件操作 文件的随机读写
  • Ubuntu 下 nginx-1.24.0 源码分析 - cycle->modules[i]->type
  • P8662 [蓝桥杯 2018 省 AB] 全球变暖--DFS
  • Nginx(基础安装+配置文件)
  • [PWNME 2025] PWN 复现
  • GPU编程实战指南02:CUDA开发快速上手示例
  • C++20 格式化库:强大的字符串格式化工具
  • 【网络】TCP常考知识点详解
  • IDEA Commit 模态提交界面关闭VS开启对比
  • 2025最新比较使用的ai工具都有哪些,分别主要用于哪些方面?
  • 静态时序分析STA——2. 数字单元库-(2)
  • 我的网站没备案怎么做淘宝客推广/短视频seo代理
  • 做视频点播网站如何赚钱/一手渠道推广平台
  • 荥阳市建设局 网站/免费网站seo优化
  • 备案名称网站名称/旅游网站的网页设计
  • 泉州哪家网站建设公司好/友情链接格式
  • 新手建网站/企业管理培训课程视频