Apache Doris 單節(jié)點(diǎn)(可多節(jié)點(diǎn))Docker集群制作教程

集群制作Author:蘇奕嘉

腳本研發(fā)Author:種益

調(diào)研測(cè)試Author:楊春東

前言

Apache Doris是當(dāng)下非?;馃岷土餍械腗PP架構(gòu)OLAP數(shù)據(jù)庫(kù),很多同學(xué)想自學(xué)/測(cè)試Doris的使用和能力,但是又苦于沒(méi)有環(huán)境或者畏懼冗長(zhǎng)的編譯+搭建過(guò)程,整個(gè)過(guò)程極大的勸退了很多有些嘗試意愿、但又由于各種客觀因素?zé)o法承擔(dān)過(guò)高學(xué)習(xí)成本導(dǎo)致嘗試失敗的同學(xué),故此Apache Doris社區(qū)三位社區(qū)同學(xué)蘇奕嘉、種益、楊春東制作了三個(gè)不同設(shè)計(jì)的版本安裝方式并提供下載,以此降低大家的學(xué)習(xí)門(mén)檻和提升學(xué)習(xí)/測(cè)試效率。

重要說(shuō)明:該教程提供的編譯方式及運(yùn)行環(huán)境都以單節(jié)點(diǎn)部署集群為目標(biāo),故性能會(huì)【大打折扣】,如想體驗(yàn)完整Apache Doris數(shù)據(jù)庫(kù)的能力,請(qǐng)以完整集群部署,單節(jié)點(diǎn)集群【僅適用于學(xué)習(xí)、功能測(cè)試】所用!

版本說(shuō)明

1. 極速體驗(yàn)版

1.1. 優(yōu)點(diǎn)

  1. 超快速的部署體驗(yàn)(網(wǎng)速OK的話十五分鐘內(nèi)部署完畢)
  2. 單節(jié)點(diǎn)部署
  3. 支持多環(huán)境運(yùn)行:虛擬機(jī)/云服務(wù)器/支持Docker的物理機(jī)(Mac/Win/Linux)

1.2. 缺點(diǎn)

  1. 數(shù)據(jù)存儲(chǔ)是在Docker容器中,如容器如損壞,會(huì)導(dǎo)致數(shù)據(jù)丟失
  2. 若非干凈純凈的系統(tǒng)環(huán)境,可能需要手動(dòng)執(zhí)行部分BE注冊(cè)FE的命令

1.3. 適用人群

學(xué)生、培訓(xùn)機(jī)構(gòu)、體驗(yàn)/測(cè)試人員

1.4. 安裝建議

系統(tǒng)為純凈新系統(tǒng)最佳,無(wú)需任何修改即可開(kāi)箱即用


2. 完全部署版

2.1. 優(yōu)點(diǎn)

  1. 完整的環(huán)境部署(MySQL-Client等組件)
  2. 自由的部署安排(有眾多可選安裝參數(shù))
  3. 無(wú)懼Docker容器損壞(最小降低損失,可極速恢復(fù))
  4. 單節(jié)點(diǎn)部署
  5. 支持多環(huán)境運(yùn)行:虛擬機(jī)/云服務(wù)器,暫未適配物理機(jī)(后續(xù)升級(jí)版本會(huì)支持)

2.2. 缺點(diǎn)

  1. 安裝過(guò)程時(shí)間較長(zhǎng)(視網(wǎng)速和機(jī)器性能而定)
  2. 安裝步驟多,代表可能故障率較高

2.3. 適用人群

學(xué)生、培訓(xùn)機(jī)構(gòu)、體驗(yàn)/測(cè)試人員中的持續(xù)性教學(xué)受眾(數(shù)據(jù)不易丟失)

2.4. 安裝建議

該版本建議完完全全的純凈新系統(tǒng),以此降低安裝故障率


3. 存算分離版

該版本還在制作過(guò)程中,教程及相關(guān)文檔后續(xù)推出,可視為完全部署版的Plus版本。


目的

該教程最后成果模塊提供了各個(gè)版本下載地址,只需在服務(wù)器拉取不同版本shell腳本運(yùn)行即可,在/opt/docker/doris/sbin目錄下會(huì)有start_doris_docker.shstop_doris_docker.sh腳本支持一鍵啟停,同時(shí)會(huì)在一鍵部署的過(guò)程中將兩個(gè)腳本添加至環(huán)境變量,最大程度簡(jiǎn)化單節(jié)點(diǎn)測(cè)試部署和啟停操作。

步驟過(guò)程可以忽略,除非有定制化的一鍵部署Docker集群的鏡像集群制作需求,大可不必照著教程再來(lái)一遍,官方已提供了下載地址,無(wú)需重復(fù)勞動(dòng)。

