Apache Doris存算一体集群环境搭建
Apache Doris 简介Apache Doris 是一款基于 MPP 架构的高性能、实时分析型数据库。它以高效、简单和统一的特性著称能够在亚秒级的时间内返回海量数据的查询结果。Doris 既能支持高并发的点查询场景也能支持高吞吐的复杂分析场景。基于这些优势Apache Doris 非常适合用于报表分析、即席查询、统一数仓构建、数据湖联邦查询加速等场景。用户可以基于 Doris 构建大屏看板、用户行为分析、AB 实验平台、日志检索分析、用户画像分析、订单分析等应用。Apache Doris 存算一体架构精简且易于维护。它包含以下两种类型的进程Frontend (FE) 主要负责接收用户请求、查询解析和规划、元数据管理以及节点管理。Backend (BE)主要负责数据存储和查询计划的执行。数据会被切分成数据分片Shard在 BE 中以多副本方式存储。Apache Doris 集群环境搭建集群规划集群至少包含3节点 测试环境中可以把BE与FE搭建在一台机器上如果是生产环境建议FE与BE的数据存储在不同的磁盘上。本文档搭建3节点集群FE是1 master 2 followerBE是3节点副本。软硬件环境设置CPU至少是16核内存64GiB。操作系统设置在部署 Doris 时需要对以下操作系统项进行检查关闭 swap 分区在部署 Doris 时建议关闭 swap 分区。swap 分区是内核发现内存紧张时会按照自己的策略将部分内存数据移动到配置的 swap 分区由于内核策略不能充分了解应用的行为会对 Doris 性能造成较大影响。所以建议关闭。注释掉 /etc/fstab 中的 swap 分区重启即可彻底关闭 swap 分区。关闭系统透明大页在高负载低延迟的场景中建议关闭操作系统透明大页Transparent Huge Pages, THP避免其带来的性能波动和内存碎片问题确保 Doris 能够稳定高效地使用内存。主机重启后生效cat/etc/rc.d/rc.localEOF echo madvise /sys/kernel/mm/transparent_hugepage/enabled echo madvise /sys/kernel/mm/transparent_hugepage/defrag EOFchmodx /etc/rc.d/rc.local增加虚拟内存区域为了保证 Doris 有足够的内存映射区域来处理大量数据需要修改 VMA虚拟内存区域。如果没有足够的内存映射区域Doris 在启动或运行时可能会遇到 Too many open files 或类似的错误。通过以下命令可以永久修改虚拟内存区域至少为 2000000并立即生效cat/etc/sysctl.confEOF vm.max_map_count 2000000 EOFsysctl-p禁用 CPU 省电模式在部署 Doris 时检修关闭 CPU 的省电模式以确保 Doris 在高负载时提供稳定的高性能避免由于 CPU 频率降低导致的性能波动、响应延迟和系统瓶颈提高 Doris 的可靠性和吞吐量。如果您的 CPU 不支持 Scaling Governor可以跳过此项配置。通过以下命令可以关闭 CPU 省电模式echoperformance|sudotee/sys/devices/system/cpu/cpu*/cpufreq/scaling_governor网络连接溢出时自动重置新连接在部署 Doris 时需要确保在 TCP 连接的发送缓冲区溢出时连接会被立即中断以防止 Doris 在高负载或高并发情况下出现缓冲区阻塞避免连接被长时间挂起从而提高系统的响应性和稳定性。通过以下命令可以永久设置系统自动重置新链接并立即生效cat/etc/sysctl.confEOF net.ipv4.tcp_abort_on_overflow1 EOFsysctl-p相关端口畅通如果发现端口不通可以试着关闭防火墙确认是否是本机防火墙造成。如果是防火墙造成可以根据配置的 Doris 各组件端口打开相应的端口通信。sudosystemctl stop firewalld.servicesudosystemctl disable firewalld.service增加系统的最大文件句柄数Doris 由于依赖大量文件来管理表数据所以需要将系统对程序打开文件数的限制调高。通过以下命令可以调整最大文件句柄数。在调整后需要重启会话以生效配置vi/etc/security/limits.conf * soft nofile1000000* hard nofile1000000安装并配置 NTP 服务Doris 的元数据要求时间精度要小于 5000ms所以所有集群所有机器要进行时钟同步避免因为时钟问题引发的元数据不一致导致服务出现异常。通常情况下可以通过配置 NTP 服务保证各节点时钟同步。sudosystemctl start ntpd.servicesudosystemctlenablentpd.service部署存算一体集群第 1 步部署 FE Master 节点将官网上下载好的tar包解压默认附带 doris-meta 目录。也可以自己自己创建。修改 FE 配置文件FE 的配置文件在 FE 部署路径下的 conf 目录中启动 FE 节点前需要修改 conf/fe.conf修改信息如下doris各个服务的端口号在fe.conf文档中默认已设置JAVA_OPTS-Xmx16384m -XX:UseMembar -XX:SurvivorRatio8 -XX:MaxTenuringThreshold7 -XX:PrintGCDateStamps -XX:PrintGCDetails -XX:UseConcMarkSweepGC -XX:UseParNewGC -XX:CMSClassUnloadingEnabled -XX:-CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction80 -XX:SoftRefLRUPolicyMSPerMB0 -Xloggc:$DORIS_HOME/log/fe.gc.log.$DATE## modify case sensitivitylower_case_table_names1## modify network CIDRpriority_networks10.1.3.0/24## modify Java HomeJAVA_HOMEyour-java-home-path启动 FE 进程bin/start_fe.sh--daemonFE 进程将在后台启动日志默认保存在 log/ 目录。如果启动失败可通过查看 log/fe.log 或 log/fe.out 文件获取错误信息。检查 FE 启动状态ps-ef|grep-idoris|grep-ife通过 MySQL 客户端连接 Doris 集群初始化用户为 root默认密码为空。mysql-uroot-Pfe_query_port-hfe_ip_address链接到 Doris 集群后可以通过 show frontends 命令查看 FE 的状态通常要确认以下几项Alive 为 true 表示节点存活Join 为 true 表示节点加入到集群中但不代表当前还在集群内可能已失联IsMaster 为 true 表示当前节点为 Master 节点。第 2 步部署 FE 集群可选生产环境建议至少部署 3 个节点。在部署过 FE Master 节点后需要再部署两个 FE Follower 节点。创建元数据目录参考部署 FE Master 节点创建 doris-meta 目录修改 FE Follower 节点配置文件参考部署 FE Master 节点修改 FE Follower 节点配置文件。通常情况下可以直接复制 FE Master 节点的配置文件。在 Doris 集群中注册新的 FE Follower 节点在启动新的 FE 节点前需要先在 FE 集群中注册新的 FE 节点。如果要添加 observer 节点可以使用 ADD OBSERVER 命令## register a new FE observer nodeALTER SYSTEM ADD OBSERVERfe_ip_address:fe_edit_log_port注意FE Follower包括 Master节点的数量建议为奇数建议部署 3 个组成高可用模式。当 FE 处于高可用部署时1 个 Master2 个 Follower我们建议通过增加 Observer FE 来扩展 FE 的读服务能力启动 FE Follower 节点通过以下命令可以启动 FE Follower 节点并自动同步元数据。bin/start_fe.sh--helper192.168.104.125:9010--daemon–helper 参数仅在第一次启动 FE 时需要之后重启无需指定。判断 Follower 节点状态与 FE Master 节点状态判断相同添加 Follower 节点后可通过 show frontends 命令查看节点状态IsMaster 应为 false。第 3 步部署 BE 节点创建数据目录BE 进程应用于数据的计算与存储。数据目录默认放在 be/storage 下。生产环境通常将 BE 数据与 BE 部署文件分别存储在不同的硬盘上。BE 支持数据分布在多盘上以更好的利用多块硬盘的 I/O 能力。## Create a BE data storage directory on each data diskmkdir-pbe_storage_root_path修改 BE 配置文件BE 的配置文件在 BE 部署路径下的 conf 目录中启动 BE 节点前需要修改 conf/be.conf。参数解释如下参数 修改建议priority_networks 网络 CIDR根据网络 IP 地址指定。在 FQDN 环境中可以忽略。JAVA_HOME 建议 Doris 使用独立于操作系统的 JDK 环境。在 Doris 中注册 BE 节点在启动 BE 节点前需要先在 FE 集群中注册该节点## registe BE nodeALTER SYSTEM ADD BACKENDbe_ip_address:be_heartbeat_service_port启动 BE 进程通过以下命令可以启动 BE 进程bin/start_be.sh--daemonBE 进程在后台启动日志默认保存在 log/ 目录。如果启动失败请检查 log/be.log 或 log/be.out 文件以获取错误信息。查看 BE 启动状态连接 Doris 集群后可通过 show backends 命令查看 BE 节点的状态。通常情况下需要注意以下几项状态Alive 为 true 表示节点存活TabletNum 表示该节点上的分片数量新加入的节点会进行数据均衡TabletNum 逐渐趋于平均。目前BE只是单副本还需要在另外2个节点做同样的操作使其变成3副本第 4 步验证集群正确性登录数据库使用 MySQL 客户端登录 Doris 集群。检查 Doris 安装信息通过 show frontends 与 show backends 可以查看数据库各实例的信息。show frontends\Gshow backends\G修改 Doris 集群密码在创建 Doris 集群时系统会自动创建一个名为 root 的用户并默认设置其密码为空。为了提高安全性建议在集群创建后立即为 root 用户设置一个新密码。selectuser();SET PASSWORDPASSWORD(doris_new_passwd);创建测试表并插入数据为了验证集群的正确性可以在新创建的集群中创建一个测试表并插入测试数据。Doris 兼容 MySQL 协议可以使用 INSERT 语句插入数据。

相关新闻