news 2026/4/18 16:05:52

【Doris】Doris 简介、编译、安装

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Doris】Doris 简介、编译、安装

1.概述

Apache Doris 由百度大数据部研发(之前叫百度 Palo 2018 年贡献到 Apache 社区后,更名为 Doris ),在百度内部,有超过200个产品线在使用,部署机器超过1000台,单一业务最大可达到上百 TB。

Apache Doris 是一个现代化的 MPP (Massively Parallel Processing,即大规模并行处理)分析型数据库产品。仅需亚秒级响应时间即可获得查询结果,有效地支持实时数据分析。

Apache Doris 的分布式架构非常简洁,易于运维,并且可以支持 10PB以上的超大数据集。

Apache Doris 可以满足多种数据分析需求,例如固定历史报表,实时数据分析,交互式数据分析和探索式数据分析等。


2.Doris架构


Doris 的架构很简洁,只设 FE(Frontend)、BE(Backend)两种角色、两个进程外部组件,方便部署和运维,FE、BE 都可线性扩展。

FE (Frontend):存储、维护集群元数据;负责接收、解析查询请求,规划查询计划,调度查询执行,返回查询结果。主要有三个角色:

  • Leader 和 Follower:主要是用来达到元数据的高可用,保证单节点宕机的情况下,元数据能够实时地在线恢复,而不影响整个服务。心

  • Observer:用来扩展查询节点,同时起到元数据备份的作用。如果在发现集群压力非常大的情况下,需要去扩展整个查询的能力,那么可以加 observer 的节点。observer 不参与任何写入,只参与读取。

BE (Backend):负责物理数据的存储和计算;依据 FE 生成的物理计划,分布式地执行查询。

数据的可靠性由 BE 保证,BE 会对整个数据存储多副本或者是三副本。副本数可根据需求动态调整。

MySQL Client

Doris 借助 MySQL 协议,用户使用任意 MySQL 的 ODBC/JDBC 以及 MySQL 的客户端,都可以直接访问 Doris。

Broker

Broker 为一个独立的无状态进程。封装了文件系统接口,提供 Doris 读取远端存储系统中文件的能力,包括 HDFS,S3,BOS 等。

3.编译与安装

安装 Doris,需要先通过源码编译荐。

主要有两种方式:使用 Docker 开发镜像编译(推荐)直接编译的方式,直接编译。

可以参考官网:https://doris.apache.org/

3.1 安装Docker 环境

1) Docker 要求 CentOS 系统的内核版本高于3.10,首先查看系统内核版本是否满足

uname-r

2)使用 root 权限登录系统,确保 yum 包更新到最新~

sudo yum update-y

3)假如安装过旧版本,先载旧版本

sudo yum remove docker docker-common docker-selinux docker-engine

4) 安装 yum-util 工具包和 devicemapper 驱动依赖

sudo yum install-y yum-utils device-mapper-persistent-data lvm2

5)设置yum源(加速 yum 下载速度)

sudo yum-config-manager--add-repo https://download.docker.com/linux/centos/docker-ce.repo

如果连接超时,可以使用 alibaba 的镜像源:^

sudo yum-config-manager--add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

6) 查看所有仓库中所有 docker 版本,并选择特定版本安装,一般可直接安装最新版

yum list docker-ce--showduplicates|sort-r

7) 安装 docker

(1)安装最新稳定版本的方式:

sudo yum install docker-ce-y #安装的是最新稳定版本,因为 repo 中默认只开启stable仓库

(2)安装指定版本的方式:

sudo yum install<EQPN>-y #例如: sudo yum install docker-ce-20.10.11.ce-y

8)启动并加入开机启动~

sudo systemctl start docker #启动 docker+sudo systemctl enable docker #加入开机自启动

9)查看 Version,验证是否安装成功~

docker version

3.2 使用 Docker 开发镜像编译

1) 下载源码并解压

