Doris--基础--2.2--部署--理论

Doris–基础–2.2–部署–理论


1、介绍

  1. 部署 Doris 所需软硬件环境
  2. 建议的部署方式
  3. 集群扩容缩容
  4. 集群搭建到运行过程中的常见问题。

2、软硬件需求

为了能够充分运用 MPP 架构的并发优势,以及 Doris 的高可用特性,我们建议 Doris 的部署遵循以下需求

2.1、Linux操作系统 版本需求

Linux 系统版本
CentOS7.1 及以上
Ubuntu16.04 及以上

2.2、软件需求

软件版本
Java1.8 及以上
GCC4.8.2 及以上

2.3、操作系统安装要求

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

vi /etc/security/limits.conf 


* soft nofile 65536
* hard nofile 65536

2.4、时钟同步

Doris 的元数据要求时间精度要小于5000ms,所以所有集群所有机器要进行时钟同步,避免因为时钟问题引发的元数据不一致导致服务出现异常。

2.4.1、时间同步

# 安装ntpdate
yum install -y ntpdate

# 时间同步
ntpdate cn.pool.ntp.org

2.4.2、编辑计划任务,每小时做一次同步

[root@zhoufei ~]# crontab -e

内容

* */1 * * * /usr/sbin/ntpdate   cn.pool.ntp.org

2.4.3、重启crond服务

service crond restart

2.5、关闭交换分区(swap)

Linux交换分区会给Doris带来很严重的性能问题,需要在安装之前禁用交换分区

# 临时禁用
swapoff  -a


# 永久禁用,/etc/fstab中注释掉swap那一行。 
sed -i 's/.*swap.*/#&/' /etc/fstab

2.6、Liunx文件系统

这里我们推荐使用ext4文件系统,在安装操作系统的时候,请选择ext4文件系统。

2.7、开发测试环境

在这里插入图片描述

2.8、生产环境

在这里插入图片描述

2.8.1、注意点1:软硬件需求

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

2.8.2、注意点2:FE 节点的数量

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

2.8.3、建议

  1. 通常我们建议 10 ~ 100 台左右的机器,来充分发挥 Doris 的性能
    1. 其中 3 台部署 FE(HA)
    2. 剩余的部署 BE
  2. 当然,Doris的性能与节点数量及配置正相关。在最少4台机器(一台 FE,三台 BE,其中一台 BE 混部一个 Observer FE 提供元数据备份),以及较低配置的情况下,依然可以平稳的运行 Doris。
  3. 如果 FE 和 BE 混部,需注意资源竞争问题,并保证元数据目录和数据目录分属不同磁盘。

2.9、Broker 部署

  1. Broker 是用于访问外部数据源(如 hdfs)的进程。
  2. 通常,在每台机器上部署一个 broker 实例即可。

2.10、网络需求

Doris 各个实例直接通过网络进行通讯。以下表格展示了所有需要的端口

在这里插入图片描述

2.10.1、注意

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

2.11、IP 绑定

  1. 因为有多网卡的存在,或因为安装过 docker 等环境导致的虚拟网卡的存在,同一个主机可能存在多个不同的 ip。当前 Doris 并不能自动识别可用 IP。所以当遇到部署主机上有多个 IP 时,必须通过 priority_networks 配置项来强制指定正确的 IP。
  2. priority_networks 是 FE 和 BE 都有的一个配置,配置项需写在 fe.conf 和 be.conf 中。该配置项用于在 FE 或 BE 启动时,告诉进程应该绑定哪个IP。

2.11.1、示例

priority_networks=10.1.3.0/24
  1. 这是一种 CIDR 的表示方法。FE 或 BE 会根据这个配置项来寻找匹配的IP,作为自己的 localIP。

2.11.2、ADD BACKEND 或 ADD FRONTEND 语句

当配置完 priority_networks 并启动 FE 或 BE 后,只是保证了 FE 或 BE 自身的 IP 进行了正确的绑定。
而在使用 ADD BACKEND 或 ADD FRONTEND 语句中,也需要指定和 priority_networks 配置匹配的 IP,否则集群无法建立。

举例:

BE 的配置为:priority_networks=10.1.3.0/24

但是如果在 ADD BACKEND 时使用的是如下语句

ALTER SYSTEM ADD BACKEND "192.168.0.1:9050";

则 FE 和 BE 将无法正常通信。

这时,必须 DROP 掉这个添加错误的 BE,重新使用正确的 IP 执行 ADD BACKEND。

FE 同理。

2.11.3、Broker

  1. BROKER 当前没有,也不需要 priority_networks 这个选项。
  2. Broker 的服务默认绑定在 0.0.0.0 上。只需在 ADD BROKER 时,执行正确可访问的 BROKER IP 即可。

2.11.4、表名大小写敏感性设置

  1. doris默认为表名大小写敏感,如有表名大小写不敏感的需求需在集群初始化时进行设置。
  2. 表名大小写敏感性在集群初始化完成后不可再修改。
# 值为 0 时,表名大小写敏感。默认为0。
# 值为 1 时,表名大小写不敏感,doris在存储和查询时会将表名转换为小写。
lower_case_table_names=1

3、集群部署

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

3.1、FE 部署