環(huán)境

環(huán)境一

  • 服務(wù)器:騰訊云 2C 4G 6M 一臺(tái)
  • OS:CentOS 7.6
  • Docker-V:20.10.12
  • Doris-V:1.0 beta
  • MySQL-Client-V:5.7
  • FE-Num:1
  • BE-Num:3

環(huán)境二

  • 服務(wù)器:Win虛擬機(jī) 8C 44G 一臺(tái)
  • OS:CentOS 7.6
  • Docker-V:20.10.12
  • Doris-V:1.0 beta
  • MySQL-Client-V:5.7
  • FE-Num:1
  • BE-Num:5

步驟

1. 安裝Docker環(huán)境

  1. Docker 要求 CentOS 系統(tǒng)的內(nèi)核版本高于3.10 ,首先查看系統(tǒng)內(nèi)核版本是否滿足

    uname -r
    
  2. 使用 root 權(quán)限登錄系統(tǒng),確保 yum 包更新到最新

    sudo yum update -y
    
  3. 假如安裝過(guò)舊版本,先卸載舊版本

    sudo yum remove docker  docker-common docker-selinux docker-engine
    
  4. 安裝需要的軟件包, yum-util 提供yum-config-manager功能,另外兩個(gè)是devicemapper驅(qū)動(dòng)依賴的

    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    
  5. 設(shè)置yum源(加速yum下載速度)

    sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    
  6. 查看所有倉(cāng)庫(kù)中所有docker版本,并選擇特定版本安裝,一般可直接安裝最新版

    yum list docker-ce --showduplicates | sort -r
    
  7. 安裝docker

    • 安裝最新穩(wěn)定版本

      sudo yum install docker-ce -y  #安裝的是最新穩(wěn)定版本,因?yàn)閞epo中默認(rèn)只開(kāi)啟stable倉(cāng)庫(kù)
      
    • 安裝指定版本

      sudo yum install <FQPN> -y
      # 例如:
      sudo yum install docker-ce-20.10.11.ce -y
      
  8. 啟動(dòng)并加入開(kāi)機(jī)啟動(dòng)

    sudo systemctl start docker #啟動(dòng)docker
    sudo systemctl enable docker #加入開(kāi)機(jī)自啟動(dòng)
    
  9. 查看Version,驗(yàn)證是否安裝成功

    docker version
    

    若出現(xiàn)Client和Server兩部分內(nèi)容,則證明安裝成功

2. 容器創(chuàng)建及測(cè)試

