乐趣区

关于数据库:百度数据仓库Palo-Doris版安装部署往这看

本文来源于百度开发者核心 https://developer.baidu.com/a…

数据仓库 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 版本源码并进行签名校验。
  1. 下载 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 版本,须要下载对应的镜像版本

留神: Doris 0.14.0 版本依然应用 apachedoris/doris-dev:build-env-1.2 编译,之后的代码将应用 apachedoris/doris-dev:build-env-1.3

  1. 运行镜像
  • 运行一下命令挂载源码门路并进入容器。
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 的依赖库。

  1. 编译 Doris
  • 在容器内进入源码目录,执行:
    $ sh build.sh
    编译实现后,产出文件在 output/ 目录中。

装置与部署

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

在浏览本章节前,请先依据编译文档编译 Doris。

软硬件需要

Linux 操作系统版本需要

软件需要

开发测试环境

生产环境

注 1:
FE 的磁盘空间次要用于存储元数据,包含日志和 image。通常从几百 MB 到几个 GB 不等。
BE 的磁盘空间次要用于寄存用户数据,总磁盘空间按用户总数据量 * 3(3 正本)计算,而后再预留额定 40% 的空间用作后盾 compaction 以及一些两头数据的寄存。
一台机器上能够部署多个 BE 实例,然而只能部署一个 FE。如果须要 3 正本数据,那么至多须要 3 台机器各部署一个 BE 实例(而不是 1 台机器部署 3 个 BE 实例)。多个 FE 所在服务器的时钟必须保持一致(容许最多 5 秒的时钟偏差)
测试环境也能够仅实用一个 BE 进行测试。理论生产环境,BE 实例数量间接决定了整体查问提早。
所有部署节点敞开 Swap。
注 2:FE 节点的数量
FE 角色分为 Follower 和 Observer,(Leader 为 Follower 组中选举进去的一种角色,以下统称 Follower。
FE 节点数据至多为 1(1 个 Follower)。当部署 1 个 Follower 和 1 个 Observer 时,能够实现读高可用。当部署 3 个 Follower 时,能够实现读写高可用(HA)。
Follower 的数量必须为奇数,Observer 数量随便。
依据以往教训,当集群可用性要求很高时(比方提供在线业务),能够部署 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 各个实例间接通过网络进行通信。以下表格展现了所有须要的端口

注:

  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。
  5. 删除 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 天不等的工夫内,复原到负载平衡的状态。

  1. 减少 BE 节点
    BE 节点的减少形式同 BE 部署 一节中的形式,通过 ALTER SYSTEM ADD BACKEND 命令减少 BE 节点。

BE 扩容注意事项:
BE 扩容后,Doris 会主动依据负载状况,进行数据平衡,期间不影响应用。

  1. 删除 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

  1. 降级 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 保障新版本的向前兼容性,所以新版本原则上是能够和旧版本同时运行的。)
  5. 降级 FE
  6. FE 节点的降级程序为:Observer -> 非 Master FE 节点 -> Master FE 节点

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

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

通过以上步骤将所有 FE 节点降级实现后。则 Palo 的主过程(FE、BE)都已降级实现。

  1. 进入 FE 的装置门路 /path/to/fe/,通过 sh bin/stop_fe.sh 进行 FE 过程。
  2. 将 /path/to/fe/lib/ 目录整体替换为新版本中的 PALO-0.15.1-rc03-binary/fe/lib/ 目录。
  3. 通过 sh bin/start_fe.sh —daemon 启动 FE 过程。
  4. 此时,咱们曾经完这个 FE 节点的更新。此时咱们能够通过 MySQL client 连贯这个 FE 节点进行一些查问或导入操作,来察看集群是否失常。如果一切正常,则能够反复步骤 1-3 来降级其余的 FE 节点。
  5. 降级 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 开发人员进行确认。

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

起源:数据基石
作者:毛凯民

点击进入取得更多技术信息~~

退出移动版