3.1.1、拷贝 FE 部署文件到指定节点

将源码编译生成的 output 下的 fe 文件夹拷贝到 FE 的节点指定部署路径下,并进入该目录。

3.1.2、配置 FE

  1. 配置文件为 conf/fe.conf。
    1. 其中 meta_dir是元数据存放位置。
      1. 默认值为 ${DORIS_HOME}/doris-meta。需手动创建该目录。
      2. 生产环境强烈建议单独指定目录不要放在Doris安装目录下,最好是单独的磁盘(如果有SSD最好),测试开发环境可以使用默认配置
  2. fe.conf 中 JAVA_OPTS 默认 java 最大堆内存为 4GB,建议生产环境调整至 8G 以上。

3.1.3、启动FE

bin/start_fe.sh --daemon
  1. FE进程启动进入后台执行。
  2. 日志默认存放在 log/ 目录下。如启动失败,可以通过查看 log/fe.log 或者 log/fe.out 查看错误信息。
  3. 如需部署多 FE,请参见 “FE 扩容和缩容” 章节

3.2、BE 部署

3.2.1、拷贝 BE 部署文件到所有要部署 BE 的节点

  1. 将源码编译生成的 output 下的 be 文件夹拷贝到 BE 的节点的指定部署路径下。
  2. 注意:output/be/lib/debug_info/ 目录下为调试信息文件,文件较大,但实际运行不需要这些文件,可以不部署。

3.2.2、修改所有 BE 的配置

  1. 修改 be/conf/be.conf。
  2. 主要是配置 storage_root_path:数据存放目录。
    1. 默认在be/storage下,需要手动创建该目录。
    2. 多个路径之间使用英文状态的分号 ; 分隔(最后一个目录后不要加 😉。
    3. 可以通过路径区别存储目录的介质,HDD或SSD。
    4. 可以添加容量限制在每个路径的末尾,通过英文状态逗号,隔开。
  3. 如果用户不是SSD和HDD磁盘混合使用的情况,不需要按照如下示例1和示例2的配置方法配置,只需指定存储目录即可;也不需要修改FE的默认存储介质配置。
3.2.2.1、示例1

注意:

  1. 如果是 SSD磁盘 要在目录后面加上.SSD
  2. 如果是 HDD磁盘 要在目录后面加上.HDD
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
3.2.2.1、示例2

注意:

  1. 不论HDD磁盘目录还是SSD磁盘目录,都无需添加后缀,storage_root_path参数里指定medium即可
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;

3.2.3、BE webserver_port端口配置

如果 be 部署在 hadoop 集群中,注意调整 be.conf 中的 webserver_port = 8040 ,以免造成端口冲突

3.2.4、在 FE 中添加所有 BE 节点

BE 节点需要先在 FE 中添加,才可加入集群。可以使用 mysql-client(下载MySQL 5.7) 连接到 FE:

./mysql-client -h fe_host -P query_port -uroot

其中 fe_host 为 FE 所在节点 ip;query_port 在 fe/conf/fe.conf 中的;默认使用 root 账户,无密码登录。

登录后,执行以下命令来添加每一个 BE:

ALTER SYSTEM ADD BACKEND "be_host:heartbeat-service_port";

其中 be_host 为 BE 所在节点 ip;heartbeat_service_port 在 be/conf/be.conf 中。

3.2.5、启动 BE

bin/start_be.sh --daemon
  1. BE 进程将启动并进入后台执行。
  2. 日志默认存放在 be/log/ 目录下。如启动失败,可以通过查看 be/log/be.log 或者 be/log/be.out 查看错误信息。

3.2.6、查看BE状态

使用 mysql-client 连接到 FE,并执行以下语句,查看 BE 运行情况。如一切正常,isAlive 列应为 true。

SHOW PROC '/backends'

3.3、FS_Broker 部署(可选)

  1. Broker 以插件的形式,独立于 Doris 部署。
  2. 如果需要从第三方存储系统导入数据,需要部署相应的 Broker,默认提供了读取 HDFS 、对象存储的 fs_broker。
  3. fs_broker 是无状态的,建议每一个 FE 和 BE 节点都部署一个 Broker。

3.3.1、拷贝源码 fs_broker 的 output 目录下的相应 Broker 目录到需要部署的所有节点上。

建议和 BE 或者 FE 目录保持同级。

3.3.2、修改相应 Broker 配置

在相应 broker/conf/ 目录下对应的配置文件中,可以修改相应配置。

3.3.3、启动 Broker

bin/start_broker.sh --daemon

3.3.4、添加 Broker

  1. 要让 Doris 的 FE 和 BE 知道 Broker 在哪些节点上,通过 sql 命令添加 Broker 节点列表。
  2. 使用 mysql-client 连接启动的 FE,执行以下命令:
ALTER SYSTEM ADD BROKER broker_name "broker_host1:broker_ipc_port1","broker_host2:broker_ipc_port2",...;
  1. broker_host 为 Broker 所在节点 ip
  2. broker_ipc_port 在 Broker 配置文件中的conf/apache_hdfs_broker.conf。

3.3.5、查看 Broker 状态

使用 mysql-client 连接任一已启动的 FE,执行以下命令查看 Broker 状态

SHOW PROC "/brokers";
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值