登录到宿主机,通过 git clone 获取 Doris 2.0 分支上的最新代码。

$ git clone-b branch-2.0https://github.com/apache/doris.git

下载后,源代码路径,假设放到了 doris-branch-2.0 这个目录下。

02 运行构建镜像

# 提前在 host 主机构建 maven 的.m2 目录,以便将下载的Java库可以多次在Docker复用 mkdir~/.m2 # 运行构建镜像 docker run-it--network=host--name mydocker-v~/.m2:/root/.m2-v~/doris-branch-2.0:/root/doris-branch-2.0/apache/doris:build-env-for-2.0# 执行成功后,应该自动进入到Docker里了

参考环境:https://doris.apache.org/zh-CN/docs/install/source-install/compilation-with-docker

4.安装

4.1 软件硬件要求


4.2 注意事项

(1) FE 的磁盘空间主要用于存储元数据,包括日志和 image。通常从几百 MB 到几个G

(2)BE 的磁盘空间主要用于存放用户数据,总磁盘空间按用户总数据量*3(3副本)计算,然后再预留额外 40%的空间用作后台 compaction 以及一些中间数据的存放。

(3)一台机器上可以部署多个 BE 实例,但是只能部署一个 FE。如果需要3副本数据,那么至少需要 3 台机器各部署一个 BE 实例(而不是1台机器部署3个 BE 实例)。多个 FE 所在服务器的时钟必须保持一致(允许最多5秒的时钟偏差)

(4)测试环境也可以仅适用一个BE 进行测试。实际生产环境,BE 实例数量直接决定了整体查询延迟。

(5)所有部署节点关闭Swap。

(6) FE 节点数据至少为1(1个 Follower)。当部署.1个 Follower 和 1个 Observer 时,可以实现读高可用。当部署3个 Follower 时,可以实现读写高可用(HA)。

(7) Follower 的数量必须为奇数,Observer 数量随意。

(8)根据以往经验,当集群可用性要求很高时(比如提供在线业务),可以部署3个Follower 和 1-3个 Observer。如果是离线业务,建议部署1 个 Follower 和 1-3个 Observer。

(9)Broker 是用于访问外部数据源(如 HDFS)的进程。通常,在每台机器上部署一个 broker 实例即可.

5.默认端口


当部罩多个FE 实例时,要保证EE的 htp_port 配置相同。

部署前请确保各个端口在应有方向上的访问权限。

6.集群部署


生产环境建议BE和FE分开。

6.0 主机环境

主机环境准备可以参考文章:【kubernetes】window虚拟机下安装高可用 kubernetes 精简版

6.1 创建目录并拷贝编译后的文件

1)创建目录并拷贝编译后的文件

mkdir/opt/module/apache-doris-0.15.04cp-r/opt/software/apache-doris-0.15.0-incubating-src/output/opt/module/apache-doris-0.15.04

然后修改权限

查看目录信息很简单

2) 修改可打开文件数(每个节点)

echo"* soft nofile 65536">>/etc/security/limits.conf echo"* hard nofile 65536">>/etc/security/limits.conf echo"* soft nproc 65536">>/etc/security/limits.conf echo"* hard nproc 65536">>/etc/security/limits.conf echo"* soft memlock unlimited">>/etc/security/limits.conf echo"* hard memlock unlimited">>/etc/security/limits.conf

重启永久生效,也可以用ulimit -n 65535临时生效。

6.2 部署FE

1)创建 FE 元数据存储的目录

mkdir/opt/module/apache-doris-0.15.0/doris-meta

2)修改 fe 的配置文件

vim/opt/module/apache-doris-0.15.0/fe/conf/fe.conf #配置文件中指定元数据路径: meta_dir=/opt/module/apache-doris-0.15.0/doris-meta #修改绑定 ip(每台机器修改成自己的 ip) priority_networks=192.168.8.101/24

