下一代实时数据库:Apache Doris 【三】集群部署

2023-09-22 08:42:14 浏览数 (1)

2.3 安装要求

2.3.1 软硬件需求
  1. Linux 操作系统要求

linux 系统 版本 Centos 7.1 及以上 Ubuntu 16.04 及以上 2)软件需求

软件 版本 Java 1.8 及以上 GCC 4.8.2 及以上 3)开发测试环境

模块 CPU 内存 磁盘 网络 实例数量 Frontend 8 核 8GB SSD 或 SATA ,10GB * 千兆网卡 1 Backend 8 核 16GB SSD 或 SATA ,50GB * 千兆网卡 1-3* 4) 生产环境

模块 CPU 内存 磁盘 网络 实例数量 Frontend 16 核 64GB SSD 或 SATA,100GB * 万兆网卡 1-5* Backend 16 核 64GB SSD 或 SATA,100GB * 万兆网卡 10- 100*

5)注意事项 (1) FE 的磁盘空间主要用于存储元数据,包括日志和 image。通常从几百 MB 到几个 GB 不等。 (2) BE 的磁盘空间主要用于存放用户数据, 总磁盘空间按用户总数据量* 3 (3 副本) 计算, 然后再预留额外 40%的空间用作后台 compaction 以及一些中间数据的存放。 (3) 一台机器上可以部署多个 BE 实例, 但是只能部署一个 FE。如果需要 3 副本数 据, 那么至少需要 3 台机器各部署一个 BE 实例(而不是 1 台机器部署 3 个 BE 实例) 。多 个 FE 所在服务器的时钟必须保持一致(允许最多5 秒的时钟偏差) (4) 测试环境也可以仅适用一个 BE 进行测试。实际生产环境,BE 实例数量直接决定 了整体查询延迟。 (5) 所有部署节点关闭 Swap。 (6) FE 节点数据至少为 1 (1 个 Follower) 。当部署 1 个 Follower 和 1 个 Observer 时, 可以实现读高可用。当部署 3 个 Follower 时,可以实现读写高可用(HA)。 (7) Follower 的数量必须为奇数,Observer 数量随意。 (8) 根据以往经验,当集群可用性要求很高时(比如提供在线业务), 可以部署 3 个 Follower 和 1-3 个 Observer。如果是离线业务, 建议部署 1 个 Follower 和 1-3 个 Observer。 (9) Broker 是用于访问外部数据源(如 HDFS) 的进程。通常,在每台机器上部署一 个 broker 实例即可。

2.3.2 默认端口

当部署多个 FE 实例时,要保证 FE 的 http_port 配置相同。 部署前请确保各个端口在应有方向上的访问权限。

2.4 集群部署

主机 1

主机 2

主机 3

FE(LEADER)

FE(FOLLOWER)

FE(OBSERVER)

BE

BE

BE

BROKER

BROKER

BROKER

生产环境建议 FE 和 BE 分开。

2.4.1 创建目录并拷贝编译后的文件

1)创建目录并拷贝编译后的文件

代码语言:javascript复制
mkdir /opt/module/apache-doris-0.15.0
cp   -r   /opt/software/apache-doris-0.15.0-incubating-src/output /opt/module/apache-doris-0.15.0

2)修改可打开文件数 (每个节点)

代码语言:javascript复制
sudo vim /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535

重启永久生效, 也可以用 ulimit -n 65535 临时生效。

2.4.2 部署 FE 节点

1)创建 fe 元数据存储的目录

代码语言:javascript复制
mkdir /opt/module/apache-doris-0.15.0/doris-meta

2)修改 fe 的配置文件

代码语言:javascript复制
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_networks = 192.168.8.101/24

注意: ⚫ 生产环境强烈建议单独指定目录不要放在 Doris 安装目录下,最好是单独的磁盘(如果

有 SSD 最好)。 ⚫ 如果机器有多个 ip, 比如内网外网, 虚拟机 docker 等, 需要进行 ip 绑定, 才能正确识 别。 ⚫ JAVA_OPTS 默认 java 最大堆内存为 4GB,建议生产环境调整至 8G 以上。

3)启动 hadoop1 的 FE

代码语言:javascript复制
/opt/module/apache-doris-0.15.0/fe/bin/start_fe.sh --daemon
2.4.3 配置 BE 节点

1)分发 BE

代码语言:javascript复制
scp -r /opt/module/apache-doris-0.15.0/be hadoop2:/opt/module 

scp -r /opt/module/apache-doris-0.15.0/be hadoop3:/opt/module

2)创建 BE 数据存放目录 (每个节点)

代码语言:javascript复制
mkdir /opt/module/apache-doris-0.15.0/doris-storage1
mkdir /opt/module/apache-doris-0.15.0/doris-storage2

2)创建 BE 数据存放目录 (每个节点)

3)修改 BE 的配置文件 (每个节点)

代码语言:javascript复制
vim /opt/module/apache-doris-0.15.0/be/conf/be.conf
#配置文件中指定数据存放路径:
storage_root_path     =     /opt/module/apache-doris-0.15.0/doris- storage1;/opt/module/apache-doris-0.15.0/doris-storage2
#修改绑定 ip (每台机器修改成自己的 ip)
priority_networks = 192.168.8.101/24

