如何在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.mzph.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…