注意:

  • 生产环境强烈建议单独指定目录不要放在 Doris 安装目录下,最好是单独的磁盘(如果有SSD最好)。

  • 如果机器有多个ip,比如内网外网,虚拟机 docker 等,需要进行ip 绑定,才能正确识别。

  • JAVA_OPTS 默认 java 最大堆内存为4GB,建议生产环境调整至8G 以上。

3)启动


然后就可以点击登录了,admin没有密码

6.3 部署BE

1)分发BE

scp-r/opt/module/apache-doris-0.15.0/be hadoop2:/opt/modulescp-r/opt/module/apache-doris-0.15.0/be hadoop3:/opt/module

2) 创建 BE 数据存放目录(每个节点)

mkdir/opt/module/apache-doris-0.15.0/doris-storage1 mkdir/opt/module/apache-doris-0.15.0/doris-storage2

3)修改 BE 的配置文件(每个节点)

vim/opt/module/apache-doris-0.15.0/be/conf/be.conf #配置文件中指定数据存放路径: storage_root_path=/opt/module/apache-doris-0.15.0/doris-storagel;/opt/module/apache-doris-0.15.0/doris-storage2 #修改绑定 ip(每台机器修改成自己的 ip) priority_networks=192.168.8.101/24

注意:

  • storage_root_path 默认在be/storage 下,需要手动创建该目录。多个路径之间使用英文状态的分号分隔(最后一个目录后不要加)。

  • 可以通过路径区别存储目录的介质,HDD 或SSD。可以添加容量限制在每个路径的末尾,通过英文状态逗号,隔开,如:二

storage_root_path=/home/disk1/doris.HDD,50;/home/disk2/doris.SSD,10;/home/disk2/dorist

説明:

/home/disk1/doris.HDD.50,表示存限制力50GB,HDD/home/disk2/doris.SSD,10,存储限制为10GBSSD/home/disk2/doris,存储限制为磁盘最大容量,默认力HDD
  • 如果机器有多个 IP,比如内网外网,虚拟机 docker 等,需要进行 IP 绑定,才能正确识别

6.4 在FE 中添加所有 BE 节点

BE 节点需要先在 FE 中添加,才可加入集群。可以使用 mysql-client 连接到 FE。

1、安装 MySQL Cliente

(1)创建目录

mkdir/opt/software/mysql-client/

(2) 上传相关以下二个 rpm 句到/opt/software/mvsql-client/

(3)检测系统是否已经安装

sudo rpm-ga|grep mariadb #如果存在,先卸载~sudo rpm-e--nodeps mariadb mariadb-libis mariadb-server

(4) 安装

