乐趣区

关于apache-doris:Apache-Doris-环境安装部署

这里以百度的 Doris 发行版 Palo-0.14.13 版本为例进行演示编译装置部署

1. Doris 编译

1.1 docker 镜像下载

这里咱们应用的最新镜像

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

1.2 Doris 源码下载编译

这里咱们应用的是百度最新发行版的代码 0.14.13,(Apache doris 和百度 Palo 发行版源码是统一的,不过因为 Apache 发版周期比拟长,百度 doris 团队会公布三位版本的 doris,次要是 bugfix 及一些新性能迭代)

Palo 源码下载地址:https://github.com/baidu/palo…

Palo-0.14.13: https://github.com/baidu/palo…

咱们将 Doris 的源码下载当前解压到指定目录,例如我这边是放到了 /root/doris 目录

我这里是解压当前将目录名称重命名成 doris-0.14.13 了

1.2.1 运行 Docker 镜像

对于 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 容器

1.2.2 编译 Doris FE,BE

进入到你的 doris 源码目录:

# cd /root/doris/doris-0.14.13 
# sh build.sh

期待编译实现,看到上面界面就阐明编译实现

编译好的安装包在源码根目录:output 目录下,拷贝进去就是能够装置了

1.2.3 编译 Doris Broker

# cd fs_brokers/apache_hdfs_broker 
# sh build.sh

期待编译实现,能够在 output 目录下看到编译好的 apache_hdfs_broker 拷贝进去即可

1.2.4 doris 扩大的编译

doris 扩大包的编译,能够参照官网扩大性能里的编译及应用阐明,这里不做介绍

2.Doris 装置

2.1 操作系统及环境要求

这里咱们应用的操作系统是 CentOS 7.8, 不反对低于 7 的版本。

在部署之前,要筹备的工作:

  • 敞开操作系统的替换分区
  • 敞开防火墙
  • 操作系统的文件系统 Ext4
  • 设置操作系统最大关上文件数
  • 禁用 Selinux
  • 在要装置 FE,Broker 的节点上提前装置 JDK 环境,版本最低值 1.8 及以上,BE 节点如果不装置 Broker 能够不装置 JDK 环境
  • 所有机器做时钟同步

    2.2 装置 Doris 留神项

    FE 的磁盘空间次要用于存储元数据,包含日志和 image。通常从几百 MB 到几个 GB 不等。
    BE 的磁盘空间次要用于寄存用户数据,总磁盘空间按用户总数据量 * 3(3 正本)计算,而后再预留额定 40% 的空间用作后盾 compaction 以及一些两头数据的寄存。
    一台机器上能够部署多个 BE 实例,然而只能部署一个 FE。如果须要 3 正本数据,那么至多须要 3 台机器各部署一个 BE 实例(而不是 1 台机器部署 3 个 BE 实例)。多个 FE 所在服务器的时钟必须保持一致(容许最多 5 秒的时钟偏差)
    测试环境也能够仅实用一个 BE 进行测试。理论生产环境,BE 实例数量间接决定了整体查问提早。

    2.3 对于 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。

    2.4 开始装置 Doris

    通常咱们倡议 10 ~ 100 台左右的机器,来充分发挥 Doris 的性能(其中 3 台部署 FE(HA),残余的部署 BE
    当然,Doris 的性能与节点数量及配置正相干。在起码 4 台机器(一台 FE,三台 BE,其中一台 BE 混部一个 Observer FE 提供元数据备份),以及较低配置的状况下,仍然能够安稳的运行 Doris。
    如果 FE 和 BE 混部,需注意资源竞争问题,并保障元数据目录和数据目录分属不同磁盘。
    这里咱们应用 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

2.4.1 Broker 部署

Broker 是用于拜访内部数据源(如 hdfs)的过程。通常,咱们只在 FE 机器上部署 broker 实例。

Broker 以插件的模式,独立于 Doris 部署。如果须要从第三方存储系统导入数据,须要部署相应的 Broker,默认提供了读取 HDFS 和百度云 BOS 的 fs_broker。fs_broker 是无状态的,倡议每一个 FE 和 BE 节点都部署一个 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 状态
应用 mysql-client 连贯任一已启动的 FE,执行以下命令查看 Broker 状态:
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)

