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

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

相关文章:

如何在Ubuntu上直接编译Apache Doris

以下是在 Ubuntu 22.04 上直接编译 Apache Doris 的完整流程,综合多个版本和环境的最佳实践: 注意:Ubuntu的数据盘VMware默认是20G,编译不够用,给到50G以上吧 一、环境准备 1. 安装系统依赖 # 基础构建工具链 apt i…...

基于ssm的物资进销存(全套)

现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本货物进销管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息&#…...

【CVPR2025】 EVSSM:用状态空间模型高效去模糊

Efficient Visual State Space Model for Image Deblurring 论文信息 题目: Efficient Visual State Space Model for Image Deblurring 用于图像去模糊的高效视觉状态空间模型 源码:https://github.com/kkkls/EVSSM 创新点 提出了高效视觉状态空间模型…...

动态规划--斐波那契类型

目录 前言 1 第N个斐波那契数 2 爬楼梯 3 三步问题 4 使用最小花费爬楼梯 5 解码方法 总结 前言 本篇所讲的几个题目都是与斐波那契数的做法与思路类似的题目,所以直接放在一块解决了。 同时,由于第一次接触动态规划,我们也会讲解一…...

supervisord管理Gunicorn进程,使用Nginx作为反向代理运行flask web项目

1. 安装 Gunicorn 在项目虚拟环境中安装 Gunicorn:2. 基本用法 配置文件 创建一个 Gunicorn 配置文件(如 gunicorn_config.py),方便管理复杂配置。 示例 gunicorn_config.py: bind "0.0.0.0:8000" #…...

《Python实战进阶》No16: Plotly 交互式图表制作指南

No16: Plotly 交互式图表制作指南 Plotly是一款用来做数据分析和可视化的在线平台,功能真的是非常强大,它主要有以下特点: 图形多样化:在线绘制多种图形,比如柱状图、饼图、直方图、饼图、气泡图、桑基图、股票图、旭…...

代码随想录算法训练营第22天 | 组合总和 分割回文串

39. 组合总和 39. 组合总和 - 力扣(LeetCode) 题目链接/文章讲解:代码随想录 视频讲解:带你学透回溯算法-组合总和(对应「leetcode」力扣题目:39.组合总和)| 回溯法精讲!_哔哩哔哩_…...

DeepSeek 医疗大模型微调实战讨论版(第一部分)

DeepSeek医疗大模型微调实战指南第一部分 DeepSeek 作为一款具有独特优势的大模型,在医疗领域展现出了巨大的应用潜力。它采用了先进的混合专家架构(MoE),能够根据输入数据的特性选择性激活部分专家,避免了不必要的计算,极大地提高了计算效率和模型精度 。这种架构使得 …...

Linux云计算SRE-第十七周

1. 做三个节点的redis集群。 1、编辑redis节点node0(10.0.0.100)、node1(10.0.0.110)、node2(10.0.0.120)的安装脚本 [rootnode0 ~]# vim install_redis.sh#!/bin/bash # 指定脚本解释器为bashREDIS_VERSIONredis-7.2.7 # 定义Redis的版本号PASSWORD123456 # 设置Redis的访问…...

lvgl在ubuntu中模拟运行

文章目录 前言具体的步骤 前言 lvgl是一个图像UI的开源框架,用于嵌入式的设备之中。 在学习lvgl时,我们最好是现在PC上模拟运行,所以我们学习lvgl的第一步可以说是在我们的电脑上搭建模拟的运行环境。 参考官方的操作 lvgl在ubuntu上模拟运…...

Unity引擎使用HybridCLR(华佗)热更新

大家好,我是阿赵。   阿赵我做手机游戏已经有十几年时间了。记得刚开始从做页游的公司转到去做手游的公司,在面试的时候很重要的一个点,就是会不会用Lua。使用Lua的原因很简单,就是为了热更新。   热更新游戏内容很重要。如果…...

【Linux】权限相关知识点

思考 我们平时使用Linux创建文件或目录时的默认权限是多少? [rootlocalhost test]# mkdir dir [rootlocalhost test]# touch file [rootlocalhost test]# ll total 0 drwxr-xr-x 2 root root 6 Mar 8 15:23 dir #755 -rw-r--r-- 1 root root 0 Mar 8 15:23 f…...

Vue项目通过内嵌iframe访问另一个vue页面,获取token适配后端鉴权(以内嵌若依项目举例)

1. 改造子Vue项目进行适配(ruoyi举例) (1) 在路由文件添加需要被外链的vue页面配置 // 若依项目的话是 router/index.js文件 {path: /contrast,component: () > import(/views/contrast/index),hidden: true },(2) 开放白名单 // 若依项目的话是 permission.js 文件 cons…...

vue3 vite项目安装eslint

npm install eslint -D 安装eslint库 npx eslint --init 初始化配置,按项目实际情况选 自动生成eslint.config.js,可以添加自定义rules 安装ESLint插件 此时打开vue文件就会标红有问题的位置 安装prettier npm install prettier eslint-config-pr…...

Python Flask框架学习汇编

1、入门级: 《Python Flask Web 框架入门》 这篇博文条理清晰,由简入繁,案例丰富,分十五节详细讲解了Flask框架,强烈推荐! 《python的简单web框架flask【附例子】》 讲解的特别清楚,每一步都…...

Excel·VBA江西省预算一体化工资表一键处理

