Apache Doris集群(一)安装部署

一、产品简单介绍

1、doris简介

Doris(原百度 Palo)是一款基于大规模并行处理技术的分布式 SQL 数据库。Doris主要集成了谷歌Mesa和Apache Impala技术,基于一个面向列的存储引擎,可以通过MySQL客户端进行通信,非常容易上手,使用上和mysql一样。

2、产品定位

1)MPP 架构的关系型分析数据库:mpp(Massively Parallel Processor)大规模并行处理
2)PB 级别大数据集,秒级/毫秒级查询
3)主要用于多维分析和报表查询

3、使用场景

图片[1]众客华禹 – 网站运维分享-IT技术资源教程-运维成长之路-个人随笔-华禹个人博客网站众客华禹 – 网站运维分享-IT技术资源教程-运维成长之路-个人随笔-华禹个人博客网站

4、Doris整体架构

图片[2]众客华禹 – 网站运维分享-IT技术资源教程-运维成长之路-个人随笔-华禹个人博客网站众客华禹 – 网站运维分享-IT技术资源教程-运维成长之路-个人随笔-华禹个人博客网站

5、架构非常简单,doris主要组件有三个:

FE(Frontend): 即 Doris 的前端节点。主要负责接收和返回客户端请求、元数据以及集群管理、查询计划生成等工作。
BE(Backend): 即 Doris 的后端节点。主要负责数据存储与管理、查询计划执行等工作。
Broker: Broker 是 Doris 集群中一种可选进程,主要用于支持 Doris 读写远端存储上的文件和目录,如 HDFS、BOS
和 AFS 等。

二、docker编译doris

1、拉镜像

docker pull apache/incubator-doris:build-env-1.4.1

2、启动容器

docker run -it -d -v /data/chenmenglin01/doris/doris-0.15/local/.m2:/root/.m2 -v /data/chenmenglin01/doris/doris-0.15/local/incubator-doris-DORIS-0.15-release/:/root/incubator-doris-DORIS-0.15-release/ apache/incubator-doris:build-env-1.4.1

3、进入目录

cd  /data/chenmenglin01/doris/doris-0.15/local/incubator-doris-DORIS-0.15-release/
wget https://dist.apache.org/repos/dist/dev/incubator/doris/0.15/0.15.0-rc04/apache-doris-0.15.0-incubating-src.tar.gz
or
wget https://dist.apache.org/repos/dist/dev/incubator/doris/xxx.tar.gz
or
git clone https://github.com/apache/incubator-doris.git

4、解压

tar -zxvf apache-doris-0.15.0-incubating-src.tar.gz

5、进入容器

docker exec -it brave_satoshi /bin/bash
cd /root/incubator-doris-DORIS-0.15-release/apache-doris-0.15.0-incubating-src

6、mvn生成本地缓存仓库,以免多次下载依赖
运行命令行

mvn help:effective-settings

如果你没有做任何特殊配置的话,等下载完jar包后 ,这里的 就是本地仓库了,一般为/root/.m2/repository

7、修改使用的jdk版本
在 build-env-1.3.1 的docker镜像中,同时包含了 OpenJDK 8 和 OpenJDK 11,并且默认使用 OpenJDK 11 编译。请确保编译使用的 JDK 版本和运行时使用的 JDK 版本一致,否则会导致非预期的运行错误。你可以使用在进入编译镜像的容器后,使用以下命令切换默认 JDK 版本:

切换到 JDK 8:
$ alternatives --set java java-1.8.0-openjdk.x86_64
$ alternatives --set javac java-1.8.0-openjdk.x86_64
$ export JAVA_HOME=/usr/lib/jvm/java-1.8.0

切换到 JDK 11:
$ alternatives --set java java-11-openjdk.x86_64
$ alternatives --set javac java-11-openjdk.x86_64
$ export JAVA_HOME=/usr/lib/jvm/java-11

8、进入doris源码的路径,进入fe文件夹中修改pom.xml,将pluginRepositories字段中的spring-plugins插件

信息删除
图片[3]众客华禹 – 网站运维分享-IT技术资源教程-运维成长之路-个人随笔-华禹个人博客网站众客华禹 – 网站运维分享-IT技术资源教程-运维成长之路-个人随笔-华禹个人博客网站

9、编译 Doris

sh build.sh

注意:
如果你使用的是 build-env-1.4.1 这个环境,第一次编译的时候要使用如下命令:
sh build.sh –clean –be –fe –ui
这是因为1.4.1 版本镜像升级了 thrift(0.9 -> 0.13),需要通过 –clean 命令强制使用新版本的 thrift 生成代码文件,否则会出现不兼容的代码。
编译完成后,产出文件在 output/ 目录中。

