百度数据仓库Palo Doris版安装部署往这看!

2022-06-09 00:00:00 版本 节点 部署 编译 升级

数据仓库Palo Doris版是基于Apache Doris(百度自研的分析型数据库引擎)构建的企业级MPP云数据仓库,Palo Doris版全面兼容MySQL协议,提供快捷查询UI,易于使用;支持高并发低延时查询,支持PB级以上的超大数据集,可有效地支持在线实时数据分析。


废话不多说,直接开更!!!



获取安装包

Doris 的安装包即编译后产生的二进制文件。主要包括 FE、BE、BROKER 以及其他扩展程序。

用户可以直接使用预编译好的安装包,或者自行从源码编译获取。

获取预编译安装包

预编译安装包是由百度 Doris 开发团队提供的基于 Doris 三位版本的预编译版本。该版本已在 centos7 上验证运行通过,用户可以下载对应版本后,直接解压运行。

下载地址请前往 预编译版本 下载。

从源码编译

用户也可以自行从源码编译获取安装包。

因为 Doris 源码编译依赖大量第三方组件库,而在不同系统环境下编译这些第三方组件库可能会产生诸多问题。因此这里我们仅介绍通过 Docker 编译镜像
 进行 Doris 源码编译的方式。如需自行编译第三方组件库,请前往 本地编译 文档参考。

