MPP / 大数据

大数据技术之Apache Doris学习实践

温馨提示:本文最后更新于2022-07-25 14:02:02,某些文章具有时效性,若有错误或已失效,请在下方留言或提交工单提交工单
浅时光博客 · 7月25日 · 2022年 · 本文7144个字,预计阅读18分钟 4002次已读

一、Apache Doris简介


1、Doris概述

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

Apache Doris是一个现代化的MPP(Massively Parallel Processing,即大规模并行处理)分析型数据库产品。仅需亚秒级响应实践即可获得查询结果,有效地支持实时数据分析。Apache Doris的分布式架构非常简洁,易于运维,并且可以支持10PB以上的超大数据集。

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

大数据技术之Apache Doris学习实践-浅时光

2、Doris架构

大数据技术之Apache Doris学习实践-浅时光

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

  • FE(Frontend):存储、维护集群元数据;负责接收、解析查询请求,规划查询计划,调度查询执行,返回查询结果。主要有三个角色:
    • (1)Leader 和Follower:主要是用来达到元数据的高可用,保证单节点宕机的情况下,元数据能够实时地在线恢复,而不影响整个服务。
    • (2)Observer:用来扩展查询节点,同时起到元数据备份的作用。如果在发现集群压力非常大的情况下,需要去扩展整个查询的能力,那么可以加observer 的节点。observer 不参与任何的写入,只参与读取。
  • BE(Backend):负责物理数据的存储和计算;依据FE 生成的物理计划,分布式地执行查询。
    • 数据的可靠性由 BE  保证,BE  会对整个数据存储多副本或者是三副本。副本数可根据需求动态调整。
  • MySQL Client
    • Doris 借助 MySQL 协议,用户使用任意 MySQL 的 ODBC/JDBC 以及 MySQL 的客户端,都可以直接访问Doris。
  • Broker
    • Broker 为一个独立的无状态进程。封装了文件系统接口,提供 Doris 读取远端存储系统中文件的能力,包括HDFS,S3,BOS 等。

二、Apache Doris部署


1、软硬件要求

1.1:服务规格

大数据技术之Apache Doris学习实践-浅时光

1.2:机器节点

我这里规划为:三台机器上部署FE跟BE,注意:一台机器上可以部署多个BE但是只能部署一个FE

主机名称主机IP部署服务部署版本部署方式
doris-fe_be01192.168.66.151FE(LEADER) BE Broker1.0.0二进制包
doris-fe_be02192.168.66.152FE(FOLLOWER) BE Broker1.0.0二进制包
doris-fe_be03192.168.66.153FE(OBSERVER) BE Broker1.0.0二进制包

官方建议:

  • 通常我们建议 10 ~ 100 台左右的机器,来充分发挥 Doris 的性能(其中 3 台部署 FE(HA),剩余的部署 BE)
  • 当然,Doris的性能与节点数量及配置正相关。在最少4台机器(一台 FE,三台 BE,其中一台 BE 混部一个 Observer FE 提供元数据备份),以及较低配置的情况下,依然可以平稳的运行 Doris。
  • 如果 FE 和 BE 混部,需注意资源竞争问题,并保证元数据目录和数据目录分属不同磁文章来源(Source):https://www.dqzboy.com盘。
  • Broker 部署
    • Broker 是用于访问外部数据源(如 hdfs)的进程。通常,在每台机器上部署一个 broker 实例即可

注意事项(1)

  1. FE 的磁盘空间主要用于存储元数据,包括日志和 image。通常从几百 MB 到几个 GB 不等。
  2. BE 的磁盘空间主要用于存放用户数据,总磁盘空间按用户总数据量 * 3(3副本)计算,然后再预留额外 40% 的空间用作后台 compaction 以及一些中间数据的存放。
  3. 一台机器上可以部署多文章来源(Source):https://www.dqzboy.com个 BE 实例,但是只能部署一个 FE。如果需要 3 副本数据,那么至少需要 3 台机器各部署一个 BE 实例(而不是1台机器部署3个BE实例)。多个FE所在服务器的时钟必须保持一致(允许最多5秒的时钟偏差)
  4. 测试环境也可以仅适用一个 BE 进行测试。实际生产环境,BE 实例数量直接决定了整体查询延迟。
  5. 所有部署节点关闭 Swap。

注意事项(2)FE 节点的数量

  1. FE 角色分为 Follower 和 Observer,(Leader 为 Follower 组中选举出来的一种角色,以下统称 Follower)。
  2. FE 节点数据至少为1(1 个 Follower)。当部署 1 个 Follower 和 1 个 Observer 时,可以实现读高可用。当部署 3 个 Follower 时,可以实现读写高可用(HA)。
  3. Follower 的数量必须为奇数,Observer 数量随意。
  4. 根据以往经验,当集群可用性要求很高时(比如提供在线业务),可以部署 3 个 Follower 和 1-3 个 Observer。如果是离线业务,建议部署 1 个 Follower 和 1-3 个 Observer。