2.4.2 部署 Doris FE

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

  • 配置 FE
    配置文件为 conf/fe.conf。其中留神:meta_dir:元数据寄存地位。默认在 fe/doris-meta/ 下。如果,目录不存在需手动创立该目录。
    留神:生产环境强烈建议独自指定目录不要放在 Doris 装置目录下,最好是独自的磁盘(如果有 SSD 最好),测试开发环境能够应用默认配置
    fe.conf 中 JAVA_OPTS 默认 java 最大堆内存为 4GB,倡议生产环境调整至 8G 以上。
  • priority_networks 配置
    因为有多网卡的存在,或因为装置过 docker 等环境导致的虚构网卡的存在,同一个主机可能存在多个不同的 ip。以后 Doris 并不能自动识别可用 IP。所以当遇到部署主机上有多个 IP 时,必须通过 priority_networks 配置项来强制指定正确的 IP。
    priority_networks 是 FE 和 BE 都有的一个配置,配置项需写在 fe.conf 和 be.conf 中。该配置项用于在 FE 或 BE 启动时,通知过程应该绑定哪个 IP。示例如下:
    priority_networks=192.168.1.0/24
    这是一种 CIDR (opens new window)的示意办法。FE 或 BE 会依据这个配置项来寻找匹配的 IP,作为本人的 localIP
  • 启动 FE
    sh bin/start_fe.sh --daemon
    FE 过程启动进入后盾执行。日志默认寄存在 fe/log/ 目录下。如启动失败,能够通过查看 fe/log/fe.log 或者 fe/log/fe.out 查看错误信息
    默认第一个启动的 FE 就是 Master,也就是 Follower(Leader)
    这里咱们先不装置其余 FE,先实现 BE 的装置
  • 查看装置的 FE 是否失常
    或者通过页面拜访页面: htttp://192.168.1.10:8030 , 如果能失常拜访就阐明失常,或者通过上面的形式
    应用 Mysql client 连贯

    #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 |
  • row in set (0.04 sec)

    ### 2.4.3 装置 Doris BE
    拷贝 BE 部署文件到所有要部署 BE 的节点
    将源码编译生成的 output 下的 be 文件夹拷贝到 BE 的节点的指定部署门路下。
  • 批改 BE 网络配置
    priority_networks 配置, 这块参考下面 FE 的阐明
  • 批改所有 BE 的配置
    批改 be/conf/be.conf。次要是配置 storage_root_path:数据寄存目录。默认在 be/storage 下,须要手动创立该目录。多个门路之间应用英文状态的分号 ; 分隔(最初一个目录后不要加;)。能够通过门路区别存储目录的介质,HDD 或 SSD。能够增加容量限度在每个门路的开端,通过英文状态逗号, 隔开。
    示例 1 如下:
    留神:如果是 SSD 磁盘要在目录前面加上.SSD,HDD 磁盘在目录前面加.HDD
    storage_root_path=/home/disk1/doris.HDD,50;/home/disk2/doris.SSD,10;/home/disk2/doris
    阐明
  1. /home/disk1/doris.HDD, 50,示意存储限度为 50GB, HDD;
  2. /home/disk2/doris.SSD 10,存储限度为 10GB,SSD;
  3. /home/disk2/doris,存储限度为磁盘最大容量,默认为 HDD
    示例 2 如下:
    留神:不管 HHD 磁盘目录还是 SSD 磁盘目录,都无需增加后缀,storage_root_path 参数里指定 medium 即可

    storage_root_path=/home/disk1/doris,medium:hdd,capacity:50;/home/disk2/doris,medium:ssd,capacity:50

    阐明

/home/disk1/doris,medium:hdd,capacity:10,示意存储限度为 10GB, HHD;
/home/disk2/doris,medium:ssd,capacity:50,示意存储限度为 50GB, SSD;

  • 在 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。

  • 启动 BE
    在每台机器的 BE 装置目录下执行上面的命令启动 BE
    sh bin/start_be.sh --daemon
    BE 过程将启动并进入后盾执行。日志默认寄存在 be/log/ 目录下。如启动失败,能够通过查看 be/log/be.log 或者 be/log/be.out 查看错误信息。

查看 BE 状态
应用 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)

2.4.4 Doris FE 高可用配置

能够通过将 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 及其对应角色

2.4.5 Doris FE 缩容

进行对应节点上 FE 服务,
应用以下命令删除对应的 FE 节点:

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

FE 缩容注意事项:
删除 Follower FE 时,确保最终残余的 Follower(包含 Leader)节点为奇数。

3. 装置实现

这样整个集群就装置部署实现了

退出移动版