Apache Doris 代码仓库地址:apache/incubator-doris 欢迎大家关注加星
这里以百度的Doris发行版 Palo-0.14.13版本为例进行演示编译安装部署
这里我们使用的最新镜像
Apache doris 0.14.0及百度发布的Palo-0.14.7及之前的版本都是要在Docker 1.2版本下编译,之后的在Docker 1.3.1下编译
1.3.1 版本 Docker 镜像下载
$ docker pull apache/incubator-doris:build-env-1.3.1
1.2 版本Docker镜像下载
$ docker pull apache/incubator-doris:build-env-1.2
这里我们使用的是百度最新发行版的代码0.14.13,(Apache doris和百度Palo发行版源码是一致的,不过因为Apache发版周期比较长,百度doris团队会发布三位版本的doris,主要是bugfix及一些新功能迭代)
Palo源码下载地址:https://github.com/baidu/palo/releases
Palo-0.14.13: https://github.com/baidu/palo/archive/refs/tags/PALO-0.14.13-release.tar.gz
我们将Doris的源码下载以后解压到指定目录,例如我这边是放到了/root/doris目录
我这里是解压以后将目录名称重命名成doris-0.14.13了
关于Docker的安装运行在这里我就不在讲解,不知道的可以去百度一下。
建议以挂载本地 Doris 源码目录的方式运行镜像,这样编译的产出二进制文件会存储在宿主机中,不会因为镜像退出而消失。
同时,建议同时将镜像中 maven 的 .m2
目录挂载到宿主机目录,以防止每次启动镜像编译时,重复下载 maven 的依赖库。
我的运行命令如下:
docker run -it --name doris-build-1.3.1 -v /root/.m2:/root/.m2 -v /root/doris/:/root/doris/ apache/incubator-doris:build-env-1.3.1
运行以后就会直接进入到Docker容器
进入到你的doris源码目录:
# cd /root/doris/doris-0.14.13 # sh build.sh
等待编译完成,看到下面界面就说明编译完成
编译好的安装包在源码根目录:output目录下,拷贝出来就是可以安装了
# cd fs_brokers/apache_hdfs_broker # sh build.sj
等待编译完成,可以在output目录下看到编译好的apache_hdfs_broker拷贝出来即可
doris扩展包的编译,可以参照官网扩展功能里的编译及使用说明,这里不做介绍
这里我们使用的操作系统是CentOS 7.8
,不支持低于7的版本。
在部署之前,要准备的工作:
这里我们使用3个FE,5个BE节点,来搭建一个完整的支持高可用的Doris集群,部署角色如下
IP | 节点名称 | 角色 |
---|---|---|
192.168.1.10 | doris-fe-01 | Follower,Broker |
192.168.1.11 | doris-fe-02 | Follower,Broker |
192.168.1.12 | doris-fe-03 | Follower,Broker |
192.168.1.13 | doris-be-01 | BE |
192.168.1.14 | doris-be-02 | BE |
192.168.1.15 | doris-be-03 | BE |
192.168.1.16 | doris-be-04 | BE |
192.168.1.17 | doris-be-05 | BE |
Broker 是用于访问外部数据源(如 hdfs)的进程。通常,我们只在FE机器上部署 broker 实例。
Broker 以插件的形式,独立于 Doris 部署。如果需要从第三方存储系统导入数据,需要部署相应的 Broker,默认提供了读取 HDFS 和百度云 BOS 的 fs_broker。fs_broker 是无状态的,建议每一个 FE 和 BE 节点都部署一个 Broker。
sh bin/start_broker.sh --daemon
启动 Broker。ALTER SYSTEM ADD BROKER broker_name "host1:port1","host2:port2",...;
SHOW PROC "/brokers";
#mysql -u root -h 192.168.1.10 -P 9030
mysql> ALTER SYSTEM ADD BROKER broker_01 "192.168.1.10:8000";
mysql> ALTER SYSTEM ADD BROKER broker_01 "192.168.1.11:8000";
mysql> ALTER SYSTEM ADD BROKER broker_01 "192.168.1.12:8000";
mysql> show proc '/frontends';
+---------------+---------------+----------+------+-------+---------------------+---------------------+--------+
| Name | IP | HostName | Port | Alive | LastStartTime | LastUpdateTime | ErrMsg |
+---------------+---------------+----------+------+-------+---------------------+---------------------+--------+
| broker_01 | 192.168.1.10 | doris-fe-01 | 8000 | true | 2021-09-16 10:21:31 | 2021-09-16 15:58:55 | |
| broker_02 | 192.168.1.11 | doris-fe-02 | 8000 | true | 2021-09-16 10:21:31 | 2021-09-16 15:58:55 | |
| broker_03 | 192.168.1.12 | doris-fe-03 | 8000 | true | 2021-09-16 10:21:31 | 2021-09-16 15:58:55 | |
+---------------+---------------+----------+------+-------+---------------------+---------------------+--------+
3 rows in set (0.01 sec)
meta_dir
:元数据存放位置。默认在 fe/doris-meta/ 下。如果,目录不存在需手动创建该目录。#mysql -u root -h 192.168.1.10 -P 9030
mysql> show proc '/frontends';
+----------------------------------+---------------+----------+-------------+----------+-----------+---------+----------+----------+------------+------+-------+-------------------+---------------------+----------+--------+-----------------+
| Name | IP | HostName | EditLogPort | HttpPort | QueryPort | RpcPort | Role | IsMaster | ClusterId | Join | Alive | ReplayedJournalId | LastHeartbeat | IsHelper | ErrMsg | Version |
+----------------------------------+---------------+----------+-------------+----------+-----------+---------+----------+----------+------------+------+-------+-------------------+---------------------+----------+--------+-----------------+
| 192.168.1.10_9010_1605850067231 | 10.220.146.10 | doris-be--fe-01 | 9010 | 8030 | 9030 | 9020 | FOLLOWER | true | 2113522669 | true | true | 29778512 | 2021-09-16 14:58:44 | true | | 0.14.13-Unknown |
+----------------------------------+---------------+----------+-------------+----------+-----------+---------+----------+----------+------------+------+-------+-------------------+---------------------+----------+--------+-----------------+
1 row in set (0.04 sec)
storage_root_path
:数据存放目录。默认在be/storage下,需要手动创建该目录。多个路径之间使用英文状态的分号 ;
分隔(最后一个目录后不要加;
)。可以通过路径区别存储目录的介质,HDD或SSD。可以添加容量限制在每个路径的末尾,通过英文状态逗号,
隔开。.SSD
,HDD磁盘在目录后面加.HDD
storage_root_path=/home/disk1/doris.HDD,50;/home/disk2/doris.SSD,10;/home/disk2/doris
示例2如下:
注意:不论HHD磁盘目录还是SSD磁盘目录,都无需添加后缀,storage_root_path参数里指定medium即可storage_root_path=/home/disk1/doris,medium:hdd,capacity:50;/home/disk2/doris,medium:ssd,capacity:50
说明
在 FE 中添加所有 BE 节点
BE 节点需要先在 FE 中添加,才可加入集群。可以使用 mysql-client(下载MySQL 5.7 (opens new window)) 连接到 FE:
#mysql -u root -h 192.168.1.10 -P 9030
mysql> ALTER SYSTEM ADD BACKEND "192.168.1.13:9050";
mysql> ALTER SYSTEM ADD BACKEND "192.168.1.14:9050";
mysql> ALTER SYSTEM ADD BACKEND "192.168.1.15:9050";
mysql> ALTER SYSTEM ADD BACKEND "192.168.1.16:9050";
mysql> ALTER SYSTEM ADD BACKEND "192.168.1.17:9050";
其中 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。
sh bin/start_be.sh --daemon
BE 进程将启动并进入后台执行。日志默认存放在 be/log/ 目录下。如启动失败,可以通过查看 be/log/be.log 或者 be/log/be.out 查看错误信息。
使用 mysql-client 连接到 FE,并执行 SHOW PROC ‘/backends’; 查看 BE 运行情况。如一切正常,isAlive 列应为 true。
#mysql -u root -h 192.168.1.10 -P 9030
mysql> show proc '/backends';
+-----------+-----------------+---------------+----------+---------------+--------+----------+----------+---------------------+---------------------+-------+----------------------+--------------------
| BackendId | Cluster | IP | HostName | HeartbeatPort | BePort | HttpPort | BrpcPort | LastStartTime | LastHeartbeat | Alive | SystemDecommissioned | ClusterDecommission
+-----------+-----------------+---------------+----------+---------------+--------+----------+----------+---------------------+---------------------+-------+----------------------+--------------------
| 36728047 | default_cluster | 192.168.1.13 | doris-be-01 | 9050 | 9060 | 8040 | 8060 | 2021-07-15 10:21:42 | 2021-09-16 15:54:29 | true | false | false
| 36728048 | default_cluster | 192.168.1.14 | doris-be-02 | 9050 | 9060 | 8040 | 8060 | 2021-07-15 10:22:44 | 2021-09-16 15:54:29 | true | false | false
| 36728049 | default_cluster | 192.168.1.15 | doris-be-03 | 9050 | 9060 | 8040 | 8060 | 2021-07-15 10:23:32 | 2021-09-16 15:54:29 | true | false | false
| 36728050 | default_cluster | 192.168.1.16 | doris-be-04 | 9050 | 9060 | 8040 | 8060 | 2021-07-15 10:24:12 | 2021-09-16 15:54:29 | true | false | false
| 36728051 | default_cluster | 192.168.1.17 | doris-be-05 | 9050 | 9060 | 8040 | 8060 | 2021-07-15 10:25:22 | 2021-09-16 15:54:29 | true | false | false
+-----------+-----------------+---------------+----------+---------------+--------+----------+----------+---------------------+---------------------+-------+----------------------+--------------------
5 rows in set (0.00 sec)
可以通过将 FE 扩容至 3 个以上节点来实现 FE 的高可用。
用户可以通过 mysql 客户端登陆 Master FE。通过:
SHOW PROC '/frontends';
来查看当前 FE 的节点情况。
FE 节点的扩容和缩容过程,不影响当前系统运行。
增加 FE 节点
FE 分为 Leader,Follower 和 Observer 三种角色。 默认一个集群,只能有一个 Leader,可以有多个 Follower 和 Observer。其中 Leader 和 Follower 组成一个 Paxos 选择组,如果 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";
这里我们全部使用的FOLLOWER角色
#mysql -u root -h 192.168.1.10 -P 9030
mysql> SHOW PROC "/frontends";
+----------------------------------+---------------+----------+-------------+----------+-----------+---------+----------+----------+------------+------+-------+-------------------+---------------------+----------+--------+-----------------+
| Name | IP | HostName | EditLogPort | HttpPort | QueryPort | RpcPort | Role | IsMaster | ClusterId | Join | Alive | ReplayedJournalId | LastHeartbeat | IsHelper | ErrMsg | Version |
+----------------------------------+---------------+----------+-------------+----------+-----------+---------+----------+----------+------------+------+-------+-------------------+---------------------+----------+--------+-----------------+
| 192.168.1.10_9010_1605850067231 | 192.168.1.10 | doris-fe-01 | 9010 | 8030 | 9030 | 9020 | FOLLOWER | true | 2113522669 | true | true | 29781119 | 2021-09-16 16:09:59 | true | | 0.14.13-Unknown |
+----------------------------------+---------------+----------+-------------+----------+-----------+---------+----------+----------+------------+------+-------+-------------------+---------------------+----------+--------+-----------------+
1 row in set (0.04 sec)
mysql> ALTER SYSTEM DROP FOLLOWER "192.168.1.11:9010";
mysql> ALTER SYSTEM DROP FOLLOWER "192.168.1.12:9010";
其中 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,并执行:
mysql> SHOW PROC '/frontends';
+----------------------------------+---------------+----------+-------------+----------+-----------+---------+----------+----------+------------+------+-------+-------------------+---------------------+----------+--------+-----------------+
| Name | IP | HostName | EditLogPort | HttpPort | QueryPort | RpcPort | Role | IsMaster | ClusterId | Join | Alive | ReplayedJournalId | LastHeartbeat | IsHelper | ErrMsg | Version |
+----------------------------------+---------------+----------+-------------+----------+-----------+---------+----------+----------+------------+------+-------+-------------------+---------------------+----------+--------+-----------------+
| 192.168.1.10_9010_1605850067231 | 192.168.1.10 | doris-fe-01 | 9010 | 8030 | 9030 | 9020 | FOLLOWER | true | 2113522669 | true | true | 29781119 | 2021-09-16 16:09:59 | true | | 0.14.13-Unknown |
| 192.168.1.11_9010_1605850067231 | 192.168.1.11 | doris-fe-02 | 9010 | 8030 | 9030 | 9020 | FOLLOWER | true | 2113522669 | true | true | 29781119 | 2021-09-16 16:09:59 | true | | 0.14.13-Unknown |
| 192.168.1.12_9010_1605850067231 | 192.168.1.12 | doris-fe-03 | 9010 | 8030 | 9030 | 9020 | FOLLOWER | true | 2113522669 | true | true | 29781119 | 2021-09-16 16:09:59 | true | | 0.14.13-Unknown |
+----------------------------------+---------------+----------+-------------+----------+-----------+---------+----------+----------+------------+------+-------+-------------------+---------------------+----------+--------+-----------------+
可以查看当前已加入集群的 FE 及其对应角色
ALTER SYSTEM DROP FOLLOWER[OBSERVER] "fe_host:edit_log_port";
FE 缩容注意事项:
这样整个集群就安装部署完成了