Apache Doris 系列: 入门篇-安装部署

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: Apache Doris 系列: 入门篇-安装部署

这里我们介绍如何通过二进制安装包方式,手动的一步步安装Apache Doris。


如果你需要从 源码 编译安装部署,参考 docker 编译


下面我们以部署一台 FE 节点和一台 BE节点为例来演示部署,正常情况 Doris 集群下我们建议至少要部署一个 FE 节点及三个 BE 节点。


环境准备


在安装部署之前,我们要确保安装 Doris 的环境满足一下要求:


  • 1.我们建议集群至少拥有两台物理机或者虚拟机。

  • 2.FE 节点CPU 建议 8 核及以上,内存 16G 及以上。

  • 3.BE 节点CPU 建议 16 核及以上,内存 64G 及以上。

  • 4.BE 节点 CPU 要支持 avx2 指令集,你可以通过 cat /proc/cpuinfo | grep avx2 命令查看,如果有返回结果表明 CPU 支持 avx2 指令集,如果没有说明不支持,如果 CPU 不支持 avx2 请下载 X64 ( no avx2 ) 版本。

  • 5.各节点间建议万兆网络连通。


软件及操作系统要求


  1. 1.所有节点操作系统需要时 CentOS 7.x 版本或者 Ubuntu 16.04及以上版本

  2. 2.在 FE 节点需安装 JDK1.8 或者 JDK11(根据你下载的安装包对应的 JDK 或者你编译的时候使用的 JDK 版本选择)。

  3. 3.安装 MySQL 客户端,建议 5.5 以上版本。

  4. 4.所有节点之间要做时钟同步

  5. 5.设置系统最大打开文件句柄数

  6. 6.关闭 Linux 交换分区,避免交换内存到虚拟内存时对性能造成的影响

  7. echo "0" > /proc/sys/vm/swappiness

  8. echo "0" > /proc/sys/vm/overcommit_memory

  9. sysctl -p


开始部署


部署 FE 节点


这里我们开始介绍如何安装部署 FE。Doris FE 主要负责元数据管理、负责客户端连接管理、SQL查询规划、调度等工作。


下载安装包


下载 Doris 预编译好的二进制安装包,并解压到指定目录

tar zxf apache-doris-x.x.x.tar.gz

注意:这里是你下载的二进制安装包名称


配置 FE


我们进入到 apache-doris-x.x.x/fe 目录

cd apache-doris-x.x.x/fe

修改 FE 配置文件 conf/fe.conf ,这里我们主要修改两个参数:priority_networksmeta_dir ,如果你需要更多优化配置,请参考 FE 参数配置说明,进行调整。


  1. 1.添加 priority_networks 参数
priority_networks=172.23.16.0/24

注意:


这个参数我们在安装的时候是必须要配置的,特别是当一台机器拥有多个IP地址的时候,我们要为 FE 指定唯一的IP地址。


  1. 添加元数据目录
meta_dir=/path/your/doris-meta

注意:


这里你可以不配置,默认是在你的Doris FE 安装目录下的 doris-meta,

如果你有 SSD 硬盘,建议这里目录配置到 SSD 上,会获取更好的性能

单独配置元数据目录,需要你提前创建好你指定的目录


  1. JAVA_HOME 配置

如果你已经在系统环境变量里设置了JAVA_HOME,这里可以不需要设置,或者你有多个 JDK 版本,需要单独指定,需要在这里配置,在 fe.conf 最前面加上下面的内容。

JAVA_HOME=/path/your/jdk_path

启动 FE


在 FE 安装目录下执行下面的命令,来完成 FE 的启动。

./bin/start_fe.sh --daemon

查看 FE 运行状态


FE 启动成功之后,我们通过从 MySQL 客户端连接 FE 查看 FE 的运行状态,后续我们向集群中添加其他 FE 节点和 BE 节点也是通过这个操作完成。

mysql -uroot -P9030 -h127.0.0.1

注意:


  1. 1.这里使用的 root 用户是 doris 内置的默认用户,也是超级管理员用户,具体的用户权限查看 权限管理

  2. 2.-P :这里是我们连接 Doris 的查询端口,默认端口是 9030,对应的是fe.conf里的 query_port

  3. 3.-h : 这里是我们连接的 FE IP地址,如果你的客户端和 FE 安装在同一个节点可以使用127.0.0.1,这种也是 Doris 提供的如果你忘记 root 密码,可以通过这种方式不需要密码直接连接登录,进行对 root 密码进行重置

执行下面的命令查看 FE 运行状态

show frontends\G;

然后你可以看到类似下面的结果:

mysql> show frontends\G;
*************************** 1\. row ***************************
             Name: 172.21.32.5_9010_1660549353220
               IP: 172.21.32.5
      EditLogPort: 9010
         HttpPort: 8030
        QueryPort: 9030
          RpcPort: 9020
             Role: FOLLOWER
         IsMaster: true
        ClusterId: 1685821635
             Join: true
            Alive: true
ReplayedJournalId: 49292
    LastHeartbeat: 2022-08-17 13:00:45
         IsHelper: true
           ErrMsg:
          Version: 1.1.2-rc03-ca55ac2
 CurrentConnected: Yes
1 row in set (0.03 sec)
  1. 1.Role : 表示你的节点角色,如果你只有一个 FE 的时候,当前节点角色是 Follower,

  2. 2.IsMaster:该值为true,说明这个节点是 FE 的主节点

  3. 3.alive : 该值为 true 说明该节点运行正常

注意:


  1. 1.FE 分为 Leader,Follower 和 Observer 三种角色

  2. 2.默认一个集群,只能有一个 Leader,可以有多个 Follower 和 Observer。

  3. 3.Leader 和 Follower 组成一个 Paxos 选举组,如果 Leader 宕机,则剩下的 Follower 会自动选出新的 Leader,保证写入高可用。

  4. 4.Observer 同步 Leader 的数据,但是不参加选举。如果只部署一个 FE,则 FE 默认就是 Leader。

  5. 5.第一个启动的 FE 自动成为 Leader,上面输出可以看到IsMaster: true。在此基础上,可以添加若干 Follower 和 Observer。

如果 MySQL 客户端连接失败,可以通过查看 log/fe.log 日志来查看发现问题。


如果第一次部署遇到任何意外的问题,都可以通过清空元数据目录,然后重新启动来重试。


验证 FE 启动是否成功


可以通过一下三种方式验证 Doris FE 是否启动成功:


  1. 1.通过查看 fe/log/fe.out 文件,看到一下内容表示启动成功
2022-08-17 12:37:13,236 INFO (UNKNOWN 172.21.32.5_9010_1660549353220(-1)|1) [JettyWebServer.start():172] Jetty started on port(s) 8030 (http/1.1) with context path '/'
2022-08-17 12:37:13,249 INFO (UNKNOWN 172.21.32.5_9010_1660549353220(-1)|1) [StartupInfoLogger.logStarted():61] Started PaloFe in 2.396 seconds (JVM running for 7.33)
2022-08-17 12:37:13,260 INFO (UNKNOWN 172.21.32.5_9010_1660549353220(-1)|1) [NMysqlServer.start():70] Open mysql server success on 9030
2022-08-17 12:37:13,260 INFO (UNKNOWN 172.21.32.5_9010_1660549353220(-1)|1) [QeService.start():63] QE service start.
  1. 1.通过 jps 命令,我们可以看一个 PaloFe 进程表示启动成功,否是失败

  2. 2.我们也可以通过 Doris 提供的Web UI 来验证是否启动成功,在浏览器里输入 FE 的 IP 地址及端口(默认8030,这个参数在 fe.conf 里的 http_port),可以看到登录界面,使用默认用户 root 或者 admin 登录,默认密码都是空。

FE 高可用部署


Doris FE 节点支持高可用(HA)部署,来保证实际使用中服务的高可用,具体可以参照 FE 弹性伸缩 ,通过添加 FE 节点的方式来完成。


虽然我们部署了多个 FE 来完成高可用,但是对于前端使用怎么做到无感知及 FE 的负载均衡,这块可以具体参考 Doris FE 负载均衡


停止 FE 节点


Doris FE 的停止可以通过下面的命令完成

./bin/stop_fe.sh

部署 BE 节点


这里我们开始介绍如何安装部署 BE。Doris BE 主要负责 Doris 的数据存储及 SQL 执行计算工作,在一个服务器节点只能部署一个 BE 节点。


这里我们示例是指安装一个 BE 节点,安装其他的 BE 节点操作是同样的。


下载安装包


下载 Doris 预编译好的二进制安装包,并解压到指定目录

tar zxf apache-doris-x.x.x.tar.gz

注意:这里是你下载的二进制安装包名称


配置 BE


我们进入到 apache-doris-x.x.x/be 目录

cd apache-doris-x.x.x/be

修改 FE 配置文件 conf/be.conf ,这里我们主要修改两个参数:priority_networks'storage_root ,如果你需要更多优化配置,请参考 BE 参数配置说明,进行调整。


  1. 1.添加 priority_networks 参数
priority_networks=172.23.16.0/24

注意:


这个参数我们在安装的时候是必须要配置的,特别是当一台机器拥有多个IP地址的时候,我们要为 BE 指定唯一的IP地址。


  1. 1.配置 BE 数据存储目录
storage_root_path=/path/your/doris-data-dir
  1. 1.如果是多个磁盘,使用英文分号隔开

  2. 2.存储目录在启动 BE 之前要创建好,否则启动失败。

  3. 3.SSD 和 HDD 混合使用情况

  4. 4.如果是 SSD 磁盘要在目录后面加上.SSD,HDD磁盘在目录后面加.HDD

  5. 示例:
  6. storage_root_path=/home/disk1/doris.HDD;/home/disk2/doris.SSD;/home/disk2/doris

  • /home/disk1/doris.HDD 表示 HDD磁盘 ;

  • /home/disk2/doris.SSD 表示 SSD 磁盘;

  • /home/disk2/doris 默认为HDD

  1. 1.不论HDD磁盘目录还是SSD磁盘目录,都无需添加后缀,storage_root_path参数里指定medium即可。(

  2. 示例:storage_root_path=/home/disk1/doris,medium:hdd;/home/disk2/doris,medium:ssd

  • /home/disk1/doris,medium:hdd 表示存储介质是HDD;

  • /home/disk2/doris,medium:ssd 表示存储介质是SSD;

启动 BE


在 BE 安装目录下执行下面的命令,来完成 BE 的启动。

./bin/start_be.sh --daemon

添加 BE 节点到集群


通过 MySQL 客户端将 BE 节点添加到集群中

ALTER SYSTEM ADD BACKEND "be_host_ip:heartbeat_service_port";
  1. 1.be_host_ip:这里是你 BE 的 IP 地址,和你在 be.conf 里的 priority_networks 匹配

  2. 2.heartbeat_service_port:这里是你 BE 的心跳上报端口,和你在 be.conf 里的 heartbeat_service_port 匹配,默认是 9050


如果添加过程中出现错误,你可以通过下面的命令,将该 BE 节点从集群中移除

ALTER SYSTEM DECOMMISSION BACKEND "be_host_ip:heartbeat_service_port";

也可以通过下面的命令进行快速删除(仅限新加加点,生产慎用

ALTER SYSTEM DROPP BACKEND "be_host_ip:heartbeat_service_port";

查看 BE 节点运行状态


你可以在 MySQL 命令行下执行下面的命令查看 BE 的运行状态。

SHOW BACKENDS\G;

示例:

mysql> SHOW BACKENDS\G;
*************************** 1\. row ***************************
            BackendId: 10003
              Cluster: default_cluster
                   IP: 172.21.32.5
        HeartbeatPort: 9050
               BePort: 9060
             HttpPort: 8040
             BrpcPort: 8060
        LastStartTime: 2022-08-16 15:31:37
        LastHeartbeat: 2022-08-17 13:33:17
                Alive: true
 SystemDecommissioned: false
ClusterDecommissioned: false
            TabletNum: 170
     DataUsedCapacity: 985.787 KB
        AvailCapacity: 782.729 GB
        TotalCapacity: 984.180 GB
              UsedPct: 20.47 %
       MaxDiskUsedPct: 20.47 %
                  Tag: {"location" : "default"}
               ErrMsg:
              Version: 1.1.2-rc03-ca55ac2
               Status: {"lastSuccessReportTabletsTime":"2022-08-17 13:33:05","lastStreamLoadTime":-1,"isQueryDisabled":false,"isLoadDisabled":false}
1 row in set (0.01 sec)

1.Alive : true表示节点运行正常


2.SystemDecommissioned: false 表示节点没有执行下线,如果执行下线操作,这里显示的是true


如果 BE 节点没有正常加入到集群,请查看 BE 的 log/be.WARNING 日志获取更多信息排查问题。


如果出现下面的信息。

W0817 12:37:01.090358 11126 task_worker_pool.cpp:1598] report TASK failed. status: 0, master host: 127.0.0.1, port:9020

说明 priority_networks 这个配置有问题,请检查后重新配置,然后执行下面命令将 BE 节点从集群中删除

ALTER SYSTEM DROPP BACKEND "be_host_ip:heartbeat_service_port";

然后配置好之后,清楚 BE 配置的存储目录下的所有数据,重新启动。在按照上面添加 BE节点到集群的部分将 BE 节点重新添加到集群中


停止 BE 节点


运行以下命令可以停止 BE 节点

./bin/stop_be.sh 

至此我们安装部署完成,下一讲我们开始讲解怎么创建 Doris 数据表

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
27天前
|
消息中间件 OLAP Kafka
Apache Doris 实时更新技术揭秘:为何在 OLAP 领域表现卓越?
Apache Doris 为何在 OLAP 领域表现卓越?凭借其主键模型、数据延迟、查询性能、并发处理、易用性等多方面特性的表现,在分析领域展现了独特的实时更新能力。
166 9
|
27天前
|
人工智能 运维 监控
智能运维与数据治理:基于 Apache Doris 的 Data Agent 解决方案
本文基于 Apache Doris 数据运维治理 Agent 展开讨论,如何让 AI 成为 Doris 数据运维工程师和数据治理专家的智能助手,并在某些场景下实现对人工操作的全面替代。这种变革不仅仅是技术层面的进步,更是数据运维治理思维方式的根本性转变:从“被动响应”到“主动预防”,从“人工判断”到“智能决策”,从“孤立处理”到“协同治理”。
165 11
智能运维与数据治理:基于 Apache Doris 的 Data Agent 解决方案
|
28天前
|
SQL 存储 运维
Apache Doris 在菜鸟的大规模湖仓业务场景落地实践
本文介绍了 Apache Doris 在菜鸟的大规模落地的实践经验,菜鸟为什么选择 Doris,以及 Doris 如何在菜鸟从 0 开始,一步步的验证、落地,到如今上万核的规模,服务于各个业务线,Doris 已然成为菜鸟 OLAP 数据分析的最优选型。
128 2
Apache Doris 在菜鸟的大规模湖仓业务场景落地实践
|
27天前
|
SQL 存储 JSON
Apache Doris 2.1.10 版本正式发布
亲爱的社区小伙伴们,Apache Doris 2.1.10 版本已正式发布。2.1.10 版本对湖仓一体、半结构化数据类型、查询优化器、执行引擎、存储管理进行了若干改进优化。欢迎大家下载使用。
108 5
|
28天前
|
人工智能 自然语言处理 数据挖掘
Apache Doris 4.0 AI 能力揭秘(一):AI 函数之 LLM 函数介绍
在即将发布的 Apache Doris 4.0 版本中,我们正式引入了一系列 LLM 函数,将前沿的 AI 能力与日常的数据分析相结合,无论是精准提取文本信息,还是对评论进行情感分类,亦或生成精炼的文本摘要,皆可在数据库内部无缝完成。
79 0
Apache Doris 4.0 AI 能力揭秘(一):AI 函数之 LLM 函数介绍
|
9月前
|
存储 人工智能 大数据
The Past, Present and Future of Apache Flink
本文整理自阿里云开源大数据负责人王峰(莫问)在 Flink Forward Asia 2024 上海站主论坛开场的分享,今年正值 Flink 开源项目诞生的第 10 周年,借此时机,王峰回顾了 Flink 在过去 10 年的发展历程以及 Flink社区当前最新的技术成果,最后展望下一个十年 Flink 路向何方。
669 33
The Past, Present and Future of Apache Flink
|
11月前
|
SQL Java API
Apache Flink 2.0-preview released
Apache Flink 社区正积极筹备 Flink 2.0 的发布,这是自 Flink 1.0 发布以来的首个重大更新。Flink 2.0 将引入多项激动人心的功能和改进,包括存算分离状态管理、物化表、批作业自适应执行等,同时也包含了一些不兼容的变更。目前提供的预览版旨在让用户提前尝试新功能并收集反馈,但不建议在生产环境中使用。
1466 13
Apache Flink 2.0-preview released
|
6月前
|
SQL 存储 人工智能
Apache Flink 2.0.0: 实时数据处理的新纪元
Apache Flink 2.0.0 正式发布!这是自 Flink 1.0 发布九年以来的首次重大更新,凝聚了社区两年的努力。此版本引入分离式状态管理、物化表、流批统一等创新功能,优化云原生环境下的资源利用与性能表现,并强化了对人工智能工作流的支持。同时,Flink 2.0 对 API 和配置进行了全面清理,移除了过时组件,为未来的发展奠定了坚实基础。感谢 165 位贡献者的辛勤付出,共同推动实时计算进入新纪元!
761 1
Apache Flink 2.0.0: 实时数据处理的新纪元
|
11月前
|
存储 缓存 算法
分布式锁服务深度解析:以Apache Flink的Checkpointing机制为例
【10月更文挑战第7天】在分布式系统中,多个进程或节点可能需要同时访问和操作共享资源。为了确保数据的一致性和系统的稳定性,我们需要一种机制来协调这些进程或节点的访问,避免并发冲突和竞态条件。分布式锁服务正是为此而生的一种解决方案。它通过在网络环境中实现锁机制,确保同一时间只有一个进程或节点能够访问和操作共享资源。
392 3

推荐镜像

更多