2、安装前准备

  • 所有节点都需要安装JDK
rpm -ivh jdk-8u281-linux-x64.rpm
  • 下载二进文章来源(Source):https://www.dqzboy.com制安装包
  • 解压安装包
#在节点1上进行解压安装,然后拷贝给另外的节点即可
[root@doris-fe_be01 soft]# tar -zxvf apache-doris-1.0.0-incubating-bin.tar.gz -C  /usr/local/

[root@doris-fe_be01 soft]# cd /usr/local/
[root@doris-fe_be01 local]# mv apache-doris-1.0.0-incubating-bin apache-doris
  • MySQL客户端
#卸载掉默认的MariaDB
rpm -e --nodeps mariadb mariadb-libs mariadb-server

#安装MySQL YUM源
rpm -ivh https://repo.mysql.com//mysql57-community-release-el7-11.noarch.rpm

#导入公钥
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

#安装MySQL客户端
yum install mysql-community-client

3、部署FE服务

3.1:修改配置

注意:

  1. fe.conf 中 JAVA_OPTS 默认 java 最大堆内存为 4GB,建议生产环境调整至 8G 以上
  2. 生产环境强烈建议 meta_dir 单独指定目录不要放在 Doris安装目录下,最好是单独的磁盘(最后是SSD磁盘)
  3. 如果机器有多个 ip, 比如内网外网 , 虚拟机 docker等 , 需要进行 ip绑定,才能正确识别。
#创建元数据和日志存储目录,FE节点都需要创建
mkdir -p /data/fe/{doris-meta,log}

#修改配置
[root@doris-fe_be01 ~]# vim /usr/local/apache-doris/fe/conf/fe.conf 
大数据技术之Apache Doris学习实践-浅时光

3.2:启动服务

cat > /usr/lib/systemd/system/doris-fe.service <<EOF
[Unit]
Description=Doris FE Service
Documentation=https://doris.apache.org
After=network.target network-online.target
Wants=network-online.target

[Service]
Type=forking
Environment="JAVA_HOME=/usr/java/jdk1.8.0_281-amd64"
User=root
Group=root
ExecStart=/usr/local/apache-doris/fe/bin/start_fe.sh --daemon
ExecStop=/usr/local/apache-doris/fe/bin/stop_fe.sh
ExecReload=/bin/kill --signal HUP
KillMode=control-group
KillSignal=SIGTERM
Restart=on-failure
LimitNOFILE=65536

[Install]
WantedBy=default.target
EOF


systemctl daemon-reload && systemctl restart doris-fe.service && systemctl enable doris-fe.service &&systemctl status doris-fe.service

3.3:HA配置

  1. FE的高可用集群采用主从复制架构, 可避免FE单点故障. FE采用了类raft的bdbje协议完成选主,  日志复制和故障切换.  在FE集群中,  多实例分为两种角色: follower和observer;  前者为复制协议的可投票成员, 参与选主和提交日志, 一般数量为奇数(2n+1), 使用多数派(n+1)确认,  可容忍少数派(n)故障;  而后者属于非投票成员,  用于异步订阅复制日志,  observer的状态落后于follower, 文章来源(Source):https://www.dqzboy.com 类似其他复制协议中的leaner角色.
  2. FE集群从follower中自动选出master节点,&n文章来源(Source):https://www.dqzboy.combsp; 所有更改状态操作都由master节点执行,  从FE的master节点可以读到最新的状态.  更改操作可以从非master节点发起,  继而转发给master节点执行, 非master节点记录最近一次更改操作在复制日志中的LSN, 读操作可以直接在非master节点上执行, 但需要等待非master节点的状态已经同步到最近一次更改操作的LSN, 因此读写非Master节点满足顺序一致性. Observer节点能够增加FE集群的读负载能力, 时效性要求放宽的非紧要用户可以读observer节点.
  3. FE节点之间的时钟相差不能超过5s, 使用NTP协议校准时间.
  4. 一台机器上只可以部署单个FE节点。所有FE节点的http_port需要相同。
#连接到FE
[root@doris-fe_be01 ~]# mysql -h 192.168.66.151 -P 9030 -uroot

#默认root无密码,通过以下命令修改 root密码 。
mysql> SET PASSWORD FOR 'root' = PASSWORD('admin123456');

mysql> ALTER SYSTEM ADD FOLLOWER "192.168.66.152:9010";
mysql> ALTER SYSTEM ADD OBSERVER "192.168.66.153:9010";
  1. 将节点1部署的apache-doris 目录拷贝至所有的FE节点,并登入各个FE节点修改配置,绑定为自己的IP地址
  2. 节点1上创建FE Follower和 Observer节点systemd启动文件,然后启动服务