说明:Docker 编译镜像仅仅是 Doris 源码编译环境,并不是 Doris 的运行环境。镜像中已经内置了编译所需的所有工具和已编译好的第三方依赖库。基于镜像编译产出的安装包可以部署运行于物理机、虚机、Docker等各种环境中。

    1. 下载 Doris 源码

    • 从 Baidu Doris 仓库 下载三位迭代版本(推荐

      百度 Doris 提供了基于 Apache Release 版本的 3 为快速迭代版本。这些版本已经在百度内部业务上大规模上线使用,相较于 Apache Release 版本,Bug 修复速度更快,稳定性相对更高。并且该版本与 Apache Release 版本完全兼容,推荐使用。

    • 从 Apache Github 下载 Apache Release 版本

      这里是 Apache Doris Github 仓库,可以直接下载 tag 源码包,会通过 git clone
       下载代码仓库。

    • 从 Apache SVN 下载 Apache Release 版本

      这里是 Apache 官方 SVN 仓库,可以下载 Release 版本源码并进行签名校验。

    2. 下载 Docker 编译环境镜像

    • 请先确保已安装 Docker。CentOS 用户通过以下命令快速安装 Docker:

      yum -y install docker-io
      service docker start

      下载 Docker 编译镜像:

      docker pull apachedoris/doris-dev:build-env-1.2
      docker pull apachedoris/doris-dev:build-env-1.3

      注: 针对不同的 Doris 版本,需要下载对应的镜像版本

      镜像版本commit iddoris 版本
      apachedoris/doris-dev:build-env-1.24ef5a8c0.12.x, 0.13
      apachedoris/doris-dev:build-env-1.3ad67dd30.14.x 或更新版本

      注意: Doris 0.14.0 版本仍然使用apachedoris/doris-dev:build-env-1.2 编译,之后的代码将使用apachedoris/doris-dev:build-env-1.3

    3. 运行镜像

    • 运行一下命令挂载源码路径并进入容器。

      docker run -it -v local/path/to/.m2:/root/.m2/ -v local/path/to/doris-src/:/root/doris apachedoris/doris-dev:build-env-1.2

      这里我们假设本地 Doris 源码路径为 /local/path/to/doris-src/
      ,并将容器内的 /root/doris
       路径挂载到宿主机的源码路径。同时这里将镜像中 maven 的 .m2
       目录 /root/.m2/
       挂载到宿主机对应的 .m2
       目录 /local/path/to/.m2
      ,以防止每次启动镜像编译时,重复下载 maven 的依赖库。

    4. 编译 Doris

    • 在容器内进入源码目录,执行:

      $ sh build.sh

      编译完成后,产出文件在 output/
       目录中。




安装与部署


该章节主要介绍了部署 Doris 所需软硬件环境、建议的部署方式、集群扩容缩容,以及集群搭建到运行过程中的常见问题。

在阅读本章节前,请先根据编译文档编译 Doris。

软硬件需求

Linux 操作系统版本需求

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

软件需求

软件版本
Java1.8 及以上

开发测试环境

模块CPU内存磁盘网络实例数量
Frontend8核+8GB+SSD 或 SATA,10GB+ *千兆网卡1
Backend8核+16GB+SSD 或 SATA,50GB+ *千兆网卡1-3 *

生产环境

模块CPU内存磁盘网络实例数量(低要求)
Frontend16核+64GB+SSD 或 RAID 卡,100GB+ *万兆网卡1-5 *
Backend16核+64GB+SSD 或 SATA,100G+ *万兆网卡10-100 *

注1:

  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。

注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。

  • 通常我们建议 10 ~ 100 台左右的机器,来充分发挥 Doris 的性能(其中 3 台部署 FE(HA),剩余的部署 BE)

  • 当然,Doris的性能与节点数量及配置正相关。在少4台机器(一台 FE,三台 BE,其中一台 BE 混部一个 Observer FE 提供元数据备份),以及较低配置的情况下,依然可以平稳的运行 Doris。

  • 如果 FE 和 BE 混部,需注意资源竞争问题,并保证元数据目录和数据目录分属不同磁盘。

Broker 部署

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

网络需求

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

实例名称端口名称默认端口通讯方向说明
BEbe_port9060FE --> BEBE 上 thrift server 的端口,用于接收来自 FE 的请求
BEwebserver_port8040BE <--> BEBE 上的 http server 的端口
BEheartbeat_service_port9050FE --> BEBE 上心跳服务端口(thrift),用于接收来自 FE 的心跳
BEbrpc_port*8060FE<-->BE, BE <--> BEBE 上的 brpc 端口,用于 BE 之间通讯
FEhttp_port *8030FE <--> FE,用户FE 上的 http server 端口
FErpc_port9020BE --> FE, FE <--> FEFE 上的 thrift server 端口,每个fe的配置需要保持一致
FEquery_port9030用户FE 上的 mysql server 端口
FEedit_log_port9010FE <--> FEFE 上的 bdbje 之间通信用的端口
Brokerbroker_ipc_port8000FE --> Broker, BE --> BrokerBroker 上的 thrift server,用于接收请求

注:

  1. 当部署多个 FE 实例时,要保证 FE 的 http_port 配置相同。

  2. 部署前请确保各个端口在应有方向上的访问权限。

IP 绑定

因为有多网卡的存在,或因为安装过 docker 等环境导致的虚拟网卡的存在,同一个主机可能存在多个不同的 ip。当前 Doris 并不能自动识别可用 IP。所以当遇到部署主机上有多个 IP 时,必须通过 priority_networks 配置项来强制指定正确的 IP。

priority_networks 是 FE 和 BE 都有的一个配置,配置项需写在 fe.conf 和 be.conf 中。该配置项用于在 FE 或 BE 启动时,告诉进程应该绑定哪个IP。示例如下:

priority_networks=10.1.3.0/24

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

注意:当配置完 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 同理。

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

文件句柄数

Doris BE 节点运行时要求系统文件句柄数大于 65535。可以通过 ulimit -n
 命令查看。

如需修改,可打开 /etc/security/limits.conf

在 #End of file
 之前加⼊如下两行:

* soft nofile 65535
* hard nofile 65535

集群部署

FE 部署

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

    将源码编译生成的 output 下的 fe 文件夹拷贝到 FE 的节点指定部署路径下。

  • 配置 FE

  • 1.    配置文件为 conf/fe.conf。其中注意:meta_dir
    :元数据存放位置。默认在 fe/doris-meta/ 下。需手动创建该目录。

    2.    fe.conf 中 JAVA_OPTS 默认 java 大堆内存为 4GB,建议生产环境调整至 8G 以上。

  • 启动FE

    sh bin/start_fe.sh --daemon

    FE进程启动进入后台执行。日志默认存放在 fe/log/ 目录下。如启动失败,可以通过查看 fe/log/fe.log 或者 fe/log/fe.out 查看错误信息。

  • 如需部署多 FE,请参见之后的 "FE 扩容和缩容" 章节。

BE 部署

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

    将源码编译生成的 output 下的 be 文件夹拷贝到 BE 的节点的指定部署路径下。

  • 修改所有 BE 的配置

    修改 be/conf/be.conf。主要是配置 storage_root_path
    :数据存放目录。默认在be/storage下,需要手动创建该目录。多个路径之间使用 ;
     分隔(后一个目录后不要加 ;
    )。

  • 启动 BE

    sh bin/start_be.sh --daemon

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

    这时,BE 启动后并未加入集群,而是出于等待 FE 心跳的状态,需继续执行之后的步骤。

  • 在 FE 中添加所有 BE 节点

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

    ./mysql-client -h host -P port -uroot

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

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

    ALTER SYSTEM ADD BACKEND "host:port";

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

  • 查看BE状态

    使用 mysql-client 连接到 FE,并执行 SHOW PROC '/backends';
     查看 BE 运行情况。如一切正常,isAlive
     列应为 true

Broker 部署(可选)

Broker 是独立的进程,独立于 Doris 部署。如果需要从第三方存储系统导入数据,需要部署相应的 Broker,Broker 是无状态的,建议每一个节点都部署一个 Broker。

  • 拷贝源码 fs_broker 的 output 目录下的相应 Broker 目录到需要部署的所有节点上。建议和 BE 或者 FE 目录保持同级。

  • 修改相应 Broker 配置

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

  • 启动 Broker

    sh bin/start_broker.sh --daemon
     启动 Broker。

  • 添加 Broker

    要让 Doris 的 FE 和 BE 知道 Broker 在哪些节点上,通过 sql 命令添加 Broker 节点列表。

    使用 mysql-client 连接启动的 FE,执行以下命令:

    ALTER SYSTEM ADD BROKER broker_name "host1:port1","host2:port2",...;

    其中 host 为 Broker 所在节点 ip;port 为 Broker 配置文件中的 broker_ipc_port。broker_name
     为自定义名称。

  • 查看 Broker 状态

    使用 mysql-client 连接任一已启动的 FE,执行以下命令查看 Broker 状态:SHOW PROC "/brokers";

注:在生产环境中,所有实例都应使用守护进程启动,以保证进程退出后,会被自动拉起,如 Supervisord

扩容缩容

Doris 可以很方便的扩容和缩容 FE、BE、Broker 实例。

FE 扩容和缩容

可以通过将 FE 扩容至 3 个以上节点来实现 FE 的高可用。

用户可以通过 mysql 客户端登陆 Master FE。通过:

SHOW PROC '/frontends';

来查看当前 FE 的节点情况。

FE 节点的扩容和缩容过程,不影响当前系统运行。

1.    增加 FE 节点

FE 分为 Follower 和 Observer 两种角色。其中多个 Follower 行程可选组组,自动选择出一个作为 Leader。一个集群,只能有一个 Leader,其余为 Follower 和 Observer。如果 Leader 宕机,则剩下的 Follower 会自动选出新的 Leader,保证写入高可用。Observer 同步 Leader 的数据,但是不参加选举。如果只部署一个 FE,则 FE 默认就是 Leader。

个启动的 FE 自动成为 Leader。在此基础上,可以添加若干 Follower 和 Observer。

添加 Follower 或 Observer。使用 mysql-client 连接到已启动的 FE,并执行:

ALTER SYSTEM ADD FOLLOWER "host:port";

ALTER SYSTEM ADD OBSERVER "host:port";

其中 host 为 Follower 或 Observer 所在节点 ip,port 为其配置文件 fe.conf 中的 edit_log_port。

配置及启动 Follower 或 Observer。Follower 和 Observer 的配置同 Leader 的配置。次启动时,需执行以下命令:

./bin/start_fe.sh --helper host:port --daemon

其中 host 为 Leader 所在节点 ip, port 为 Leader 的配置文件 fe.conf 中的 edit_log_port。--helper 参数仅在 follower 和 observer 次启动时才需要。

查看 Follower 或 Observer 运行状态。使用 mysql-client 连接到任一已启动的 FE,并执行:SHOW PROC '/frontends'; 可以查看当前已加入集群的 FE 及其对应角色。

FE 扩容注意事项:

1. Follower FE(包括 Leader)的数量必须为奇数,建议多部署 3 个组成高可用(HA)模式即可。

2. 当 FE 处于高可用部署时(1个 Leader,2个 Follower),我们建议通过增加 Observer FE 来扩展 FE 的读服务能力。当然也可以继续增加 Follower FE,但几乎是不必要的。

3. 通常一个 FE 节点可以应对 10-20 台 BE 节点。建议总的 FE 节点数量在 10 个以下。而通常 3 个即可满足绝大部分需求。

4. helper 不能指向 FE 自身,必须指向一个或多个已存在并且正常运行中的 Master/Follower FE。

2.    删除 FE 节点

使用以下命令删除对应的 FE 节点:

ALTER SYSTEM DROP FOLLOWER[OBSERVER] "fe_host:edit_log_port";

FE 缩容注意事项:

1. 删除 Follower FE 时,确保终剩余的 Follower(包括 Leader)节点为奇数。

2. 不可删除当前 Leader FE 节点。如需删除 Leader,请先将 Leader 节点服务杀掉,等自动选出新的 Leader 后,在通过命令删除这个节点。

BE 扩容和缩容

用户可以通过 mysql-client 登陆 Leader FE。通过:

SHOW PROC '/backends';

来查看当前 BE 的节点情况。

BE 节点的扩容和缩容过程,不影响当前系统运行以及正在执行的任务,并且不会影响当前系统的性能。数据均衡会自动进行。根据集群现有数据量的大小,集群会在几个小时到1天不等的时间内,恢复到负载均衡的状态。

3.    增加 BE 节点

BE 节点的增加方式同 BE 部署 一节中的方式,通过 ALTER SYSTEM ADD BACKEND
 命令增加 BE 节点。

BE 扩容注意事项:

BE 扩容后,Doris 会自动根据负载情况,进行数据均衡,期间不影响使用。

4.    删除 BE 节点

删除 BE 节点有两种方式:DROP 和 DECOMMISSION

DROP 语句如下:

ALTER SYSTEM DROP BACKEND "be_host:be_heartbeat_service_port";

注意:DROP BACKEND 会直接删除该 BE,并且其上的数据将不能再恢复!!!所以我们强烈不推荐使用 DROP BACKEND 这种方式删除 BE 节点。当你使用这个语句时,会有对应的防误操作提示。

DECOMMISSION 语句如下:

ALTER SYSTEM DECOMMISSION BACKEND "be_host:be_heartbeat_service_port";

DECOMMISSION 命令说明:

1. 该命令用于安全删除 BE 节点。命令下发后,Doris 会尝试将该 BE 上的数据向其他 BE 节点迁移,当所有数据都迁移完成后,Doris 会自动删除该节点。

2. 该命令是一个异步操作。执行后,可以通过 SHOW PROC '/backends';
 看到该 BE 节点的 isDecommission 状态为 true。表示该节点正在进行下线。

3. 该命令不一定执行成功。比如剩余 BE 存储空间不足以容纳下线 BE 上的数据,或者剩余机器数量不满足小副本数时,该命令都无法完成,并且 BE 会一直处于 isDecommission 为 true 的状态。

4. DECOMMISSION 的进度,可以通过 SHOW PROC '/backends';
 中的 TabletNum 查看,如果正在进行,TabletNum 将不断减少。

5. 该操作可以通过:

CANCEL DECOMMISSION BACKEND "be_host:be_heartbeat_service_port";

命令取消。取消后,该 BE 上的数据将维持当前剩余的数据量。后续 Doris 重新进行负载均衡



Broker 扩容缩容

Broker 实例的数量没有硬性要求。通常每台物理机部署一个即可。Broker 的添加和删除可以通过以下命令完成:

ALTER SYSTEM ADD BROKER broker_name "broker_host:broker_ipc_port";
ALTER SYSTEM DROP BROKER broker_name "broker_host:broker_ipc_port";
ALTER SYSTEM DROP ALL BROKER broker_name;

Broker 是无状态的进程,可以随意启停。当然,停止后,正在其上运行的作业会失败,重试即可。




集群升级


Palo 的升级方式和 Apache Doris 完全一致。用户也可以参考 Apache Doris 官网文档 进行升级。

本章节说明用户下载新版本的二进制包后的升级步骤。

注1:升级是在原集群上升级,无需重做数据。

注2:通常情况下,集群升级只需升级 FE、BE、Broker 进程。

注3:升级流程须严格按照 BE -> FE -> Broker 的顺序进行升级。

升级步骤

这里我们以从 0.14.13.1 版本升级到 0.15.1-rc03 版本为例。

1. 下载二进制包并解压

tar xzf PALO-0.15.1-rc03-binary.tar.gz

解压后的目录结构如下:

├── PALO-0.15.1-rc03-binary
   ├── apache_hdfs_broker
   ├── auditloader.zip
   ├── be
   ├── doris-flink-1.0-SNAPSHOT.jar
   ├── doris-spark-1.0.0-SNAPSHOT.jar
   ├── fe
   └── udf

2. 升级 BE

这里我们假设 BE 的安装路径为 /path/to/be/
。BE 节点分别为 hostA、hostB、hostC。

通过以上步骤将所有 BE 节点升级完成后。可以进一步先观察集群运行情况,再继续升级 FE 节点。

    1. 首先我们进入到 hostA 的 /path/to/be/
     目录下,通过 sh bin/stop_be.sh
     停止 BE 进程。

    2. 将 /path/to/be/lib/
     目录中的 palo_be
     和 meta_tool
     文件替换为新版本中的 PALO-0.15.1-rc03-binary/be/lib/
     目录下的同名文件。

    3. 通过 sh bin/start_be.sh --daemon
     启动 BE 进程。

    4. 此时,我们已经完成 hostA 上 BE 节点的更新。此时我们可以先观察集群运行是否正常。如果一切正常,则可以重复步骤 1-3 来升级其余的 2 个BE节点。(Palo 保证新版本的向前兼容性,所以新版本原则上是可以和旧版本同时运行的。)

    3. 升级 FE

    1. FE 节点的升级顺序为:Observer -> 非 Master FE 节点 -> Master FE 节点

    FE 的节点类型和是否是 Master,可以通过 show frontends
     语句结果中的 Role
     和 IsMaster
     列获取。

    如果只部署了一个 FE 节点,强烈建议先按照 Doris 官方升级文档 中的 测试 FE 元数据兼容性 一节进行元数据兼容性验证。

    通过以上步骤将所有 FE 节点升级完成后。则 Palo 的主进程(FE、BE)都已升级完成。

    2. 进入 FE 的安装路径 /path/to/fe/
    ,通过 sh bin/stop_fe.sh
     停止 FE 进程。

    3. 将 /path/to/fe/lib/
     目录整体替换为新版本中的 PALO-0.15.1-rc03-binary/fe/lib/
     目录。

    4. 通过 sh bin/start_fe.sh --daemon
     启动 FE 进程。

    5. 此时,我们已经完这个 FE 节点的更新。此时我们可以通过 MySQL client 连接这个 FE 节点进行一些查询或导入操作,来观察集群是否正常。如果一切正常,则可以重复步骤 1-3 来升级其余的 FE 节点。

    4. 升级 Broker

    如果用户部署了 Broker 进程,则可以按照以下步骤进行升级。

    Broker 为无状态进程,全部升级即可。

    通过以上步骤将所有 Broker 节点升级完成即可。


    1. 进入 Broker 的安装路径 /path/to/broker/
    ,通过 sh bin/stop_broker.sh
     停止 Broker 进程。

    2. 将 /path/to/broker/lib/
     目录整体替换为新版本中的 PALO-0.15.1-rc03-binary/apache_hdfs_broker/lib/
     目录。

    3. 通过 sh bin/start_broker.sh --daemon
     启动 Broker 进程。

    4. 此时,我们已经完这个 Broker 节点的更新。重复步骤 1-3 来升级其余的 Broker 节点。

    5. 测试升级结果

    通过 MySQL client 连接任意 FE 节点进行业务操作,观察业务运行情况即可。


关于版本回滚

因为数据库是一个有状态的服务,所以在大多数情况下,Palo/Doris 无法支持版本回滚(版本降级)。在某些情况下,可以支持 3 位或 4 位版本的回滚,但不会支持 2 为版本的回滚。

所以建议通过先升级部分节点并观察业务运行情况的方式(灰度升级)来降低升级风险。

如有回滚需求,请事先联系 Palo/Doris 开发人员进行确认。

非法的回滚操作可能导致数据丢失和损坏。

来源 https://www.modb.pro/db/148478

相关文章