rpm-ivh/opt/software/mysql-client/*

使用 MySQL Client 连接 FE

mysql-h hadoop1-P9030-uroot 默认 root 无密码,通过以下命令修改 root 密码。SETPASSWORDFOR'root'=PASSWORD('000000')

修改密码会影响前端的登录。

添加 BE

ALTERSYSTEMADDBACKEND"hadoop1:9050";ALTERSYSTEMADDBACKEND"hadoop2:9050";ALTERSYSTEMADDBACKEND"hadoop3:9050";

4)查看 BE状态

SHOWPROC'/backends';或者SHOWPROC'/backends' \G

启动 BE

1)启动 BE(每个节点)

bin/start_be.sh--daemon

6.5 部署FS_Broker

Broker 以插件的形式,独立于 Doris 部署。如果需要从第三方存储系统导入数据,需要部署相应的 Broker,默认提供了读取 HDFS、百度云 BOS 及 Amazon S3 的fs_broker。 fs_broker 是无状态的,建议每一个FE 和 BE 节点都部署一个 Broker。

1 编译 FS_BROKER 并拷贝文件

  • 进入源码目录下的fs_brokers 目录,使用 sh build.sh 进行编译
  • 拷贝源码 fs_broker 的 output 目录下的相应 Broker 目录到需要部署的所有节点上,改名为:apache_hdfs_broker。建议和 BE 或者 FE 目录保持同级




2) 启动 Broker

/bin/start_broker.sh--daemons


3) 添加 Broker

要让 Doris 的FE 和 BE 知道 Broker 在哪些节点上,通过 sql 命令添加 Broker 节点列表。

(1) 使用 mysgl-client 连接启动的 FE,执行以下命令:

mysql-h hadoop-P9030-uroot-pALTERSYSTEMADDBROKERbroker_name1"hadoop1:8000";ALTERSYSTEMADDBROKERbroker_name2"hadoop2:8000";ALTERSYSTEMADDBROKERbroker_name3"hadoop2:8000";

其中 broker_host 为 Broker 所在节点 ip;broker_ipc_port 在 Broker 配置文件中的 conf/apache_hdfs_broker.conf

4)查看 Broker 状态

使用 mysql-client 连接任一已启动的FE,执行以下命令查看 Broker 状态:

SHOWPROC"/brokers";

注:在生产环境中,所有实例都应使用守护进程启动,以保证进程退出后,会被自动拉起,如 Supervisor (opens new window)。如需使用守护进程启动,在0.9.0及之煎版本中,需要修改各个 start_xx.sh 脚本,去掉最后的& 符号。从0.10.0版本开始,直接调用 sh start_xx.sh 脚本启动即可。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 16:04:32

免费生日祝福网页制作指南:3分钟打造专属动态祝福页面

免费生日祝福网页制作指南&#xff1a;3分钟打造专属动态祝福页面 【免费下载链接】happy-birthday Wish your friend/loved-ones happy birthday in a nerdy way. 项目地址: https://gitcode.com/gh_mirrors/ha/happy-birthday 还在为生日祝福缺乏创意而烦恼吗&#xf…

作者头像 李华
网站建设 2026/4/18 16:03:50

UTM虚拟机:重新定义苹果设备的无限可能

UTM虚拟机&#xff1a;重新定义苹果设备的无限可能 【免费下载链接】UTM Virtual machines for iOS and macOS 项目地址: https://gitcode.com/gh_mirrors/ut/UTM 你是否曾想过&#xff0c;在iPhone上运行Windows系统&#xff1f;在iPad上体验Linux开发环境&#xff1f;…

作者头像 李华
网站建设 2026/4/18 16:02:14

弧齿锥齿轮齿面接触分析(TCA)技术详解:从理论到工程实践

158.基于matlab的用于分析弧齿锥齿轮啮合轨迹的输出齿轮啮合轨迹及传递误差程序已调通&#xff0c;可直接运行1. 引言&#xff1a;TCA技术的重要性与挑战 弧齿锥齿轮作为机械传动系统的核心部件&#xff0c;其啮合质量直接影响整个传动装置的可靠性、效率和使用寿命。齿面接触分…

作者头像 李华
网站建设 2026/4/18 15:53:29

LLM 提示工程:技巧与最佳实践

LLM 提示工程&#xff1a;技巧与最佳实践 引言 大语言模型&#xff08;LLM&#xff09;如GPT-4、Claude、LLaMA等的出现&#xff0c;彻底改变了我们与人工智能交互的方式。然而&#xff0c;要充分发挥这些模型的潜力&#xff0c;掌握提示工程&#xff08;Prompt Engineering&am…

作者头像 李华
网站建设 2026/4/18 15:53:05

3分钟搞定微信数据库密钥提取:Sharp-dumpkey让数据备份如此简单

3分钟搞定微信数据库密钥提取&#xff1a;Sharp-dumpkey让数据备份如此简单 【免费下载链接】Sharp-dumpkey 基于C#实现的获取微信数据库密钥的小工具 项目地址: https://gitcode.com/gh_mirrors/sh/Sharp-dumpkey 你是否曾因手机损坏而丢失重要的微信聊天记录&#xff…

作者头像 李华