cat > /usr/lib/systemd/system/doris-fe.service <<EOF
[Unit]
Description=Doris FE Service
Documentation=https://doris.apache.org
After=network.target network-online.target
Wants=network-online.target

[Service]
Type=forking
Environment="JAVA_HOME=/usr/java/jdk1.8.0_281-amd64"
User=root
Group=root
ExecStart=/usr/local/apache-doris/fe/bin/start_fe.sh --helper 192.168.66.151:9010 --daemon
ExecStop=/usr/local/apache-doris/fe/bin/stop_fe.sh
ExecReload=/bin/kill --signal HUP
KillMode=control-group
KillSignal=SIGTERM
Restart=on-failure
LimitNOFILE=65536

[Install]
WantedBy=default.target
EOF


systemctl daemon-reload && systemctl restart doris-fe.service && systemctl enable doris-fe.service &&systemctl status doris-fe.service

3.4:检查集群节点

[root@doris-fe_be01 ~]# mysql -h 192.168.66.151 -P 9030 -uroot -p
mysql> SHOW PROC '/frontends'\G
大数据技术之Apache Doris学习实践-浅时光

4、部署BE服务

4.1:修改配置

  • storage_root_path:默认在 be/storage下,需要手动创建该目录。多个路径之间使用英文状态的分号 ;分隔(最后一个目录后不要加)
  • priority_networks:修改绑定 ip,每台机器修改成自己的 ip
  • PPROF_TMPDIR:修改为指定存储的目录
#创建数据和日志存储目录,BE节点都需要创建
mkdir -p /data/be/{doris-storage1,doris-storage2,log}

[root@doris-fe_be01 ~]# vim /usr/local/apache-doris/be/conf/be.conf
大数据技术之Apache Doris学习实践-浅时光

将BE相关的配置和目录拷贝至其他的BE节点,然后登入到各个节点修改BE配置文件,修改绑定IP为自己的IP地址

4.2:添加BE节点

[root@doris-fe_be01 ~]# mysql -h 192.168.66.151 -P 9030 -uroot -p
ALTER SYSTEM ADD BACKEND "192.168.66.151:9050";
ALTER SYSTEM ADD BACKEND "192.168.66.152:9050";
ALTER SYSTEM ADD BACKEND "192.168.66.153:9050";

4.3:启动BE服务

cat > /usr/lib/systemd/system/doris-be.service <<EOF
[Unit]
Description=Doris BE Service
Documentation=https://doris.apache.org
After=network.target network-online.target
Wants=network-online.target

[Service]
Type=forking
Environment="JAVA_HOME=/usr/java/jdk1.8.0_281-amd64"
User=root
Group=root
ExecStart=/usr/local/apache-doris/be/bin/start_be.sh --daemon
ExecStop=/usr/local/apache-doris/be/bin/stop_be.sh
ExecReload=/bin/kill --signal HUP
KillMode=control-group
KillSignal=SIGTERM
Restart=on-failure
LimitNOFILE=65536

[Install]
WantedBy=default.target
EOF

systemctl daemon-reload && systemctl restart doris-be.service && systemctl enable doris-be.service && systemctl status doris-be.service

4.4:检查BE节点

[root@doris-fe_be01 ~]# mysql -h 192.168.66.151 -P 9030 -uroot -p
#Alive为 true表示该 BE节点存活
mysql> SHOW PROC '/backends'\G
大数据技术之Apache Doris学习实践-浅时光

三、Apache Doris UI


  • 默认使用 Http 协议进行 WebUI 访问,在浏览器输入以下格式地址访问
  • http://FE_IP:FE_HTTP_PORT(默认8030)
    • 默认账号:root
    • 默认密码:数据库root密码
大数据技术之Apache Doris学习实践-浅时光



关注本站官方微信公众号『精彩程序人生』

扫描左侧二维码关注我们的微信公众帐号,在微信公众帐号中回复【资料】即可获取各类互联网技术学习资料。
关注博主不迷路~


本文作者:浅时光博客
原文链接:https://www.dqzboy.com/10432.html
版权声明:知识共享署名-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)协议进行许可
转载时请以超链接形式标明文章原始出处和作者信息
免责声明:本站发布的内容(图片、视频和文字)以及一切破解补丁、注册激活和软件解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。访问和下载本站内容,说明您已同意上述条款!


相关文章
暂无相关文章!
0 条回应

必须 注册 为本站用户, 登录 后才可以发表评论!

    本站已稳定运行: | 耗时 0.241 秒 | 查询 69 次 | 内存 11.58 MB