淘先锋技术网

首页 1 2 3 4 5 6 7

Doris的安装



写在前面

官方建议:为了能够充分运用 MPP 架构的并发优势,以及 Doris 的高可用特性,建议 Doris 的部署遵循以下需求:

Linux 操作系统版本需求

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

软件需求

软件版本
Java1.8 及以上
GCC4.8.2 及以上

操作系统安装要求

设置系统最大打开文件句柄数

vi /etc/security/limits.conf 
* soft nofile 65536
* hard nofile 65536

时钟同步

Doris 的元数据要求时间精度要小于5000ms,所以所有集群所有机器要进行时钟同步,避免因为时钟问题引发的元数据不一致导致服务出现异常。

关闭交换分区(swap)

Linux交换分区会给Doris带来很严重的性能问题,需要在安装之前禁用交换分区

开发测试环境

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

生产环境

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

安装

下载安装包

低版本(V1.0之前的版本):安装 Doris,需要先通过源码编译,主要有两种方式:使用 Docker 开发镜像编译(推荐)、直接编译。

直接编译的方式,可以参考官网:https://doris.apache.org/zh-CN/installing/compilation.html

https://doris.apache.org/zh-CN/docs/dev/install/source-install/compilation

高版本:直接下载官网的tar包即可,无需再手动编译;本文安装的是doris-1.1.5版本

V1.1.5下载地址如下:

https://mirrors.tuna.tsinghua.edu.cn/apache/doris/1.1/1.1.5-rc02/

![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Oz68wkWv-1676171317565)(1.png)]

选择下载上图中框选的两个tar包

默认端口

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

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

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

集群部署

主机 1主机 2主机 3
FE(LEADER)FE(FOLLOWER)FE(OBSERVER)
BEBEBE
BROKERBROKERBROKER

生产环境建议 FE 和 BE 分开。

前置准备

  • 创建目录作为doris的安装目录
  • 修改可打开文件数(每个节点都要修改
[whybigdata@node01 ~]# sudo vim /etc/security/limits.conf
*	soft nofile 65535
*	hard nofile 65535
*	soft nproc 65535
*	hard nproc 65535

我们可以通过ulimit -a命令查看具体值

![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2Fa39fNq-1676171317567)(2.png)]

修改之后:从左到右四列的表示含义:需要限制的用户或用户组、类型(软|硬限制)、限制值的对象、限制值

注意:一般情况下,软限制(数值)<=硬限制

重启永久生效,也可以用 ulimit -n 65535 临时生效。

安装部署FE

  • 创建 fe 元数据存储的目录

注意:此处如果没有提前创建该目录(配置文件中指定元数据路径),则启动fe后执行 jps 或者 ps –ef | grep doris 或者 ps –ef | grep fe 都找不到相应的进程。

关于这个error,可以在/opt/module/doris-1.1.5/fe/log目录下的 fe.log,在最后面可以看到这个error的原因是:不存在/opt/module/doris-1.1.5/doris-meta这个目录。如下图所示:

![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YQfT3e2X-1676171317567)(3.png)]

  • 下载的tar包上传到Linux 中
  • 解压fe的tar包,并重命名
[whybigdata@node01 software]# tar ./apache-doris-fe-1.1.5-bin.tar.gz -C /opt/module/doris-1.1.5/
[whybigdata@node01 doris-1.1.5]# mv apache-doris-fe-1.1.5 fe
  • 修改配置文件

fe.conf文件:位于fe安装目录下的conf目录

[whybigdata@node01 ~]# vim /opt/module/doris-1.1.5/fe/conf/fe.conf 

#配置文件中指定元数据路径: 注意这个文件夹要自己创建
meta_dir = /opt/module/doris-1.1.5/doris-meta
#修改绑定 ip(每台机器修改成自己的 ip) 
priority_networks = 192.168.10.131/24 
  • 分发集群
[whybigdata@node01 app]# for i in 2 3 
> do
> scp -r /opt/module/doris-1.1.5 node0$i:/opt/module/	
> done
  • 启动:进入到fe的bin目录下执行
[whybigdata@node01 bin]# ./start_fe.sh --daemon

生产环境强烈建议单独指定目录不要放在 Doris 安装目录下,最好是单独的磁盘(如果有 SSD 最好)。 如果机器有多个 ip, 比如内网外网, 虚拟机 docker 等, 需要进行 ip 绑定,才能正确识别。 JAVA_OPTS 默认 java 最大堆内存为 4GB,建议生产环境调整至 8G 以上。

  • 查看前端页面

http://node01:8030

注意:账号是whybigdata,且默认密码为空