三、部署doris集群

1、部署准备

#关闭防火墙
systemctl stop firewalld
systemctl disable firewalld

#关闭selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config  # 永久
setenforce 0  # 临时

#关闭swap
swapoff -a  # 临时
sed -ri 's/.*swap.*/#&/' /etc/fstab    # 永久

#在master添加hosts
cat >> /etc/hosts << EOF 
192.168.100.12 doris01 
192.168.100.13 doris02 
192.168.100.14 doris03 EOF 

#时间同步 
yum install -y chrony 
vim /etc/chrony.conf 
systemctl restart chronyd 
systemctl enable chronyd 
timedatectl set-timezone Asia/Shanghai
chronyc sources 

#修改文件描述符 
echo 'ulimit -n 65535' >> /etc/profile; source /etc/profile

单独查看文件描述符:
ulimit -n
1024

当前终端环境的fd限制修改,仅限于本终端:
ulimit -n 65535

查看系统最大文件描述符:
cat /proc/sys/fs/file-max
190948

查看系统当前使用的描述符:
cat /proc/sys/fs/file-nr
5440    0       190948

安装jdk
tar -zxvf jdk-8u251-linux-x64.tar.gz
mv jdk1.8.0_251  /usr/local/

vim /etc/profile
export  JAVA_HOME=/usr/local/jdk1.8.0_251
PATH=$PATH:$JAVA_HOME/bin:/usr/local/bin/

2、将output中的fe和be打包之后欧拷贝到doris集群节点的其它路径下

cp -r output/ /data/

3、解压fe文件夹,进入conf文件夹,修改fe.conf

配置 FE:
1)配置文件为 conf/fe.conf。其中注意:meta_dir是元数据存放位置。默认值为 ${DORIS_HOME}/doris-meta。需手动创建该目录。
注意:生产环境强烈建议单独指定目录不要放在Doris安装目录下,最好是单独的磁盘(如果有SSD最好),测试开发环境可以使用默认配置
2)fe.conf中JAVA_OPTS默认java最大堆内存为4GB,建议生产环境调整至8G以上。

# 采用CIDR的格式,10.197.83.26是fe所在机器的对外IP,需要priority_networks的值只能获取到宿主机上的一个固定IP
默认:
http_port = 8030
rpc_port = 9020
query_port = 9030
edit_log_port = 9010

修改后:
priority_networks = 10.197.83.26/30          
http_port = 8531
rpc_port = 9021
query_port = 8631
edit_log_port = 9011

4、启动fe(先只启动第一台,后面的会加入)

sh bin/start_fe.sh --daemon

5、解压be文件夹,修改be的配置文件

priority_networks = 10.197.83.26/30
be_port = 9061
webserver_port = 8541
heartbeat_service_port = 9051
brpc_port = 8561

6、启动be

sh bin/start_be.sh --daemon

7、从前端访问fe和be

fe:http://10.197.83.26:8531/
be:http://10.197.83.26:8541/
账号:root 密码:无

8、安装mysql客户端前,卸载centos7自带的mariadb

rpm -qa|grep mariadb
rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64

9、安装mysql客户端

rpm -ivh *.rpm

10、从mysql访问fe

1)连接fe: mysql -h 10.197.83.26 -P 8631 -uroot
2)更改root的密码: set password for 'root' = PASSWORD('Zwy.com123!');
3)添加be: ALTER SYSTEM ADD BACKEND "10.197.83.26:9051"
4)查看fe: show proc '/frontends'\G; 
// 此时10.197.83.26这台机器的fe的isMaster项应该显示是true,即是leader节点
5)查看be: show proc '/backends' \G;

11、添加其他fe节点

登录其他fe节点机器,修改fe的配置,然后启动fe
./bin/start_fe.sh --helper 192.168.100.12:9011 --daemon

此时不需要再单独设置fe的密码,它会和第一台机器的密码相同,其中helper后面跟的是第一台机器的IP地址以及fe的edit_log_port端口;

12、启动be

sh bin/start_be.sh --daemon

14、登录第一台机器上的fe来添加后面两个fe和be

ALTER SYSTEM ADD FOLLOWER "192.168.100.13:9011";
ALTER SYSTEM ADD BACKEND  "192.168.100.13:9051";

15、查看状态