每月制作工资表导出为Excel后都需要调整格式,删除0数据的列、对工资表项目进行排序、打印设置等等,有些单位还分有“行政”、“事业”2个工资表就需要操作2次。显然,这种重复操作的问题,可以使用VBA代码解决 目录 代码使用说明1&a…...

【A2DP】SBC 编解码器互操作性要求详解

目录 一、SBC编解码器互操作性概述 二、编解码器特定信息元素(Codec Specific Information Elements) 2.1 采样频率(Sampling Frequency) 2.2 声道模式(Channel Mode) 2.3 块长度(Block Length) 2.4 子带数量(Subbands) 2.5 分配方法(Allocation Method) 2…...

redis数据类型以及底层数据结构

redis数据类型以及底层数据结构 String:字符串类型,底层就是动态字符串,使用sds数据结构 Map:有两种数据结构:1.压缩列表:当hash结构中存储的元素个数小于了512个。并且元 …...

R软件线性模型与lmer混合效应模型对生态学龙类智力测试数据层级结构应用

全文链接:https://tecdat.cn/?p40925 在生态与生物学研究中,数据常呈现复杂结构特征。例如不同种群、采样点或时间序列的观测数据间往往存在相关性(点击文末“阅读原文”获取完整代码、数据、文档)。 传统线性模型在处理这类非独…...

打造智能聊天体验:前端集成 DeepSeek AI 助你快速上手

DeepSeek AI 聊天助手集成指南 先看完整效果: PixPin_2025-02-19_09-15-59 效果图: 目录 项目概述功能特点环境准备项目结构组件详解 ChatContainerChatInputMessageBubbleTypeWriter 核心代码示例使用指南常见问题 项目概述 基于 Vue 3 TypeScrip…...

C语言-语法

数据类型 字符串 C中字符串拼接不用+号,直接使用空格。 char* str = "hello" "world"; 换行链接,加上\就不会报错 char* longStr = "00000000000000000000000000000\ 00000000000000000000000000000"; typedef C 语言提供了 typedef …...

Unity组件TrailRenderer屏幕滑动拖尾

Unity组件TrailRenderer屏幕滑动拖尾 介绍制作总结 介绍 今天要做一个拖动效果,正好用到了TrailRenderer这个组件,正好分享一下 效果参考如下: 制作 1.创建空物体TrailObject添加组件TrailRenderer 下面的材质可以根据自己想要制作的效果去…...

基于昇腾MindIE与GPUStack的大模型容器化部署从入门到入土

引言 昇腾MindIE作为华为面向大模型推理的高性能引擎,结合GPUStack的集群管理能力,能够实现多机多卡的高效资源调度与模型服务化部署。本文将以DeepSeek R1-32B模型为例,详细解析从环境准备到服务验证的全流程实践,涵盖昇腾NPU驱…...

大模型信息整理

1. Benchmarks Reasoning, conversation, Q&A benchmarks HellaSwagBIG-Bench HardSQuADIFEvalMuSRMMLU-PROMT-BenchDomain-specific benchmarks GPQAMedQAPubMedQAMath benchmarks GSM8KMATHMathEvalSecurity-related benchmarks PyRITPurple Llama CyberSecEval2. 国内外…...

【Tools】Windows下Git 2.48安装教程详解

00. 目录 文章目录 00. 目录01. Git简介02. Git参考资料03. Git安装04. Git测试05. 附录 01. Git简介 Git(读音为/gɪt/。)是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。 [1] Git 是 Linus Torvalds 为了帮助管理 Linux 内核…...

【linux网络编程】套接字编程API详细介绍

在C语言中&#xff0c;套接字&#xff08;Socket&#xff09;编程主要用于网络通信&#xff0c;尤其是在基于TCP/IP协议的应用程序开发中。常用的套接字编程API主要基于Berkeley Sockets&#xff08;伯克利套接字&#xff09;接口&#xff0c;这些函数通常在<sys/socket.h&g…...

护网中shiro常问的问题

1. 漏洞原理 Apache Shiro 是一个强大的 Java 安全框架&#xff0c;提供身份验证、授权、加密及会话管理功能。Shiro 使用 rememberMe 机制来存储用户会话信息&#xff0c;该机制依赖于加密后的 Cookie。当攻击者能够控制 Cookie 并且服务器使用了不安全的反序列化机制时&…...

fastapi房产销售系统

说明&#xff1a; 我希望用fastapi写几个接口&#xff0c;查询房产交易系统的几条数据&#xff0c;然后在postman里面测试 查询客户所有预约记录&#xff08;含房源信息&#xff09;需要对应销售经理查询客户所有订单&#xff08;含房源信息&#xff09;统计销售经理名下所有房…...

swift -(5) 汇编分析结构体、类的内存布局

一、结构体 在 Swift 标准库中&#xff0c;绝大多数的公开类型都是结构体&#xff0c;而枚举和类只占很小一部分 比如Bool、 Int、 Double、 String、 Array、 Dictionary等常见类型都是结构体 ① struct Date { ② var year: Int ③ var month: Int ④ …...

软件工程笔记下

从程序到软件☆ 章节 知识点 概论☆ 软件的定义&#xff0c;特点&#xff0c;生存周期。软件工程的概论。软件危机。 1.☆软件&#xff1a;软件程序数据文档 &#xff08;1&#xff09;软件&#xff1a;是指在计算机系统的支持下&#xff0c;能够完成特定功能与性能的包括…...