本文来源于百度开发者核心 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 等各种环境中。
- 下载 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 版本源码并进行签名校验。
- 下载 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
- 运行镜像
- 运行一下命令挂载源码门路并进入容器。
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 的依赖库。
- 编译 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 各个实例间接通过网络进行通信。以下表格展现了所有须要的端口
注:
- 当部署多个 FE 实例时,要保障 FE 的 http_port 配置雷同。
- 部署前请确保各个端口在应有方向上的拜访权限。
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
- 配置文件为 conf/fe.conf。其中留神:meta_dir:元数据寄存地位。默认在 fe/doris-meta/ 下。需手动创立该目录。
- 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 节点的扩容和缩容过程,不影响以后零碎运行。
- 减少 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 扩容注意事项:
- Follower FE(包含 Leader)的数量必须为奇数,倡议最多部署 3 个组成高可用(HA)模式即可。
- 当 FE 处于高可用部署时(1 个 Leader,2 个 Follower),咱们倡议通过减少 Observer FE 来扩大 FE 的读服务能力。当然也能够持续减少 Follower FE,但简直是不必要的。
- 通常一个 FE 节点能够应答 10-20 台 BE 节点。倡议总的 FE 节点数量在 10 个以下。而通常 3 个即可满足绝大部分需要。
- helper 不能指向 FE 本身,必须指向一个或多个已存在并且失常运行中的 Master/Follower FE。
- 删除 FE 节点
应用以下命令删除对应的 FE 节点:
ALTER SYSTEM DROP FOLLOWER[OBSERVER]“fe_host:edit_log_port”;
FE 缩容注意事项:
- 删除 Follower FE 时,确保最终残余的 Follower(包含 Leader)节点为奇数。
- 不可删除以后 Leader FE 节点。如需删除 Leader,请先将 Leader 节点服务杀掉,等主动选出新的 Leader 后,在通过命令删除这个节点。
BE 扩容和缩容
用户能够通过 mysql-client 登陆 Leader FE。通过:
SHOW PROC‘/backends’;
来查看以后 BE 的节点状况。
BE 节点的扩容和缩容过程,不影响以后零碎运行以及正在执行的工作,并且不会影响以后零碎的性能。数据平衡会主动进行。依据集群现有数据量的大小,集群会在几个小时到 1 天不等的工夫内,复原到负载平衡的状态。
- 减少 BE 节点
BE 节点的减少形式同 BE 部署 一节中的形式,通过 ALTER SYSTEM ADD BACKEND 命令减少 BE 节点。
BE 扩容注意事项:
BE 扩容后,Doris 会主动依据负载状况,进行数据平衡,期间不影响应用。
- 删除 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 命令阐明:
- 该命令用于平安删除 BE 节点。命令下发后,Doris 会尝试将该 BE 上的数据向其余 BE 节点迁徙,当所有数据都迁徙实现后,Doris 会主动删除该节点。
- 该命令是一个异步操作。执行后,能够通过 SHOW PROC‘/backends’; 看到该 BE 节点的 isDecommission 状态为 true。示意该节点正在进行下线。
- 该命令不肯定执行胜利。比方残余 BE 存储空间不足以包容下线 BE 上的数据,或者残余机器数量不满足最小正本数时,该命令都无奈实现,并且 BE 会始终处于 isDecommission 为 true 的状态。
- DECOMMISSION 的进度,能够通过 SHOW PROC‘/backends’; 中的 TabletNum 查看,如果正在进行,TabletNum 将一直缩小。
- 该操作能够通过:
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 版本为例。
- 下载二进制包并解压
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
- 降级 BE
这里咱们假如 BE 的装置门路为 /path/to/be/。BE 节点别离为 hostA、hostB、hostC。
通过以上步骤将所有 BE 节点降级实现后。能够进一步先察看集群运行状况,再持续降级 FE 节点。
- 首先咱们进入到 hostA 的 /path/to/be/ 目录下,通过 sh bin/stop_be.sh 进行 BE 过程。
- 将 /path/to/be/lib/ 目录中的 palo_be 和 meta_tool 文件替换为新版本中的 PALO-0.15.1-rc03-binary/be/lib/ 目录下的同名文件。
- 通过 sh bin/start_be.sh —daemon 启动 BE 过程。
- 此时,咱们曾经实现 hostA 上 BE 节点的更新。此时咱们能够先察看集群运行是否失常。如果一切正常,则能够反复步骤 1-3 来降级其余的 2 个 BE 节点。(Palo 保障新版本的向前兼容性,所以新版本原则上是能够和旧版本同时运行的。)
- 降级 FE
- FE 节点的降级程序为:Observer -> 非 Master FE 节点 -> Master FE 节点
FE 的节点类型和是否是 Master,能够通过 show frontends 语句后果中的 Role 和 IsMaster 列获取。
如果只部署了一个 FE 节点,强烈建议先依照 Doris 官网降级文档 中的 测试 FE 元数据兼容性 一节进行元数据兼容性验证。
通过以上步骤将所有 FE 节点降级实现后。则 Palo 的主过程(FE、BE)都已降级实现。
- 进入 FE 的装置门路 /path/to/fe/,通过 sh bin/stop_fe.sh 进行 FE 过程。
- 将 /path/to/fe/lib/ 目录整体替换为新版本中的 PALO-0.15.1-rc03-binary/fe/lib/ 目录。
- 通过 sh bin/start_fe.sh —daemon 启动 FE 过程。
- 此时,咱们曾经完这个 FE 节点的更新。此时咱们能够通过 MySQL client 连贯这个 FE 节点进行一些查问或导入操作,来察看集群是否失常。如果一切正常,则能够反复步骤 1-3 来降级其余的 FE 节点。
- 降级 Broker
如果用户部署了 Broker 过程,则能够依照以下步骤进行降级。
Broker 为无状态过程,全副降级即可。
通过以上步骤将所有 Broker 节点降级实现即可。
- 进入 Broker 的装置门路 /path/to/broker/,通过 sh bin/stop_broker.sh 进行 Broker 过程。
- 将 /path/to/broker/lib/ 目录整体替换为新版本中的 PALO-0.15.1-rc03-binary/apache_hdfs_broker/lib/ 目录。
- 通过 sh bin/start_broker.sh —daemon 启动 Broker 过程。
- 此时,咱们曾经完这个 Broker 节点的更新。反复步骤 1-3 来降级其余的 Broker 节点。
- 测试降级后果
通过 MySQL client 连贯任意 FE 节点进行业务操作,察看业务运行状况即可。
对于版本回滚
因为数据库是一个有状态的服务,所以在大多数状况下,Palo/Doris 无奈反对版本回滚(版本降级)。在某些状况下,能够反对 3 位或 4 位版本的回滚,但不会反对 2 为版本的回滚。
所以倡议通过先降级局部节点并察看业务运行状况的形式(灰度降级)来升高降级危险。
如有回滚需要,请当时分割 Palo/Doris 开发人员进行确认。
非法的回滚操作可能导致数据失落和损坏。
起源:数据基石
作者:毛凯民
点击进入取得更多技术信息~~