集群制作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)
- 超快速的部署體驗(yàn)(網(wǎng)速OK的話十五分鐘內(nèi)部署完畢)
- 單節(jié)點(diǎn)部署
- 支持多環(huán)境運(yùn)行:虛擬機(jī)/云服務(wù)器/支持Docker的物理機(jī)(Mac/Win/Linux)
1.2. 缺點(diǎn)
- 數(shù)據(jù)存儲(chǔ)是在Docker容器中,如容器如損壞,會(huì)導(dǎo)致數(shù)據(jù)丟失
- 若非干凈純凈的系統(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)
- 完整的環(huán)境部署(MySQL-Client等組件)
- 自由的部署安排(有眾多可選安裝參數(shù))
- 無(wú)懼Docker容器損壞(最小降低損失,可極速恢復(fù))
- 單節(jié)點(diǎn)部署
- 支持多環(huán)境運(yùn)行:虛擬機(jī)/云服務(wù)器,暫未適配物理機(jī)(后續(xù)升級(jí)版本會(huì)支持)
2.2. 缺點(diǎn)
- 安裝過(guò)程時(shí)間較長(zhǎng)(視網(wǎng)速和機(jī)器性能而定)
- 安裝步驟多,代表可能故障率較高
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.sh和stop_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)境
-
Docker 要求 CentOS 系統(tǒng)的內(nèi)核版本高于
3.10,首先查看系統(tǒng)內(nèi)核版本是否滿足uname -r -
使用
root權(quán)限登錄系統(tǒng),確保 yum 包更新到最新sudo yum update -y -
假如安裝過(guò)舊版本,先卸載舊版本
sudo yum remove docker docker-common docker-selinux docker-engine -
安裝需要的軟件包, yum-util 提供yum-config-manager功能,另外兩個(gè)是devicemapper驅(qū)動(dòng)依賴的
sudo yum install -y yum-utils device-mapper-persistent-data lvm2 -
設(shè)置yum源(加速yum下載速度)
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo -
查看所有倉(cāng)庫(kù)中所有docker版本,并選擇特定版本安裝,一般可直接安裝最新版
yum list docker-ce --showduplicates | sort -r -
安裝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
-
-
啟動(dòng)并加入開(kāi)機(jī)啟動(dòng)
sudo systemctl start docker #啟動(dòng)docker sudo systemctl enable docker #加入開(kāi)機(jī)自啟動(dòng) -
查看Version,驗(yàn)證是否安裝成功
docker version若出現(xiàn)Client和Server兩部分內(nèi)容,則證明安裝成功
2. 容器創(chuàng)建及測(cè)試
在創(chuàng)建之前,請(qǐng)準(zhǔn)備好已完成編譯的FE/BE文件,此教程不再贅述編譯過(guò)程。
-
拉取Doris編譯鏡像做測(cè)試
# 拉取 docker pull apache/incubator-doris:build-env-ldb-toolchain-latest -
創(chuàng)建Doris-Docker的文件(包括元數(shù)據(jù)文件夾)
mkdir -p /opt/docker/doris -
將編譯好的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 -
啟動(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 -
進(jìn)入FE-Docker以及安裝組件
# 進(jìn)入fe-docker docker exec -ti doris-fe /bin/bash # 安裝net-tools用于查看IP yum install net-tools -y -
修改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確定 -
切換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 -
配置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 -
啟動(dòng)Doris-FE
start_fe.sh --daemon -
檢查FE是否啟動(dòng)成功
檢查是否啟動(dòng)成功,JPS命令下有沒(méi)有PaloFe進(jìn)程
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)成功。-
也可以通過(guò)如下連接查看是否啟動(dòng)成功:
http://fe_host:fe_http_port/api/bootstrap如果返回:
{"status":"OK","msg":"Success"}則表示啟動(dòng)成功,其余情況,則可能存在問(wèn)題。
外網(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 中可以看到。
-
宿主機(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 -
連接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。 -
啟動(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 -
進(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 -
修改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確定 -
配置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 -
啟動(dòng)Doris-BE
start_be.sh --daemon -
檢查BE是否啟動(dòng)成功
BE 進(jìn)程啟動(dòng)后,如果之前有數(shù)據(jù),則可能有數(shù)分鐘不等的數(shù)據(jù)索引加載時(shí)間。
如果是 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 的連通性。如果 BE 已經(jīng)被加入集群,日志中應(yīng)該每隔 5 秒滾動(dòng)來(lái)自 FE 的心跳日志:
get heartbeat, host: xx.xx.xx.xx, port: 9020, cluster id: xxxxxx,表示心跳正常。其次,日志中應(yīng)該每隔 10 秒滾動(dòng)
finish report task success. return code: 0的字樣,表示 BE 向 FE 的通信正常。同時(shí),如果有數(shù)據(jù)查詢,應(yīng)該能看到不停滾動(dòng)的日志,并且有
execute time is xxx日志,表示 BE 啟動(dòng)成功,并且查詢正常。-
也可以通過(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 中可以看到。
-
測(cè)試連通性
# 登錄FE-MySQL mysql -h FE_HOST -P9030 -uusername -ppassword # 執(zhí)行命令查看BE運(yùn)行情況。如一切正常,isAlive 列應(yīng)為 true。 SHOW PROC '/backends'; 若連通性測(cè)試成功,則循環(huán)完成其他BE節(jié)點(diǎn)的部署即可
3. 安裝ETCD環(huán)境(若多節(jié)點(diǎn)Dokcer需配置|單節(jié)點(diǎn)可忽略)
-
配置Hosts文件映射
vim /etc/hosts 你本機(jī)內(nèi)網(wǎng)IP地址 master -
安裝ETCD
# 安裝ETCD yum install -y etcd # 重啟ETCD systemctl restart etcd -
設(shè)置開(kāi)機(jī)啟動(dòng)
systemctl enable etcd -
修改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" # 保存退出 -
設(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"}' -
重啟ETCD
systemctl restart etcd -
測(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)可忽略)
-
Yum安裝Flannel
yum install -y flannel -
配置Flannel
# 備份原始配置文件 cp /etc/sysconfig/flanneld /etc/sysconfig/flanneld.bak # 編輯配置文件 vim /etc/sysconfig/flanneld # 修改以下配置項(xiàng) FLANNEL_ETCD_ENDPOINTS="http://master:2379" -
設(shè)置開(kāi)機(jī)自啟
systemctl enable flanneld.service -
啟動(dòng)Flannel
systemctl start flanneld.service -
重啟Docker
systemctl restart docker -
測(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ì)示意圖

6.2. 思路梳理
6.2.1 極速體驗(yàn)版(極速體驗(yàn)免除安裝)
默認(rèn)1FE 3BE安裝
Docker安裝(可參照步驟1)
-
拉取Docker鏡像群
docker pull freeoneplus/doris-fe:1.0 docker pull freeoneplus/doris-be:1.0 -
創(chuàng)建FE-Docker容器
docker run -it -p 8030:8030 -p 9030:9030 -d --name=doris-fe freeoneplus/doris-fe:1.0 -
進(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 -
循環(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 -
提示用戶進(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ú)懼丟失)
-
校驗(yàn)?zāi)_本執(zhí)行口令,防止誤操作
- 輸出一段文字說(shuō)明
- 等待接收
Doris這五個(gè)字母,成功則繼續(xù),未成功則終止
-
依次詢問(wèn)參數(shù)配置設(shè)置,接收參數(shù),可參考的有:
- 是否默認(rèn)配置安裝(Y/N)
- BE數(shù)量(默認(rèn)為3)
- root密碼(默認(rèn)為空)
- 操作員賬戶名稱(默認(rèn)無(wú))
- 操作員賬戶密碼(默認(rèn)無(wú))
- FE-Http-Port端口(默認(rèn)8030)
- FE-MySQL-Cli-Port端口(默認(rèn)9030)
-
創(chuàng)建宿主機(jī)資源目錄并進(jìn)入
mkdir -p /opt/docker/doris/ cd /opt/docker/doris/ -
拉取編譯好的文件包至上述目錄(當(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 -
解壓文件包
tar -zxvf /opt/docker/doris/apache-doris-install.tar.gz -
根據(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 -
監(jiān)測(cè)Docker是否安裝
docker version -
如果已安裝則跳過(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 -
監(jiān)測(cè)MySQL-Client是否已安裝
mysql --version -
如果已安裝則跳過(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 -
拉取Doris編譯鏡像為基礎(chǔ)環(huán)境鏡像
docker pull apache/incubator-doris:build-env-ldb-toolchain-latest -
制作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
-
-
用MySQL-Client連接Doris
mysql -h ${記錄下的FE-Docker的IPv4地址} -P ${默認(rèn)9030,如有改變則使用改變后的query-port} -uroot -
注冊(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è)信息,以此類推 -
若有用戶修改密碼和注冊(cè)了操作員賬戶,則執(zhí)行以下命令
# 修改密碼 SET PASSWORD FOR 'root' = PASSWORD('${填寫(xiě)的root密碼}'); # 也可以創(chuàng)建新用戶 CREATE USER '${填寫(xiě)的操作員賬戶}' IDENTIFIED BY '${填寫(xiě)的操作員密碼}'; -
退出MySQL-Client
exit -
制作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
-
-
循環(huán)結(jié)束,清除臨時(shí)解壓縮及部分下載文件
rm -rf /opt/software/*.rpm rm -rf /opt/docker/doris/apache-doris-install.tar.gz -
制作啟動(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 |