Doris的安装

Doris的安装


文章目录

  • Doris的安装
    • 写在前面
      • Linux 操作系统版本需求
      • 软件需求
      • 操作系统安装要求
        • 设置系统最大打开文件句柄数
        • 时钟同步
        • 关闭交换分区(swap)
      • 开发测试环境
      • 生产环境
    • 安装
      • 下载安装包
      • 默认端口
      • 集群部署
      • 前置准备
      • 安装部署FE
      • 安装部署BE
      • 在 **FE** 中添加所有 **BE** 节点(node01节点执行命令)
        • 安装 MySQL Client
        • 使用 MySQL Client 连接 FE
        • 添加 BE
        • 查看 BE 状态
        • 启动BE
      • 部署 FS_Broker(可选)
    • 扩容和缩容
      • FE的扩容和缩容
      • BE的扩容和缩容
      • Broker的扩容缩容


写在前面

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

Linux 操作系统版本需求

Linux 系统 版本
CentOS 7.1 及以上
Ubuntu 16.04 及以上

软件需求

软件 版本
Java 1.8 及以上
GCC 4.8.2 及以上

操作系统安装要求

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

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

时钟同步

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

关闭交换分区(swap)

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

开发测试环境

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

生产环境

模块 CPU 内存 磁盘 网络 实例数量(最低要求)
Frontend 16核+ 64GB+ SSD 或 RAID 卡,100GB+ * 万兆网卡 1-3 *
Backend 16核+ 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/

Doris的安装_第1张图片

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

默认端口

实例名称 端口名称 默认端口 通讯方向 说明
BE be_port 9060 FE --> BE BE 上 thrift server 的端口,用于接收来自 FE 的请求
BE webserver_port 8040 BE <–> BE BE 上的 http server 的端口
BE heartbeat_service_port 9050 FE --> BE BE 上心跳服务端口(thrift),用于接收来自 FE 的心跳
BE brpc_port 8060 FE <–> BE, BE <–> BE BE 上的 brpc 端口,用于 BE 之间通讯
FE http_port 8030 FE <–> FE,用户 <–> FE FE 上的 http server 端口
FE rpc_port 9020 BE --> FE, FE <–> FE FE 上的 thrift server 端口,每个fe的配置需要保持一致
FE query_port 9030 用户 <–> FE FE 上的 mysql server 端口
FE edit_log_port 9010 FE <–> FE FE 上的 bdbje 之间通信用的端口
Broker broker_ipc_port 8000 FE --> Broker, BE --> Broker Broker 上的 thrift server,用于接收请求

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

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

集群部署

主机 1 主机 2 主机 3
FE(LEADER) FE(FOLLOWER) FE(OBSERVER)
BE BE BE
BROKER BROKER BROKER

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

前置准备

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

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

Doris的安装_第2张图片

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

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

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

安装部署FE

  • 创建 fe 元数据存储的目录
[whybigdata@node01 ~]# mkdir /opt/module/doris-1.1.5/doris-meta

注意:此处如果没有提前创建该目录(配置文件中指定元数据路径),则启动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这个目录。如下图所示:

Doris的安装_第3张图片

  • 下载的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@node01 doris-1.1.5]# mysql -h node01 -P 9030 -uwhybigdata

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

mysql> SET PASSWORD FOR 'whybigdata' = PASSWORD('000000');          
  • 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 状态

mysql> SHOW PROC '/backends';     

这里可以在末尾加\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 是无状态的进程,可以随意启停。当然,停止后,正在其上运行的作业会失败,重试即可。

全文结束!

你可能感兴趣的:(OLAP,大数据技术栈文档,linux,Doris,大数据)