安装部署BE

  • 创建 BE 数据存放目录(每个节点
[whybigdata@node01 ~]# mkdir /opt/module/doris-1.1.5/doris-storage1 
[whybigdata@node01 ~]# mkdir /opt/module/doris-1.1.5/doris-storage2
  • 下载的tar包上传到 Linux 中
  • 解压be的tar包,并重命名
[whybigdata@node01 software]# tar ./apache-doris-be-1.1.5-bin-x86_64.tar.gz -C /opt/module/doris-1.1.5/
[whybigdata@node01 doris-1.1.5]# mv apache-doris-be-1.1.5 be
  • 进入到be的conf目录下修改配置文件(每个节点)
[whybigdata@node01 conf# vim be.conf  

#配置文件中指定数据存放路径: 
storage_whybigdata_path = /opt/module/doris-1.1.5/doris- storage1;/opt/module/doris-1.1.5/doris-storage2
#修改绑定 ip(每台机器修改成自己的 ip) 
priority_networks = 192.168.10.131/24 

注意:

  • storage_whybigdata_path 默认在 be/storage 下,需要手动创建该目录。多个路径之间使用英文状态的分号;分隔(最后一个目录后不要加)。

  • 可以通过路径区别存储目录的介质,HDD 或 SSD。可以添加容量限制在每个路径的末尾,通过英文状态逗号,隔开,如:

    storage_whybigdata_path=/home/disk1/doris.HDD,50;/home/disk2/doris.SSD,10;/home/disk2/doris           
    

说明:

  • /home/disk1/doris.HDD,50,表示存储限制为 50GB,HDD;
  • /home/disk2/doris.SSD,10,存储限制为 10GB,SSD;
  • /home/disk2/doris,存储限制为磁盘最大容量,默认为 HDD
  • 如果机器有多个 IP, 比如内网外网, 虚拟机 docker 等, 需要进行 IP 绑定,才能正确识别。
  • 分发集群

将node01节点下的be分发到其他两台机器上

FE 中添加所有 BE 节点(node01节点执行命令)

因为FE和BE两个都是单独的个体,所以他俩相互之间还不认识,所以BE 节点需要先在FE 中添加,才可加入集群。然后我们通过mysql的客户端将他们建立起联系,即使用 mysql-client 连接到 FE。

安装 MySQL Client

此处默认已经安装了mysql客户端,最主要的就是以下的安装包

mysql-community-client-5.7.28-1.el7.x86_64.rpm
mysql-community-common-5.7.28-1.el7.x86_64.rpm
mysql-community-libs-5.7.28-1.el7.x86_64.rpm

使用 MySQL Client 连接 FE

前面已经说过,默认 whybigdata用户 无密码,通过以下命令修改 whybigdata 密码。

  • fe启动完成后可以查看fe的运行状态
mysql> SHOW PROC '/frontends';

添加 BE

mysql> ALTER SYSTEM ADD BACKEND "node01:9050"; 
vmysql> ALTER SYSTEM ADD BACKEND "node02:9050"; 
mysql> ALTER SYSTEM ADD BACKEND "node03:9050";

查看 BE 状态

这里可以在末尾加\G,即: show proc '/backends'\G; 来更好显示方便查看。

启动BE

进入be安装目录下的bin目录,启动 BE(每个节点)

[whybigdata@node01 bin]# ./start_be.sh --daemon
  • 启动后再次查看BE的节点
[whybigdata@node01 ~]# mysql -h node01 -P 9030 -uwhybigdata

mysql> SHOW PROC '/backends'; 

Alive 为 true 表示该 BE 节点存活。

部署 FS_Broker(可选)

Broker 以插件的形式,独立于 Doris 部署。如果需要从第三方存储系统导入数据,需要部署相应的 Broker,默认提供了读取 HDFS、百度云 BOS 及 Amazon S3 的 fs_broker。fs_broker 是无状态的,建议每一个 FE 和 BE 节点都部署一个 Broker。

高版本Broker不用手动编译安装,直接启动就可以!!!

  • 启动 Broker
[whybigdata@node01 doris-1.1.5]# /opt/module/doris-1.1.5/fe/apache_hdfs_broker/bin/start_broker.sh --daemon 
  • 使用 mysql-client 连接启动的 FE,执行以下命令:
[whybigdata@node01 doris-1.1.5]# mysql -h node01 -P 9030 -uwhybigdata

mysql> ALTER SYSTEM ADD BROKER broker_name "node01:8000","node02:8000","node03:8000";

当然你也可以一个个的加,并且 broker_name 这只是一个名字,可以自己随意取

  • 查看 Broker 状态

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

mysql> SHOW PROC "/brokers";  

扩容和缩容

FE的扩容和缩容

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

使用 MySQL 登录客户端后,可以使用 sql 命令查看 FE 状态,目前就一台 FE

[whybigdata@node01 doris-1.1.5]# mysql -h node01 -P 9030 -uwhybigdata -p 
mysql> SHOW PROC '/frontends'\G;


*************************** 1. row ***************************
             Name: 192.168.10.131_9010_1661510658077
               IP: 192.168.10.131
         HostName: node01
      EditLogPort: 9010
         HttpPort: 8030
        QueryPort: 9030
          RpcPort: 9020
             Role: FOLLOWER
         IsMaster: true
        ClusterId: 1133836578
             Join: true
            Alive: true
ReplayedJournalId: 2472
    LastHeartbeat: 2023-01-06 10:17:18
         IsHelper: true
           ErrMsg: 
          Version: 1.1.1-rc03-2dbd70bf9
 CurrentConnected: Yes
1 row in set (0.06 sec)
  • 添加FE的新节点:

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

  • 如果只部署一个 FE,则 FE 默认就是 Leader。在此基础上,可以添加若干 Follower 和 Observer。
mysql> ALTER SYSTEM ADD FOLLOWER "node02:9010"; 
mysql> ALTER SYSTEM ADD OBSERVER "node03:9010";
  • 在node02和node03上分别启动FE节点
[whybigdata@node01 doris-1.1.5]# /opt/module/doris-1.1.5/fe/bin/start_fe.sh --helper  node01:9010 --daemon

注意,如果是第一次添加的话,一定要加这两个参数 --helper node01:9010

此时你再去查看FE的状态就发现有3台啦

mysql> SHOW PROC '/frontends'\G;
*************************** 1. row ***************************
             Name: 192.168.10.132_9010_1661490723344
               IP: 192.168.10.132
         HostName: node02
      EditLogPort: 9010
         HttpPort: 8030
        QueryPort: 0
          RpcPort: 0
             Role: FOLLOWER
         IsMaster: false
        ClusterId: 1133836578
             Join: false
            Alive: false
ReplayedJournalId: 0
    LastHeartbeat: NULL
         IsHelper: true
           ErrMsg: java.net.ConnectException: Connection refused (Connection refused)
          Version: NULL
 CurrentConnected: No
*************************** 2. row ***************************
             Name: 192.168.10.133_9010_1661490727316
               IP: 192.168.10.133
         HostName: node03
      EditLogPort: 9010
         HttpPort: 8030
        QueryPort: 0
          RpcPort: 0
             Role: OBSERVER
         IsMaster: false
        ClusterId: 1133836578
             Join: false
            Alive: false
ReplayedJournalId: 0
    LastHeartbeat: NULL
         IsHelper: false
           ErrMsg: java.net.ConnectException: Connection refused (Connection refused)
          Version: NULL
 CurrentConnected: No
*************************** 3. row ***************************
             Name: 192.168.10.131_9010_1661510658077
               IP: 192.168.10.131
         HostName: node01
      EditLogPort: 9010
         HttpPort: 8030
        QueryPort: 9030
          RpcPort: 9020
             Role: FOLLOWER
         IsMaster: true
        ClusterId: 1133836578
             Join: true
            Alive: true
ReplayedJournalId: 2577
    LastHeartbeat: 2023-01-06 10:23:33
         IsHelper: true
           ErrMsg: 
          Version: 1.1.1-rc03-2dbd70bf9
 CurrentConnected: Yes
3 rows in set (0.04 sec)
  • 删除FE节点命令
mysql> ALTER SYSTEM DROP FOLLOWER[OBSERVER] "fe_host:edit_log_port"; 

mysql> ALTER SYSTEM DROP FOLLOWER "node01:9010"; 

注意:删除 Follower FE 时,确保最终剩余的 Follower(包括 Leader)节点最好为奇数。

BE的扩容和缩容

  • 增加 BE 节点:在 MySQL 客户端,通过以下命令增加 BE 节点。
mysql> ALTER SYSTEM ADD BACKEND  
mysql> ALTER SYSTEM ADD BACKEND "node01:9050"; 
  • DROP 方式删除 BE 节点(不推荐)
mysql> ALTER SYSTEM DROP BACKEND "be_host:be_heartbeat_service_port";
mysql> ALTER SYSTEM DROP BACKEND "node01:9050"; 

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

  • DECOMMISSION 方式删除 BE 节点(推荐)
mysql> ALTER SYSTEM DECOMMISSION BACKEND "be_host:be_heartbeat_service_port"; 
mysql> ALTER SYSTEM DECOMMISSION BACKEND "node01:9050"; 

Broker的扩容缩容

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

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

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

全文结束!