注意: ⚫ storage_root_path 默认在 be/storage 下,需要手动创建该目录。多个路径之间使用英文状 态的分号;分隔(最后一个目录后不要加) 。 ⚫ 可以通过路径区别存储目录的介质, HDD 或 SSD。可以添加容量限制在每个路径的末 尾,通过英文状态逗号,隔开,如:

代码语言:javascript复制
storage_root_path=/home/disk1/doris.HDD,50;/home/disk2/doris.SSD, 10;/home/disk2/doris

说明: /home/disk1/doris.HDD,50,表示存储限制为 50GB ,HDD; /home/disk2/doris.SSD,10,存储限制为 10GB ,SSD; /home/disk2/doris,存储限制为磁盘最大容量, 默认为 HDD ⚫ 如果机器有多个 IP, 比如内网外网, 虚拟机 docker 等, 需要进行 IP 绑定,才能正确识 别。

2.4.4 在 FE 中添加所有 BE 节点

BE 节点需要先在 FE 中添加,才可加入集群。可以使用 mysql-client 连接到 FE。 1)安装 MySQL Client (1) 创建目录

代码语言:javascript复制
mkdir /opt/software/mysql-client/

(2) 上传相关以下三个 rpm 包到/opt/software/mysql-client/ ➢ mysql-community-client-5.7.28- 1.el7.x86_64.rpm ➢ mysql-community-common-5.7.28- 1.el7.x86_64.rpm ➢ mysql-community-libs-5.7.28- 1.el7.x86_64.rpm (3) 检查当前系统是否安装过 MySQL

代码语言:javascript复制
sudo rpm -qa |grep mariadb
#如果存在,先卸载
sudo rpm -e --nodeps mariadb mariadb-libs mariadb-server

(4) 安装

代码语言:javascript复制
rpm -ivh /opt/software/mysql-client/*

2)使用 MySQL Client 连接 FE

代码语言:javascript复制
mysql -h hadoop1 -P 9030 -uroot

默认 root 无密码, 通过以下命令修改 root 密码。

代码语言:javascript复制
SET PASSWORD FOR 'root' = PASSWORD('000000');

3)添加 BE

代码语言:javascript复制
ALTER SYSTEM ADD BACKEND "hadoop1:9050";
ALTER SYSTEM ADD BACKEND "hadoop2:9050";
ALTER SYSTEM ADD BACKEND "hadoop3:9050";

4)查看 BE 状态

代码语言:javascript复制
SHOW PROC '/backends';
2.4.5 启动 BE

1)启动 BE (每个节点)

代码语言:javascript复制
/opt/module/apache-doris-0.15.0/be/bin/start_be.sh --daemon

2)查看 BE 状态

代码语言:javascript复制
mysql -h hadoop1 -P 9030 -uroot -p
SHOW PROC '/backends';

Alive 为 true 表示该 BE 节点存活。

2.4.6 部署 FS_Broker (可选)

Broker 以插件的形式, 独立于 Doris 部署。如果需要从第三方存储系统导入数据, 需要 部署相应的 Broker,默认提供了读取 HDFS、百度云 BOS 及 Amazon S3 的 fs_broker 。 fs_broker 是无状态的,建议每一个 FE 和 BE 节点都部署一个 Broker。 1)编译 FS_BROKER 并拷贝文件 (1) 进入源码目录下的 fs_brokers 目录, 使用 sh build.sh 进行编译 (2) 拷贝源码 fs_broker 的 output 目录下的相应 Broker 目录到需要部署的所有节点 上,改名为: apache_hdfs_broker。建议和 BE 或者 FE 目录保持同级。 方法同 2.2。 2)启动 Broker

代码语言:javascript复制
/opt/module/apache-doris-                             0.15.0/apache_hdfs_broker/bin/start_broker.sh --daemon

3)添加 Broker 要让 Doris 的 FE 和 BE 知道 Broker 在哪些节点上,通过 sql 命令添加 Broker 节 点列表。 (1) 使用 mysql-client 连接启动的 FE,执行以下命令:

代码语言:javascript复制
mysql -h hadoop1 -P 9030 -uroot -p
ALTER        SYSTEM        ADD        BROKER        broker_name
"hadoop1:8000","hadoop2:8000","hadoop3:8000";

其中 broker_host 为 Broker 所在节点 ip ;broker_ipc_port 在 Broker 配置文件中的 conf/apache_hdfs_broker.conf。 4)查看 Broker 状态 使用 mysql-client 连接任一已启动的 FE,执行以下命令查看 Broker 状态:

代码语言:javascript复制
SHOW PROC "/brokers";

注: 在生产环境中, 所有实例都应使用守护进程启动, 以保证进程退出后, 会被自动拉 起, 如 Supervisor (opens new window) 。如需使用守护进程启动, 在 0.9.0 及之前版本中, 需要修改各个 start_xx.sh 脚本,去掉最后的 & 符号。从 0.10.0 版本开始,直接调用 sh start_xx.sh 启动即可。

0 人点赞