在創(chuàng)建之前,請(qǐng)準(zhǔn)備好已完成編譯的FE/BE文件,此教程不再贅述編譯過(guò)程。

  1. 拉取Doris編譯鏡像做測(cè)試

    # 拉取
    docker pull apache/incubator-doris:build-env-ldb-toolchain-latest
    
  2. 創(chuàng)建Doris-Docker的文件(包括元數(shù)據(jù)文件夾)

    mkdir -p /opt/docker/doris
    
  3. 將編譯好的FE和BE拷貝至Docker文件群內(nèi)

    cp -r 編譯好的Doris根目錄/fe/ /opt/docker/doris/
    cp -r 編譯好的Doris根目錄/be/ /opt/docker/doris/be-01
    cp -r 編譯好的Doris根目錄/be/ /opt/docker/doris/be-02
    cp -r 編譯好的Doris根目錄/be/ /opt/docker/doris/be-03
    
  4. 啟動(dòng)FE-Docker

    docker run -it -p 8030:8030 -p 9030:9030 -d --name=doris-fe -v /opt/docker/doris/fe:/opt/doris/fe -v /opt/docker/doris/doris-meta:/opt/doris/doris-meta apache/incubator-doris:build-env-ldb-toolchain-latest
    
  5. 進(jìn)入FE-Docker以及安裝組件

    # 進(jìn)入fe-docker
    docker exec -ti doris-fe /bin/bash
    # 安裝net-tools用于查看IP
    yum install net-tools -y
    
  6. 修改FE配置

    # 查看fe-docker的IPv4地址
    ifconfig
    # 修改配置文件
    vim /opt/doris/fe/conf/fe.conf
    # 取消priority_networks的注解,并根據(jù)Docker的網(wǎng)段進(jìn)行配置
    priority_networks = 172.17.0.0/16 #這里要根據(jù)你Docker的IP確定
    
  7. 切換Docker-JDK版本

    # 切換Java版本為JDK1.8,該鏡像默認(rèn)為JDK11
    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
    # 校驗(yàn)是否切換版本成功
    java -version
    
  8. 配置FE-Docker的環(huán)境變量

    # 配置環(huán)境變量
    vim /etc/profile.d/doris.sh
    export DORIS_HOME=/opt/doris/fe/
    export PATH=$PATH:$DORIS_HOME/bin
    # 保存并source
    source /etc/profile.d/doris.sh
    
  9. 啟動(dòng)Doris-FE

    start_fe.sh --daemon
    
  10. 檢查FE是否啟動(dòng)成功

    1. 檢查是否啟動(dòng)成功,JPS命令下有沒(méi)有PaloFe進(jìn)程

    2. FE 進(jìn)程啟動(dòng)后,會(huì)首先加載元數(shù)據(jù),根據(jù) FE 角色的不同,在日志中會(huì)看到 transfer from UNKNOWN to MASTER/FOLLOWER/OBSERVER。最終會(huì)看到 thrift server started 日志,并且可以通過(guò) mysql 客戶端連接到 FE,則表示 FE 啟動(dòng)成功。

    3. 也可以通過(guò)如下連接查看是否啟動(dòng)成功:
      http://fe_host:fe_http_port/api/bootstrap

      如果返回:
      {"status":"OK","msg":"Success"}

      則表示啟動(dòng)成功,其余情況,則可能存在問(wèn)題。

    4. 外網(wǎng)環(huán)境訪問(wèn)http://fe_host:fe_http_port 查看是否可以訪問(wèn)WebUI界面,登錄賬號(hào)默認(rèn)為root,密碼為空

    注:如果在 fe.log 中查看不到啟動(dòng)失敗的信息,也許在 fe.out 中可以看到。

  11. 宿主機(jī)安裝MySQL客戶端

    wget -c http://mirrors.ustc.edu.cn/mysql-ftp/Downloads/MySQL-5.7/mysql-5.7.37-1.el7.x86_64.rpm-bundle.tar
    tar -xvf mysql-5.7.37-1.el7.x86_64.rpm-bundle.tar
    rpm -ivh mysql-community-common-5.7.37-1.el7.x86_64.rpm
    rpm -ivh mysql-community-libs-5.7.37-1.el7.x86_64.rpm
    rpm -ivh mysql-community-client-5.7.37-1.el7.x86_64.rpm
    
  12. 連接FE并修改密碼

    mysql -h FE-Docer的IP -P 9030 -uroot
    SET PASSWORD FOR 'root' = PASSWORD('your_password');
    # 也可以創(chuàng)建新用戶
    CREATE USER 'test' IDENTIFIED BY 'test_passwd';
    

    后續(xù)鏈接時(shí)需要使用如下格式

    mysql -h FE_HOST -P9030 -uusername -ppassword
    

    添加BE節(jié)點(diǎn)注冊(cè)信息

    ALTER SYSTEM ADD BACKEND "host:port";
    # 其中 host 為 BE 所在節(jié)點(diǎn) ip;port 為 be/conf/be.conf 中的 heartbeat_service_port,默認(rèn)9050。
    
  13. 啟動(dòng)BE-Docker

    docker run -it -p 9061:9060 -d --name=doris-be-01 -v /opt/docker/doris/be-01:/opt/doris/be apache/incubator-doris:build-env-ldb-toolchain-latest
    docker run -it -p 9062:9060 -d --name=doris-be-02 -v /opt/docker/doris/be-02:/opt/doris/be apache/incubator-doris:build-env-ldb-toolchain-latest
    docker run -it -p 9063:9060 -d --name=doris-be-03 -v /opt/docker/doris/be-03:/opt/doris/be apache/incubator-doris:build-env-ldb-toolchain-latest
    
  14. 進(jìn)入BE-Docker以及安裝組件

    # 進(jìn)入fe-docker,以01為例
    docker exec -ti doris-be-01 /bin/bash
    # 安裝net-tools用于查看IP
    yum install net-tools -y
    
  15. 修改BE配置

    # 查看fe-docker的IPv4地址
    ifconfig
    # 修改配置文件
    vim /opt/doris/be/conf/be.conf
    # 取消priority_networks的注解,并根據(jù)Docker的網(wǎng)段進(jìn)行配置
    priority_networks = 172.17.0.0/16 #這里要根據(jù)你Docker的IP確定
    
  16. 配置BE-Docker的環(huán)境變量

    # 配置環(huán)境變量
    vim /etc/profile.d/doris.sh
    export DORIS_HOME=/opt/doris/be/
    export PATH=$PATH:$DORIS_HOME/bin
    # 保存并source
    source /etc/profile.d/doris.sh
    
  17. 啟動(dòng)Doris-BE

    start_be.sh --daemon
    
  18. 檢查BE是否啟動(dòng)成功

    1. BE 進(jìn)程啟動(dòng)后,如果之前有數(shù)據(jù),則可能有數(shù)分鐘不等的數(shù)據(jù)索引加載時(shí)間。

    2. 如果是 BE 的第一次啟動(dòng),或者該 BE 尚未加入任何集群,則 BE 日志會(huì)定期滾動(dòng) waiting to receive first heartbeat from frontend 字樣。表示 BE 還未通過(guò) FE 的心跳收到 Master 的地址,正在被動(dòng)等待。這種錯(cuò)誤日志,在 FE 中 ADD BACKEND 并發(fā)送心跳后,就會(huì)消失。如果在接到心跳后,又重復(fù)出現(xiàn) master client, get client from cache failed.host: , port: 0, code: 7 字樣,說(shuō)明 FE 成功連接了 BE,但 BE 無(wú)法主動(dòng)連接 FE??赡苄枰獧z查 BE 到 FE 的 rpc_port 的連通性。

    3. 如果 BE 已經(jīng)被加入集群,日志中應(yīng)該每隔 5 秒滾動(dòng)來(lái)自 FE 的心跳日志:get heartbeat, host: xx.xx.xx.xx, port: 9020, cluster id: xxxxxx,表示心跳正常。

    4. 其次,日志中應(yīng)該每隔 10 秒滾動(dòng) finish report task success. return code: 0 的字樣,表示 BE 向 FE 的通信正常。

    5. 同時(shí),如果有數(shù)據(jù)查詢,應(yīng)該能看到不停滾動(dòng)的日志,并且有 execute time is xxx 日志,表示 BE 啟動(dòng)成功,并且查詢正常。

    6. 也可以通過(guò)如下連接查看是否啟動(dòng)成功:
      http://be_host:be_http_port/api/health

      如果返回:
      {"status": "OK","msg": "To Be Added"}

      則表示啟動(dòng)成功,其余情況,則可能存在問(wèn)題。

      注:如果在 be.INFO 中查看不到啟動(dòng)失敗的信息,也許在 be.out 中可以看到。

  19. 測(cè)試連通性

    # 登錄FE-MySQL
    mysql -h FE_HOST -P9030 -uusername -ppassword
    # 執(zhí)行命令查看BE運(yùn)行情況。如一切正常,isAlive 列應(yīng)為 true。
    SHOW PROC '/backends';
    
  20. 若連通性測(cè)試成功,則循環(huán)完成其他BE節(jié)點(diǎn)的部署即可

