尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Apache Doris单机部署实战:从零搭建实时分析数据库环境

Apache Doris单机部署实战:从零搭建实时分析数据库环境 1. 项目概述为什么选择单机部署Doris如果你正在寻找一个能处理海量数据的实时分析型数据库并且希望从零开始快速上手验证那么Doris的单机部署就是你绕不开的第一步。我见过太多团队一上来就想搞分布式集群结果在复杂的配置和协调问题里折腾好几天连个“Hello World”都没跑通。单机部署的意义就在于它能让你在几分钟内在一个干净的Linux环境里看到一个完整的Doris系统跑起来理解它的核心组件和基本操作流程。这不仅是学习Doris的最佳路径也是为后续生产环境集群部署打下坚实基础的必经之路。Apache Doris作为一个基于MPP架构的开源实时数据仓库以其极致的查询性能、兼容MySQL协议以及简洁的架构著称。单机部署模式下我们将FrontendFE负责元数据管理、查询解析和调度和BackendBE负责数据存储和计算都部署在同一台机器上。这听起来简单但其中涉及到版本选择、环境配置、参数调优等一系列决定后续使用体验的关键步骤。通过这次部署你不仅能得到一个可用的Doris服务更能透彻理解其运行机制为日后排查问题、性能优化积累第一手经验。2. 部署前的核心准备与规划在动手敲命令之前充分的准备工作能避免你掉进无数个“坑”里。单机部署虽然简化了网络拓扑但对机器本身的要求和规划一点也不能马虎。2.1 硬件与操作系统选择对于测试和学习目的我建议的最低配置是2核CPU、4GB内存、50GB SSD硬盘。内存是关键因为Doris的查询和加载过程都比较吃内存4GB是一个能保证基本功能运行的底线。如果条件允许使用8GB内存会让体验流畅很多。硬盘务必使用SSD机械硬盘的IO性能会成为整个系统的巨大瓶颈尤其是在数据导入和压缩合并阶段。操作系统方面CentOS 7.x 或 Ubuntu 20.04/22.04 LTS是经过广泛验证的稳定选择。我个人的偏好是Ubuntu其软件包管理更便捷。你需要一个干净的、带有sudo权限的用户如doris或你自己的常用账号避免直接使用root用户进行操作这是生产环境的基本安全规范。2.2 软件依赖与环境配置Doris的运行依赖于JDK和一系列系统参数。这是部署的第一个技术点也是最容易出错的地方。安装JDKDoris FE需要Java 8或Java 11推荐Java 11性能更好。通过包管理器安装是最佳实践。# 对于Ubuntu/Debian sudo apt update sudo apt install openjdk-11-jdk # 对于CentOS/RHEL sudo yum install java-11-openjdk-devel安装后务必验证版本java -version。关闭交换分区SwapLinux的交换分区会严重拖慢数据库性能必须关闭。sudo swapoff -a为了永久生效需要编辑/etc/fstab文件注释掉所有包含swap的行。调整系统参数这些参数关系到Doris能打开的文件数量、网络连接等极限能力。# 编辑limits.conf sudo vi /etc/security/limits.conf # 在文件末尾添加将doris-user替换为你的运行用户名 doris-user soft nofile 65536 doris-user hard nofile 65536 doris-user soft nproc 65536 doris-user hard nproc 65536修改后需要重新登录用户使其生效。时钟同步NTP在单机环境下同样重要因为Doris内部有对时间戳的一致性要求。确保系统时间准确。sudo apt install chrony # Ubuntu sudo yum install chrony # CentOS sudo systemctl enable --now chronyd注意很多新手会忽略关闭Swap和修改文件描述符限制这两步导致在后续数据导入或高并发查询时系统报出“Too many open files”或性能极其低下的诡异问题。务必在安装前完成这些配置。2.3 Doris版本与安装包获取前往 Apache Doris官网 的下载页面。对于新手我强烈推荐选择**最新稳定版Stable Release**的“Binary”包而不是源码包。二进制包解压即可用省去了编译可能带来的各种依赖问题。例如你可以选择名为apache-doris-x.x.x-bin.tar.gz的包。使用wget命令下载到你的计划安装目录比如/opt/software。mkdir -p /opt/software cd /opt/software wget https://archive.apache.org/dist/doris/x.x.x/apache-doris-x.x.x-bin.tar.gz tar -zxvf apache-doris-x.x.x-bin.tar.gz解压后你会得到两个主要目录fe和be分别对应前端和后端组件。3. 详细部署步骤与配置解析现在进入核心部署环节。我们将按照启动FE - 启动BE - 建立集群关系的顺序进行。3.1 Frontend (FE) 部署与启动FE是Doris的大脑负责管理元数据、接收用户连接和解析SQL。配置FE进入FE的配置文件目录。cd /opt/software/apache-doris-x.x.x/fe vi conf/fe.conf你需要关注并修改以下几个核心参数priority_networks: 这是最关键的配置之一。指定FE节点使用的IP地址段用于集群内部通信。例如你的内网IP是192.168.1.100可以配置为192.168.1.0/24。在单机部署时务必正确设置否则BE将无法连接到FE。meta_dir元数据存放路径。默认在{DORIS_HOME}/doris-meta。确保该路径所在磁盘有足够空间数十GB。http_portFE的HTTP端口默认8030用于Web UI和某些API。rpc_portFE的RPC端口默认9020用于BE与FE通信。query_portMySQL客户端连接端口默认9030。你将通过这个端口用MySQL客户端连接Doris。edit_log_portBDBJE的端口默认9010。启动FE./bin/start_fe.sh --daemon使用--daemon参数让其在后台运行。查看日志确认启动成功tail -f log/fe.log当你看到日志中出现thrift server started和start FE successfully等字样时说明FE启动成功。初次连接与引导FE第一次启动后需要通过MySQL客户端连接并完成初始化引导。mysql -h 127.0.0.1 -P 9030 -uroot首次登录通常无需密码。连接成功后你可以执行SHOW FRONTENDS;命令应该能看到一条记录Alive列为true表示FE节点健康。3.2 Backend (BE) 部署与启动BE是Doris的肌肉负责数据存储和SQL执行。配置BE进入BE的配置文件目录。cd /opt/software/apache-doris-x.x.x/be vi conf/be.conf需要修改的核心参数priority_networks: 与FE配置同理必须正确设置为本机IP所在网段。storage_root_path这是BE最重要的配置。指定数据存储的路径和存储策略。格式为路径; 介质类型; 容量上限。例如/data1/doris/storage,medium:ssd,capacity:50。你可以指定多个路径用分号隔开。确保路径存在且有写权限。be_portBE的heartbeat服务端口默认9050。webserver_portBE的HTTP服务端口默认8040。brpc_portBE的BRPC端口默认8060。sys_log_dir系统日志目录。启动BE./bin/start_be.sh --daemon查看启动日志tail -f log/be.log看到heartbeat success等信息并且没有持续报错通常意味着BE进程启动成功。但此时它还未加入集群。3.3 构建单机集群将BE添加到FE现在我们需要告诉FE这台BE节点是可用的。回到MySQL客户端连接FE的9030端口。-- 在MySQL客户端中执行 ALTER SYSTEM ADD BACKEND 你的机器IP:9050;例如ALTER SYSTEM ADD BACKEND 192.168.1.100:9050;添加成功后可以通过以下命令检查BE状态SHOW BACKENDS\G仔细查看输出结果。一个健康的BE节点Alive列应为trueSystemDecommissioned和ClusterDecommissioned列应为false并且LastHeartbeat时间应该是最近的。如果Alive为false最常见的原因是网络不通或priority_networks配置错误需要回头检查FE和BE的配置文件以及防火墙设置。实操心得在SHOW BACKENDS\G的结果中TotalCapacity和AvailableCapacity显示了BE的磁盘容量。UsedCapacity一开始为0。如果这里显示容量为0或异常小几乎可以肯定是storage_root_path配置的路径权限有问题BE无法写入。务必确保运行Doris的用户对该路径有读写权限。4. 基础功能验证与初体验部署完成不是终点验证其功能是否正常才是。我们通过几个基本操作来检验这个单机Doris是否“健康”。4.1 创建数据库与用户-- 1. 创建测试数据库 CREATE DATABASE test_db; USE test_db; -- 2. 创建一个普通用户生产环境强烈建议不用root CREATE USER test_user IDENTIFIED BY your_password; GRANT ALL ON test_db.* TO test_user;4.2 创建表并导入测试数据Doris支持多种数据模型Duplicate、Aggregate、Unique。我们创建一个简单的Aggregate模型表来演示。-- 在 test_db 中 CREATE TABLE test_table1 ( user_id BIGINT, date DATE, city VARCHAR(20), age SMALLINT, cost BIGINT SUM ) ENGINEolap AGGREGATE KEY(user_id, date, city, age) DISTRIBUTED BY HASH(user_id) BUCKETS 10 PROPERTIES(replication_num 1);关键参数解析AGGREGATE KEY指定了维度列这些列的组合唯一标识一行。cost BIGINT SUM这是一个指标列其聚合类型为SUM。这意味着当维度列相同时多条记录的cost值会自动求和。DISTRIBUTED BY HASH(user_id) BUCKETS 10指定数据分布方式。数据按user_id的哈希值分到10个桶中。在单机部署下这10个桶都在同一个BE上。replication_num 1副本数。单机只能设置为1。现在通过Stream Load方式快速插入一点测试数据。假设有一个本地文件data.csv10001,2023-10-01,Beijing,25,150 10001,2023-10-01,Beijing,25,50 10002,2023-10-01,Shanghai,30,200在Linux shell中执行注意替换你的FE IP和端口curl --location-trusted -u root: -T data.csv -H column_separator:, http://127.0.0.1:8030/api/test_db/test_table1/_stream_load这个命令会通过HTTP协议将文件数据流式加载到指定表中。4.3 执行查询验证回到MySQL客户端执行查询SELECT * FROM test_table1;你会看到结果。对于user_id10001的两条记录由于维度列完全相同其cost已经被聚合为20015050。这正是Aggregate模型的效果。再执行一个简单的聚合查询SELECT city, SUM(cost) as total_cost FROM test_table1 GROUP BY city;如果这些操作都能顺利返回结果恭喜你一个功能完整的单机Doris已经部署并验证成功。5. 部署后的关键管理操作系统跑起来后日常的启停、状态监控和简单扩容在单机内是必须掌握的。5.1 服务的启动与停止务必按照正确的顺序操作启动顺序先启动所有FE再启动所有BE。对于单机就是start_fe.sh-start_be.sh。停止顺序先停止所有BE再停止所有FE。对于单机使用./bin/stop_be.sh和./bin/stop_fe.sh。强制注意切勿直接使用kill -9命令杀死进程这可能导致元数据损坏。务必使用脚本停止。5.2 监控与日志查看Doris提供了简单的内置监控方式FE Web UI浏览器访问http://你的FE_IP:8030使用root用户默认空密码登录。这里可以看到系统概览、查询、导入等监控信息。BE Web UI访问http://你的BE_IP:8040可以查看BE的配置、表数据分布、磁盘使用情况等。日志定位查询错误首先查看fe/log/fe.warn.log和fe/log/fe.audit.log。导入错误查看be/log/be.WARNING以及导入命令返回的JSON结果中的Message字段。节点故障查看be/log/be.out和be/log/be.WARNING。5.3 单机环境下的“扩容”考量虽然叫单机部署但你可以在一台机器上启动多个BE实例来模拟多节点环境用于学习数据分片和副本机制。但这需要为每个BE实例配置不同的数据目录storage_root_path和端口be_port,webserver_port,brpc_port管理起来稍显复杂。对于纯粹的学习和功能验证一个BE实例足够了。6. 常见问题与故障排查实录这里汇总了我自己在单机部署过程中踩过的坑和常见的错误希望能帮你快速排雷。6.1 BE添加失败或状态异常问题现象执行ALTER SYSTEM ADD BACKEND后SHOW BACKENDS显示Alive为false。排查思路网络与端口这是最常见的原因。在BE机器上用telnet FE_IP 9010和telnet FE_IP 9030测试端口连通性。如果不通检查防火墙firewalld或iptables是否放行了这些端口以及FE的priority_networks配置是否准确绑定到了正确的网卡IP。配置一致性确保FE和BE的priority_networks配置在同一个网段并且配置后重启了服务。日志分析立即查看BE的log/be.WARNING日志文件。通常会明确打印连接FE失败的错误信息如“failed to get master client from cache”等。6.2 数据导入失败问题现象Stream Load或Broker Load导入作业状态为CANCELLED。排查步骤查看作业详情通过SHOW LOAD WHERE labelyour_label;命令查看具体错误信息。检查文件权限与格式如果数据文件在HDFS或S3上检查BE进程用户是否有读取权限。如果是本地文件检查路径是否正确。确认文件格式列分隔符、行分隔符与建表语句或导入命令中指定的格式一致。检查列映射错误信息中常出现 “column count mismatch” 或 “convert to int failure”。这表示数据文件的列数与表结构不匹配或某列数据无法转换为目标列类型。仔细核对表结构和数据文件。6.3 查询速度缓慢在单机环境下查询慢通常原因比较集中。排查方向硬件瓶颈首先使用top或htop命令查看CPU、内存和IO使用情况。如果磁盘IO等待%wa持续很高说明磁盘是瓶颈确认是否使用了SSD。表结构设计分桶数不合适单机小数据量下分桶数BUCKETS设置为5-10即可。过多的小桶会增加管理开销。索引失效Doris主要依靠前缀索引。确保高频查询条件中的列是建表时AGGREGATE/UNIQUE/DUPLICATE KEY中靠前的列。系统参数回顾2.2节是否关闭了Swap文件描述符限制是否已调整这些是基础保障。6.4 磁盘空间不足Doris的数据在导入后会有多个副本即使单机为保障某些高可用逻辑也可能有临时多副本状态并进行压缩合并如果storage_root_path所在磁盘空间不足会导致BE异常。预防与处理在配置storage_root_path时通过capacity参数限制Doris使用的最大容量为系统留出空间。定期监控磁盘使用率。可以通过BE的Web UI (8040端口) 或SHOW BACKENDS\G命令中的UsedCapacity和AvailableCapacity来查看。如果空间已满需要先通过删除旧数据分区ALTER TABLE ... DROP PARTITION ...或清空表TRUNCATE TABLE来释放空间系统才能恢复正常。单机部署是深入Doris世界的一张完美门票。它剥离了分布式系统的复杂性让你能聚焦于Doris本身的核心特性和操作。把这个流程走通、吃透特别是理解配置文件中每个参数的含义和启停、监控、排查的基本方法之后再面对多节点集群部署时你会有一种“一览众山小”的清晰感。记住所有生产环境的复杂架构都是由这样一个简单的单节点演化而来的。
返回列表