show proc '/frontends'\G;
*************************** 1. row ***************************
             Name: 192.168.100.12_9011_1639300521681
               IP: 192.168.100.12
         HostName: doris01
      EditLogPort: 9011
         HttpPort: 8531
        QueryPort: 8631
          RpcPort: 9021
             Role: FOLLOWER
         IsMaster: true
        ClusterId: 339723260
             Join: true
            Alive: true
ReplayedJournalId: 1186
    LastHeartbeat: 2021-12-12 19:00:15
         IsHelper: true
           ErrMsg: 
          Version: 0.15.0-rc04-Unknown
 CurrentConnected: Yes
*************************** 2. row ***************************
             Name: 192.168.100.13_9011_1639304895592
               IP: 192.168.100.13
         HostName: doris02
      EditLogPort: 9011
         HttpPort: 8531
        QueryPort: 8631
          RpcPort: 9021
             Role: FOLLOWER
         IsMaster: false
        ClusterId: 339723260
             Join: true
            Alive: true
ReplayedJournalId: 1185
    LastHeartbeat: 2021-12-12 19:00:15
         IsHelper: true
           ErrMsg: 
          Version: 0.15.0-rc04-Unknown
 CurrentConnected: No
*************************** 3. row ***************************
             Name: 192.168.100.14_9011_1639304898810
               IP: 192.168.100.14
         HostName: doris03
      EditLogPort: 9011
         HttpPort: 8531
        QueryPort: 8631
          RpcPort: 9021
             Role: FOLLOWER
         IsMaster: false
        ClusterId: 339723260
             Join: true
            Alive: true
ReplayedJournalId: 1185
    LastHeartbeat: 2021-12-12 19:00:15
         IsHelper: true
           ErrMsg: 
          Version: 0.15.0-rc04-Unknown
 CurrentConnected: No

show proc '/backends' \G;
*************************** 1. row ***************************
            BackendId: 11001
              Cluster: default_cluster
                   IP: 192.168.100.12
             HostName: doris01
        HeartbeatPort: 9051
               BePort: 9061
             HttpPort: 8541
             BrpcPort: 8561
        LastStartTime: 2021-12-12 18:19:42
        LastHeartbeat: 2021-12-12 19:00:50
                Alive: true
 SystemDecommissioned: false
ClusterDecommissioned: false
            TabletNum: 0
     DataUsedCapacity: 0.000 
        AvailCapacity: 80.571 GB
TotalCapacity: 99.951 GB
              UsedPct: 19.39 %
       MaxDiskUsedPct: 19.39 %
                  Tag: {"location" : "default"}
               ErrMsg: 
              Version: 0.15.0-rc04-Unknown
               Status: {"lastSuccessReportTabletsTime":"2021-12-12 19:00:48","lastStreamLoadTime":-1}
*************************** 2. row ***************************
            BackendId: 11002
              Cluster: default_cluster
                   IP: 192.168.100.13
             HostName: doris02
        HeartbeatPort: 9051
               BePort: 9061
             HttpPort: 8541
             BrpcPort: 8561
        LastStartTime: 2021-12-12 18:56:31
        LastHeartbeat: 2021-12-12 19:00:50
                Alive: true
 SystemDecommissioned: false
ClusterDecommissioned: false
            TabletNum: 0
     DataUsedCapacity: 0.000 
        AvailCapacity: 85.599 GB
        TotalCapacity: 99.951 GB
              UsedPct: 14.36 %
       MaxDiskUsedPct: 14.36 %
                  Tag: {"location" : "default"}
               ErrMsg: 
              Version: 0.15.0-rc04-Unknown
               Status: {"lastSuccessReportTabletsTime":"2021-12-12 19:00:46","lastStreamLoadTime":-1}
*************************** 3. row ***************************
            BackendId: 11003
              Cluster: default_cluster
                   IP: 192.168.100.14
             HostName: doris03
        HeartbeatPort: 9051
               BePort: 9061
             HttpPort: 8541
             BrpcPort: 8561
        LastStartTime: 2021-12-12 18:58:42
        LastHeartbeat: 2021-12-12 19:00:50
                Alive: true
 SystemDecommissioned: false
ClusterDecommissioned: false
            TabletNum: 0
     DataUsedCapacity: 0.000 
        AvailCapacity: 97.838 GB
        TotalCapacity: 99.951 GB
              UsedPct: 2.11 %
       MaxDiskUsedPct: 2.11 %
                  Tag: {"location" : "default"}
               ErrMsg: 
              Version: 0.15.0-rc04-Unknown
               Status: {"lastSuccessReportTabletsTime":"2021-12-12 18:59:55","lastStreamLoadTime":-1}
3 rows in set (0.01 sec)
© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享
评论 共1条
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片
    • 头像金万达0