3. 安裝ETCD環(huán)境(若多節(jié)點(diǎn)Dokcer需配置|單節(jié)點(diǎn)可忽略)

  1. 配置Hosts文件映射

    vim /etc/hosts
    你本機(jī)內(nèi)網(wǎng)IP地址 master
    
  2. 安裝ETCD

    # 安裝ETCD
    yum install -y etcd
    # 重啟ETCD
    systemctl restart etcd
    
  3. 設(shè)置開(kāi)機(jī)啟動(dòng)

    systemctl enable etcd
    
  4. 修改ETCD配置

     # 先查找本機(jī)的IP地址
     ifconfig
     # 備份原始配置文件
     cp /etc/etcd/etcd.conf /etc/etcd/etcd.conf.bak
     # 編輯ETCD的conf文件
     vim /etc/etcd/etcd.conf
     # 修改監(jiān)聽(tīng)客戶端地址為
    ETCD_LISTEN_CLIENT_URLS="http://master:2379,http://127.0.0.1:2379,http://master:4001,http://127.0.0.1:4001"
     # 修改通知客戶端地址為
    ETCD_ADVERTISE_CLIENT_URLS="http://master:2379,http://master:4001"
     # 保存退出
    
  5. 設(shè)置ETCD網(wǎng)段

    # Flannel使用Etcd進(jìn)行配置,來(lái)保證多個(gè)Flannel實(shí)例之間的配置一致性,所以需要在etcd上進(jìn)行如下配置('/atomic.io/network/config'這個(gè)key與上文/etc/sysconfig/flannel中的配置項(xiàng)FLANNEL_ETCD_PREFIX是相對(duì)應(yīng)的,錯(cuò)誤的話啟動(dòng)就會(huì)出錯(cuò))
    etcdctl mk /atomic.io/network/config '{"Network":"172.20.0.0/16","SubnetMin":"172.20.1.0","SubnetMax":"172.20.254.0"}'
    
  6. 重啟ETCD

    systemctl restart etcd 
    
  7. 測(cè)試

    # 查看ETCD進(jìn)程是否存在
    ps -ef|grep etcd
    # 查看端口使用情況,因?yàn)镋TCD默認(rèn)TCP:2379端口通訊
    lsof -i:2379
    # 使用get命令查看是否設(shè)置成功
    etcdctl get /atomic.io/network/config 
    # 若出現(xiàn)以下信息,則代表設(shè)置成功
    {"Network":"172.20.0.0/16","SubnetMin":"172.20.1.0","SubnetMax":"172.20.254.0"}
    # 查看cluster-health
    etcdctl -C http://master:4001 cluster-health
    etcdctl -C http://master:2379 cluster-health
    # 若出現(xiàn)如下信息,則代表成功
    member 8e9e05c52164694d is healthy: got healthy result from http://你IP地址:2379(和4001)
    

