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

张开发
2026/4/22 9:56:02 15 分钟阅读

分享文章

【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 的架构很简洁只设 FEFrontend、BEBackend两种角色、两个进程外部组件方便部署和运维FE、BE 都可线性扩展。FE Frontend存储、维护集群元数据负责接收、解析查询请求规划查询计划调度查询执行返回查询结果。主要有三个角色Leader 和 Follower主要是用来达到元数据的高可用保证单节点宕机的情况下元数据能够实时地在线恢复而不影响整个服务。心Observer用来扩展查询节点同时起到元数据备份的作用。如果在发现集群压力非常大的情况下需要去扩展整个查询的能力那么可以加 observer 的节点。observer 不参与任何写入只参与读取。BE Backend负责物理数据的存储和计算依据 FE 生成的物理计划分布式地执行查询。数据的可靠性由 BE 保证BE 会对整个数据存储多副本或者是三副本。副本数可根据需求动态调整。MySQL ClientDoris 借助 MySQL 协议用户使用任意 MySQL 的 ODBC/JDBC 以及 MySQL 的客户端都可以直接访问 Doris。BrokerBroker 为一个独立的无状态进程。封装了文件系统接口提供 Doris 读取远端存储系统中文件的能力包括 HDFSS3BOS 等。3.编译与安装安装 Doris需要先通过源码编译荐。主要有两种方式使用 Docker 开发镜像编译推荐直接编译的方式直接编译。可以参考官网https://doris.apache.org/3.1 安装Docker 环境1 Docker 要求 CentOS 系统的内核版本高于3.10首先查看系统内核版本是否满足uname-r2使用 root 权限登录系统确保 yum 包更新到最新sudo yum update-y3假如安装过旧版本先载旧版本sudo yum remove docker docker-common docker-selinux docker-engine4 安装 yum-util 工具包和 devicemapper 驱动依赖sudo yum install-y yum-utils device-mapper-persistent-data lvm25设置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.repo6 查看所有仓库中所有 docker 版本并选择特定版本安装一般可直接安装最新版yum list docker-ce--showduplicates|sort-r7 安装 docker1安装最新稳定版本的方式sudo yum install docker-ce-y #安装的是最新稳定版本因为 repo 中默认只开启stable仓库2安装指定版本的方式sudo yum installEQPN-y #例如 sudo yum install docker-ce-20.10.11.ce-y8启动并加入开机启动sudo systemctl start docker #启动 dockersudo systemctl enable docker #加入开机自启动9查看 Version验证是否安装成功~docker version3.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--networkhost--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-docker4.安装4.1 软件硬件要求4.2 注意事项1 FE 的磁盘空间主要用于存储元数据包括日志和 image。通常从几百 MB 到几个G2BE 的磁盘空间主要用于存放用户数据总磁盘空间按用户总数据量*33副本计算然后再预留额外 40%的空间用作后台 compaction 以及一些中间数据的存放。3一台机器上可以部署多个 BE 实例但是只能部署一个 FE。如果需要3副本数据那么至少需要 3 台机器各部署一个 BE 实例而不是1台机器部署3个 BE 实例。多个 FE 所在服务器的时钟必须保持一致允许最多5秒的时钟偏差4测试环境也可以仅适用一个BE 进行测试。实际生产环境BE 实例数量直接决定了整体查询延迟。5所有部署节点关闭Swap。6 FE 节点数据至少为11个 Follower。当部署.1个 Follower 和 1个 Observer 时可以实现读高可用。当部署3个 Follower 时可以实现读写高可用HA。7 Follower 的数量必须为奇数Observer 数量随意。8根据以往经验当集群可用性要求很高时比如提供在线业务可以部署3个Follower 和 1-3个 Observer。如果是离线业务建议部署1 个 Follower 和 1-3个 Observer。9Broker 是用于访问外部数据源如 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 部署FE1创建 FE 元数据存储的目录mkdir/opt/module/apache-doris-0.15.0/doris-meta2修改 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_networks192.168.8.101/24注意生产环境强烈建议单独指定目录不要放在 Doris 安装目录下最好是单独的磁盘如果有SSD最好。如果机器有多个ip比如内网外网虚拟机 docker 等需要进行ip 绑定才能正确识别。JAVA_OPTS 默认 java 最大堆内存为4GB建议生产环境调整至8G 以上。3启动然后就可以点击登录了admin没有密码6.3 部署BE1分发BEscp-r/opt/module/apache-doris-0.15.0/be hadoop2:/opt/modulescp-r/opt/module/apache-doris-0.15.0/be hadoop3:/opt/module2 创建 BE 数据存放目录每个节点mkdir/opt/module/apache-doris-0.15.0/doris-storage1 mkdir/opt/module/apache-doris-0.15.0/doris-storage23修改 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_networks192.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 Cliente1创建目录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-server4 安装rpm-ivh/opt/software/mysql-client/*使用 MySQL Client 连接 FEmysql-h hadoop1-P9030-uroot 默认 root 无密码通过以下命令修改 root 密码。SETPASSWORDFORrootPASSWORD(000000)修改密码会影响前端的登录。添加 BEALTERSYSTEMADDBACKENDhadoop1:9050;ALTERSYSTEMADDBACKENDhadoop2:9050;ALTERSYSTEMADDBACKENDhadoop3:9050;4查看 BE状态SHOWPROC/backends;或者SHOWPROC/backends \G启动 BE1启动 BE每个节点bin/start_be.sh--daemon6.5 部署FS_BrokerBroker 以插件的形式独立于 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--daemons3 添加 Broker要让 Doris 的FE 和 BE 知道 Broker 在哪些节点上通过 sql 命令添加 Broker 节点列表。1) 使用 mysgl-client 连接启动的 FE执行以下命令mysql-h hadoop-P9030-uroot-pALTERSYSTEMADDBROKERbroker_name1hadoop1:8000;ALTERSYSTEMADDBROKERbroker_name2hadoop2:8000;ALTERSYSTEMADDBROKERbroker_name3hadoop2:8000;其中 broker_host 为 Broker 所在节点 ipbroker_ipc_port 在 Broker 配置文件中的 conf/apache_hdfs_broker.conf4查看 Broker 状态使用 mysql-client 连接任一已启动的FE执行以下命令查看 Broker 状态SHOWPROC/brokers;注在生产环境中所有实例都应使用守护进程启动以保证进程退出后会被自动拉起如 Supervisor opens new window。如需使用守护进程启动在0.9.0及之煎版本中需要修改各个 start_xx.sh 脚本去掉最后的 符号。从0.10.0版本开始直接调用 sh start_xx.sh 脚本启动即可。

更多文章