4. 安裝Flannel環(huán)境(若多節(jié)點(diǎn)Dokcer需配置|單節(jié)點(diǎn)可忽略)

  1. Yum安裝Flannel

    yum install -y flannel
    
  2. 配置Flannel

    # 備份原始配置文件
    cp /etc/sysconfig/flanneld /etc/sysconfig/flanneld.bak
    # 編輯配置文件
    vim /etc/sysconfig/flanneld
    # 修改以下配置項(xiàng)
    FLANNEL_ETCD_ENDPOINTS="http://master:2379"
    
  3. 設(shè)置開(kāi)機(jī)自啟

    systemctl enable flanneld.service
    
  4. 啟動(dòng)Flannel

    systemctl start flanneld.service
    
  5. 重啟Docker

    systemctl restart docker
    
  6. 測(cè)試

    # 查看Flannel進(jìn)程
    ps -ef | grep flannel
    

5. 測(cè)試及遠(yuǎn)程連接

可使用Navicat等遠(yuǎn)端工具連接FE,地址為部署了FE服務(wù)的單機(jī)外網(wǎng)IP,端口為9030,如圖所示

<img src="https://fop-1256218176.cos.ap-shanghai.myqcloud.com/md/2022-03-03-123903.png" alt="image-20220303203902837" style="zoom:33%;" />

6. SHELL腳本設(shè)計(jì)及開(kāi)發(fā)

6.1. 完整部署版整體設(shè)計(jì)示意圖

image-20220304121008665

6.2. 思路梳理

6.2.1 極速體驗(yàn)版(極速體驗(yàn)免除安裝)
  1. 默認(rèn)1FE 3BE安裝

  2. Docker安裝(可參照步驟1

  3. 拉取Docker鏡像群

    docker pull freeoneplus/doris-fe:1.0
    docker pull freeoneplus/doris-be:1.0
    
  4. 創(chuàng)建FE-Docker容器

    docker run -it -p 8030:8030 -p 9030:9030 -d --name=doris-fe freeoneplus/doris-fe:1.0
    
  5. 進(jìn)入FE-Docker并獲取IPv4地址

    docker exec -it doris-fe /bin/bash
    ifconfig
    exit
    docker exec -d doris-fe /bin/bash /opt/doris/fe/start_fe.sh --daemon
    
  6. 循環(huán)創(chuàng)建BE-Docker容器并啟動(dòng)BE

    docker run -it -p 9061:9060 -d --name=doris-be-01 freeoneplus/doris-be:1.0
    docker exec -d doris-be-01 /bin/bash /opt/doris/be/start_be.sh --daemon
    docker run -it -p 9062:9060 -d --name=doris-be-02 freeoneplus/doris-be:1.0
    docker exec -d doris-be-02 /bin/bash /opt/doris/be/start_be.sh --daemon
    docker run -it -p 9063:9060 -d --name=doris-be-03 freeoneplus/doris-be:1.0
    docker exec -d doris-be-03 /bin/bash /opt/doris/be/start_be.sh --daemon
    
  7. 提示用戶進(jìn)行BE注冊(cè)

    親愛(ài)的用戶,歡迎使用 Apache Doris-極簡(jiǎn)版-Docker集群!
    接下來(lái)的文字請(qǐng)認(rèn)真閱讀:
    1. 此版本集群為極簡(jiǎn)版單節(jié)點(diǎn)docker集群,所有數(shù)據(jù)均掛載在Docker集群內(nèi),請(qǐng)謹(jǐn)慎修改或刪除容器!
    2. 此版本預(yù)制注冊(cè)三個(gè)BE節(jié)點(diǎn)至FE,但可能由于不同環(huán)境影響,預(yù)先注冊(cè)的IP地址可能會(huì)出現(xiàn)錯(cuò)誤,所以請(qǐng)仔細(xì)觀察FE的預(yù)制IP地址:${FE-IP地址},若以上地址為172.17.0.2,則無(wú)需做任何修改即可直接使用,如果是其他數(shù)值,則需要進(jìn)行鏈接FE進(jìn)行BE注冊(cè)
    3. 您可以使用任意MySQL-Client或者M(jìn)ySQL工具連接FE-MySQL-Server
    若宿主機(jī)(您的虛擬機(jī)/云服務(wù)器)有MySQL-Client,則需要執(zhí)行以下命令鏈接FE-MySQL-Server
    mysql -h ${FE-IP地址} -P 9030 -uroot -p123456
    若您使用外網(wǎng)機(jī)器鏈接FE-MySQL-Server,則需要填入以下參數(shù),您需要提前打開(kāi)9030外網(wǎng)端口
    url:您的服務(wù)器外網(wǎng)IP(虛擬機(jī)則視網(wǎng)絡(luò)橋接方式)
    port:9030
    username:root
    password:
    然后執(zhí)行以下命令清除已注冊(cè)至FE的BE節(jié)點(diǎn)信息
    
    `以下需要邏輯處理`
    預(yù)設(shè)的三個(gè)BE地址為[172.17.0.3,172.17.0.4,172.17.0.5]
    該地址應(yīng)為FE-IP地址最后一位自增3,所以如果預(yù)設(shè)錯(cuò)誤,需要給出刪除語(yǔ)句和增添語(yǔ)句
    比如FE-IP為 172.17.0.4,則需要給出刪除[172.17.0.3,172.17.0.4]兩個(gè)BE節(jié)點(diǎn)的語(yǔ)句
    ALTER SYSTEM DECOMMISSION BACKEND "${FE-IP地址}:9050";
    然后再給出新增的兩個(gè)節(jié)點(diǎn)的IP[172.17.0.6,172.17.0.7]注冊(cè)語(yǔ)句
    ALTER SYSTEM ADD BACKEND "${FE-IP地址}:9050";
    `以上需要邏輯處理`
    
    感謝您的安裝和使用Apache Doris!
    感謝您為開(kāi)源世界作出的一份貢獻(xiàn)!
    如有問(wèn)題請(qǐng)打開(kāi)地址:doris.freeoneplus.com
    掃描二維碼添加Apache Doris社區(qū)微信群獲取答疑~
    
6.2.2 完整部署版(數(shù)據(jù)落盤(pán)無(wú)懼丟失)
  1. 校驗(yàn)?zāi)_本執(zhí)行口令,防止誤操作

    • 輸出一段文字說(shuō)明
    • 等待接收Doris這五個(gè)字母,成功則繼續(xù),未成功則終止
  2. 依次詢問(wèn)參數(shù)配置設(shè)置,接收參數(shù),可參考的有:

    1. 是否默認(rèn)配置安裝(Y/N)
    2. BE數(shù)量(默認(rèn)為3)
    3. root密碼(默認(rèn)為空)
    4. 操作員賬戶名稱(默認(rèn)無(wú))
    5. 操作員賬戶密碼(默認(rèn)無(wú))
    6. FE-Http-Port端口(默認(rèn)8030)
    7. FE-MySQL-Cli-Port端口(默認(rèn)9030)
  3. 創(chuàng)建宿主機(jī)資源目錄并進(jìn)入

    mkdir -p /opt/docker/doris/
    cd /opt/docker/doris/
    
  4. 拉取編譯好的文件包至上述目錄(當(dāng)前版本為Apache Doris-1.0.0 bate測(cè)試版)

    wget https://jiafeng2022.oss-cn-beijing.aliyuncs.com/doris-1.0.0-jdk8-20220301.tar.gz
    
  5. 解壓文件包

    tar -zxvf /opt/docker/doris/apache-doris-install.tar.gz
    
  6. 根據(jù)傳參的BE數(shù)量循環(huán)復(fù)制BE目錄,以默認(rèn)數(shù)量為樣例,命令執(zhí)行為

    cp -r /opt/docker/doris/be /opt/docker/doris/be-01
    cp -r /opt/docker/doris/be /opt/docker/doris/be-02
    cp -r /opt/docker/doris/be /opt/docker/doris/be-03
    
  7. 監(jiān)測(cè)Docker是否安裝

    docker version
    
  8. 如果已安裝則跳過(guò),未安裝則安裝Docker

    # 監(jiān)測(cè)內(nèi)核版本,若小于3.10則終止安裝并通知失敗,告知失敗原因
    uname -r
    # 如果大于3.10則開(kāi)始安裝,依次執(zhí)行以下命令
    sudo yum update -y
    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    sudo yum install docker-ce -y
    sudo systemctl start docker 
    sudo systemctl enable docker 
    # 執(zhí)行結(jié)束,監(jiān)測(cè)執(zhí)行是否都已成功
    docker version
    
  9. 監(jiān)測(cè)MySQL-Client是否已安裝

    mysql --version
    
  10. 如果已安裝則跳過(guò),未安裝則安裝MySQL-Client

    mkdir -p /opt/software
    cd /opt/software
    wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.37-1.el7.x86_64.rpm-bundle.tar
    tar -xvf mysql-5.7.37-1.el7.x86_64.rpm-bundle.tar
    rpm -ivh mysql-community-common-5.7.37-1.el7.x86_64.rpm
    rpm -ivh mysql-community-libs-5.7.37-1.el7.x86_64.rpm
    rpm -ivh mysql-community-client-5.7.37-1.el7.x86_64.rpm
    
  11. 拉取Doris編譯鏡像為基礎(chǔ)環(huán)境鏡像

    docker pull apache/incubator-doris:build-env-ldb-toolchain-latest
    
  12. 制作FE容器

    • 構(gòu)建FE容器

      docker run -it -p 8030:8030 -p 9030:9030 -d --name=doris-fe -v /opt/docker/doris/fe:/opt/doris/fe -v /opt/docker/doris/doris-meta:/opt/doris/doris-meta apache/incubator-doris:build-env-ldb-toolchain-latest
      
    • 進(jìn)入容器

      docker exec -ti doris-fe /bin/bash
      
    • 修改FE配置文件

      vim /opt/doris/fe/conf/fe.conf
      # 如FE兩個(gè)對(duì)外端口都是默認(rèn)值,則無(wú)需修改,若有改變,則改變?cè)撝?http_port = 8030
      query_port = 9030
      # 修改網(wǎng)段
      priority_networks = 172.17.0.0/16
      
    • 切換JDK版本

      # 切換Java版本為JDK1.8,該鏡像默認(rèn)為JDK11
      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
      
    • 配置Doris環(huán)境變量

      # 配置環(huán)境變量
      vim /etc/profile.d/doris.sh
      export DORIS_HOME=/opt/doris/fe/
      export PATH=$PATH:$DORIS_HOME/bin
      # 保存并source
      source /etc/profile.d/doris.sh
      
    • 安裝Net-Tools工具以便于查看IP地址

      yum install net-tools -y
      
    • 使用命令查看該Docker的IPv4地址,并記錄下來(lái)

      ifconfig
      
    • 啟動(dòng)FE

      start_fe.sh
      # 最好執(zhí)行命令以后再等待10秒左右
      
    • 退出該容器,返回宿主機(jī)

      exit
      
  13. 用MySQL-Client連接Doris

    mysql -h ${記錄下的FE-Docker的IPv4地址} -P ${默認(rèn)9030,如有改變則使用改變后的query-port} -uroot
    
  14. 注冊(cè)BE至FE

    ALTER SYSTEM ADD BACKEND "${FE-Docker的IPv4地址的第四位自增1}:9050";
    # 這里需要說(shuō)明的是,這命令執(zhí)行時(shí)應(yīng)該是根據(jù)BE的數(shù)量來(lái)循環(huán)的,比如BE為默認(rèn)值3,記錄下FE-Docker的地址為172.17.0.3,那么就應(yīng)該循環(huán)添加 172.17.0.4:9050、172.17.0.5:9050、172.17.0.6:9050三條注冊(cè)信息,以此類推
    
  15. 若有用戶修改密碼和注冊(cè)了操作員賬戶,則執(zhí)行以下命令

    # 修改密碼
    SET PASSWORD FOR 'root' = PASSWORD('${填寫(xiě)的root密碼}');
    # 也可以創(chuàng)建新用戶
    CREATE USER '${填寫(xiě)的操作員賬戶}' IDENTIFIED BY '${填寫(xiě)的操作員密碼}';
    
  16. 退出MySQL-Client

    exit
    
  17. 制作BE容器,該處應(yīng)該進(jìn)入以BE數(shù)量為最大數(shù)值從1開(kāi)始的循環(huán)中(以BE-01為例)

    假設(shè)BE的節(jié)點(diǎn)數(shù)量從1自增的變量為n,在以下示例中取值方式為${n}

    • 構(gòu)建BE容器

      # 標(biāo)準(zhǔn)格式為如下所示,其中三處被替換為${n}
      docker run -it -p 906${n}:9060 -d --name=doris-be-0${n} -v /opt/docker/doris/be-0${n}:/opt/doris/be apache/incubator-doris:build-env-ldb-toolchain-latest
      # 示例
      docker run -it -p 9061:9060 -d --name=doris-be-01 -v /opt/docker/doris/be-01:/opt/doris/be apache/incubator-doris:build-env-ldb-toolchain-latest
      
    • 進(jìn)入容器

      # 這里需要注意,也是要根據(jù)循環(huán)進(jìn)行取值
      docker exec -ti doris-be-0${n} /bin/bash
      
    • 修改BE配置文件

      vim /opt/doris/be/conf/be.conf
      # 取消priority_networks的注解,并根據(jù)Docker的網(wǎng)段進(jìn)行配置
      priority_networks = 172.17.0.0/16 #這里要根據(jù)你Docker的IP確定
      
    • 配置BE環(huán)境變量

      # 配置環(huán)境變量
      vim /etc/profile.d/doris.sh
      export DORIS_HOME=/opt/doris/be/
      export PATH=$PATH:$DORIS_HOME/bin
      # 保存并source
      source /etc/profile.d/doris.sh
      
    • 啟動(dòng)BE

      start_be.sh
      
    • 退出容器,開(kāi)始下一次循環(huán)

      exit
      
  18. 循環(huán)結(jié)束,清除臨時(shí)解壓縮及部分下載文件

    rm -rf /opt/software/*.rpm
    rm -rf /opt/docker/doris/apache-doris-install.tar.gz
    
  19. 制作啟動(dòng)、停止腳本(前提Docker容器是啟動(dòng)的,若未啟動(dòng)則報(bào)錯(cuò))

    啟動(dòng)腳本需以start_doris_docker.sh命名,停止腳本以stop_doris_docker.sh命名

    兩個(gè)腳本均寫(xiě)在/opt/docker/doris/sbin/目錄下

    • 創(chuàng)建目錄

      mkdir -p /opt/docker/doris/sbin/
      
    • 啟動(dòng)腳本內(nèi)容

      • 啟動(dòng)FE

        docker exec -d doris-fe /bin/bash /opt/doris/fe/start_fe.sh --daemon
        
      • 循環(huán)啟動(dòng)BE

        docker exec -d doris-be-0${n} /bin/bash /opt/doris/be/start_be.sh --daemon
        
    • 停止腳本內(nèi)容

      • 循環(huán)停止BE

        docker exec -d doris-be-0${n} /bin/bash /opt/doris/be/stop_be.sh --daemon
        
      • 停止FE

        docker exec -d doris-fe /bin/bash /opt/doris/fe/stop_fe.sh --daemon
        
    • 配置環(huán)境變量

      vim /etc/profile.d/doris-docker.sh
      export DORIS_DOCKER_HOME=/opt/docker/doris/sbin
      export PATH=$PATH:$DORIS_DOCKER_HOME
      
    • 刷新環(huán)境變量

      source /etc/profile.d/doris-docker.sh
      

成果

極速體驗(yàn)版部署流程(此腳本部署將部署最新版本Apache Doris)

wget http://download.freeoneplus.com/doris_docker_fast_install.sh
sh ./doris_docker_fast_install.sh

完全部署版部署流程(此腳本部署將部署最新版本Apache Doris)

wget http://download.freeoneplus.com/doris_docker_whole_install.sh
sh ./doris_docker_whole_install.sh

假設(shè)需要指定版本的部署,請(qǐng)使用以下部署流程

# 極速體驗(yàn)版部署流程
wget http://download.freeoneplus.com/doris_docker_fast_install_${指定版本號(hào)}.sh
sh ./doris_docker_fast_install_${指定版本號(hào)}.sh
# 案例:極速體驗(yàn)版 Apache Doris 0.15版本
wget http://download.freeoneplus.com/doris_docker_fast_install_0.15.sh
sh ./doris_docker_fast_install_0.15.sh

# 完全部署版部署流程
wget http://download.freeoneplus.com/doris_docker_whole_install_${指定版本號(hào)}.sh
sh ./doris_docker_whole_install_${指定版本號(hào)}.sh
# 案例:完全部署版 Apache Doris 0.15版本
wget http://download.freeoneplus.com/doris_docker_whole_install_0.15.sh
sh ./doris_docker_whole_install_0.15.sh

當(dāng)前支持版本對(duì)照表

Apache Doris version 是否支持
1.0.0-beta 支持
0.15 3月12日起支持
0.14及以下 不支持

測(cè)試

使用官網(wǎng)的SSB測(cè)試集進(jìn)行測(cè)試

單節(jié)點(diǎn)規(guī)模:

CPU:8C

內(nèi)存:44G

硬盤(pán):400G

FE:1

BE:5

腳本名稱 查詢時(shí)間(ms)
q1.1 926ms
q1.2 461ms
q1.3 410ms
q2.1 13383ms
q2.2 12001ms
q2.3 11354ms
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容