這里我們介紹如何通過二進(jìn)制安裝包方式,手動的一步步安裝Apache Doris。
如果你需要從 源碼 編譯安裝部署,參考 docker 編譯。
下面我們以部署一臺 FE 節(jié)點(diǎn)和一臺 BE節(jié)點(diǎn)為例來演示部署,正常情況 Doris 集群下我們建議至少要部署一個(gè) FE 節(jié)點(diǎn)及三個(gè) BE 節(jié)點(diǎn)。
環(huán)境準(zhǔn)備
在安裝部署之前,我們要確保安裝 Doris 的環(huán)境滿足一下要求:
硬件要求
- 我們建議集群至少擁有兩臺物理機(jī)或者虛擬機(jī)。
- FE 節(jié)點(diǎn)CPU 建議 8 核及以上,內(nèi)存 16G 及以上。
- BE 節(jié)點(diǎn)CPU 建議 16 核及以上,內(nèi)存 64G 及以上。
- BE 節(jié)點(diǎn) CPU 要支持 avx2 指令集,你可以通過
cat /proc/cpuinfo | grep avx2命令查看,如果有返回結(jié)果表明 CPU 支持 avx2 指令集,如果沒有說明不支持,如果 CPU 不支持 avx2 請下載 X64 ( no avx2 ) 版本。 - 各節(jié)點(diǎn)間建議萬兆網(wǎng)絡(luò)連通。
軟件及操作系統(tǒng)要求
- 所有節(jié)點(diǎn)操作系統(tǒng)需要時(shí) CentOS 7.x 版本或者 Ubuntu 16.04及以上版本
- 在 FE 節(jié)點(diǎn)需安裝 JDK1.8 或者 JDK11(根據(jù)你下載的安裝包對應(yīng)的 JDK 或者你編譯的時(shí)候使用的 JDK 版本選擇)。
- 安裝 MySQL 客戶端,建議 5.5 以上版本。
- 所有節(jié)點(diǎn)之間要做時(shí)鐘同步
- 設(shè)置系統(tǒng)最大打開文件句柄數(shù)
- 關(guān)閉 Linux 交換分區(qū),避免交換內(nèi)存到虛擬內(nèi)存時(shí)對性能造成的影響
echo "0" > /proc/sys/vm/swappiness
echo "0" > /proc/sys/vm/overcommit_memory
sysctl -p
開始部署
部署 FE 節(jié)點(diǎn)
這里我們開始介紹如何安裝部署 FE。Doris FE 主要負(fù)責(zé)元數(shù)據(jù)管理、負(fù)責(zé)客戶端連接管理、SQL查詢規(guī)劃、調(diào)度等工作。
下載安裝包
下載 Doris 預(yù)編譯好的二進(jìn)制安裝包,并解壓到指定目錄
tar zxf apache-doris-x.x.x.tar.gz
注意:這里是你下載的二進(jìn)制安裝包名稱
配置 FE
我們進(jìn)入到 apache-doris-x.x.x/fe 目錄
cd apache-doris-x.x.x/fe
修改 FE 配置文件 conf/fe.conf ,這里我們主要修改兩個(gè)參數(shù):priority_networks 及 meta_dir ,如果你需要更多優(yōu)化配置,請參考 FE 參數(shù)配置說明,進(jìn)行調(diào)整。
- 添加 priority_networks 參數(shù)
priority_networks=172.23.16.0/24
注意:
這個(gè)參數(shù)我們在安裝的時(shí)候是必須要配置的,特別是當(dāng)一臺機(jī)器擁有多個(gè)IP地址的時(shí)候,我們要為 FE 指定唯一的IP地址。
- 添加元數(shù)據(jù)目錄
meta_dir=/path/your/doris-meta
注意:
這里你可以不配置,默認(rèn)是在你的Doris FE 安裝目錄下的 doris-meta,
如果你有 SSD 硬盤,建議這里目錄配置到 SSD 上,會獲取更好的性能
單獨(dú)配置元數(shù)據(jù)目錄,需要你提前創(chuàng)建好你指定的目錄
- JAVA_HOME 配置
如果你已經(jīng)在系統(tǒng)環(huán)境變量里設(shè)置了JAVA_HOME,這里可以不需要設(shè)置,或者你有多個(gè) JDK 版本,需要單獨(dú)指定,需要在這里配置,在 fe.conf 最前面加上下面的內(nèi)容。
JAVA_HOME=/path/your/jdk_path
啟動 FE
在 FE 安裝目錄下執(zhí)行下面的命令,來完成 FE 的啟動。
./bin/start_fe.sh --daemon
查看 FE 運(yùn)行狀態(tài)
FE 啟動成功之后,我們通過從 MySQL 客戶端連接 FE 查看 FE 的運(yùn)行狀態(tài),后續(xù)我們向集群中添加其他 FE 節(jié)點(diǎn)和 BE 節(jié)點(diǎn)也是通過這個(gè)操作完成。
mysql -uroot -P9030 -h127.0.0.1
注意:
- 這里使用的 root 用戶是 doris 內(nèi)置的默認(rèn)用戶,也是超級管理員用戶,具體的用戶權(quán)限查看 權(quán)限管理
- -P :這里是我們連接 Doris 的查詢端口,默認(rèn)端口是 9030,對應(yīng)的是fe.conf里的
query_port - -h : 這里是我們連接的 FE IP地址,如果你的客戶端和 FE 安裝在同一個(gè)節(jié)點(diǎn)可以使用127.0.0.1,這種也是 Doris 提供的如果你忘記 root 密碼,可以通過這種方式不需要密碼直接連接登錄,進(jìn)行對 root 密碼進(jìn)行重置
執(zhí)行下面的命令查看 FE 運(yùn)行狀態(tài)
show frontends\G;
然后你可以看到類似下面的結(jié)果:
mysql> show frontends\G;
*************************** 1\. row ***************************
Name: 172.21.32.5_9010_1660549353220
IP: 172.21.32.5
EditLogPort: 9010
HttpPort: 8030
QueryPort: 9030
RpcPort: 9020
Role: FOLLOWER
IsMaster: true
ClusterId: 1685821635
Join: true
Alive: true
ReplayedJournalId: 49292
LastHeartbeat: 2022-08-17 13:00:45
IsHelper: true
ErrMsg:
Version: 1.1.2-rc03-ca55ac2
CurrentConnected: Yes
1 row in set (0.03 sec)
- Role : 表示你的節(jié)點(diǎn)角色,如果你只有一個(gè) FE 的時(shí)候,當(dāng)前節(jié)點(diǎn)角色是 Follower,
- IsMaster:該值為true,說明這個(gè)節(jié)點(diǎn)是 FE 的主節(jié)點(diǎn)
- alive : 該值為 true 說明該節(jié)點(diǎn)運(yùn)行正常
注意:
- FE 分為 Leader,F(xiàn)ollower 和 Observer 三種角色
- 默認(rèn)一個(gè)集群,只能有一個(gè) Leader,可以有多個(gè) Follower 和 Observer。
- Leader 和 Follower 組成一個(gè) Paxos 選舉組,如果 Leader 宕機(jī),則剩下的 Follower 會自動選出新的 Leader,保證寫入高可用。
- Observer 同步 Leader 的數(shù)據(jù),但是不參加選舉。如果只部署一個(gè) FE,則 FE 默認(rèn)就是 Leader。
- 第一個(gè)啟動的 FE 自動成為 Leader,上面輸出可以看到IsMaster: true。在此基礎(chǔ)上,可以添加若干 Follower 和 Observer。
如果 MySQL 客戶端連接失敗,可以通過查看 log/fe.log 日志來查看發(fā)現(xiàn)問題。
如果第一次部署遇到任何意外的問題,都可以通過清空元數(shù)據(jù)目錄,然后重新啟動來重試。
驗(yàn)證 FE 啟動是否成功
可以通過一下三種方式驗(yàn)證 Doris FE 是否啟動成功:
- 通過查看
fe/log/fe.out文件,看到一下內(nèi)容表示啟動成功
2022-08-17 12:37:13,236 INFO (UNKNOWN 172.21.32.5_9010_1660549353220(-1)|1) [JettyWebServer.start():172] Jetty started on port(s) 8030 (http/1.1) with context path '/'
2022-08-17 12:37:13,249 INFO (UNKNOWN 172.21.32.5_9010_1660549353220(-1)|1) [StartupInfoLogger.logStarted():61] Started PaloFe in 2.396 seconds (JVM running for 7.33)
2022-08-17 12:37:13,260 INFO (UNKNOWN 172.21.32.5_9010_1660549353220(-1)|1) [NMysqlServer.start():70] Open mysql server success on 9030
2022-08-17 12:37:13,260 INFO (UNKNOWN 172.21.32.5_9010_1660549353220(-1)|1) [QeService.start():63] QE service start.
- 通過
jps命令,我們可以看一個(gè)PaloFe進(jìn)程表示啟動成功,否是失敗 - 我們也可以通過 Doris 提供的Web UI 來驗(yàn)證是否啟動成功,在瀏覽器里輸入 FE 的 IP 地址及端口(默認(rèn)8030,這個(gè)參數(shù)在
fe.conf里的http_port),可以看到登錄界面,使用默認(rèn)用戶 root 或者 admin 登錄,默認(rèn)密碼都是空。
FE 高可用部署
Doris FE 節(jié)點(diǎn)支持高可用(HA)部署,來保證實(shí)際使用中服務(wù)的高可用,具體可以參照 FE 彈性伸縮 ,通過添加 FE 節(jié)點(diǎn)的方式來完成。
雖然我們部署了多個(gè) FE 來完成高可用,但是對于前端使用怎么做到無感知及 FE 的負(fù)載均衡,這塊可以具體參考 Doris FE 負(fù)載均衡。
停止 FE 節(jié)點(diǎn)
Doris FE 的停止可以通過下面的命令完成
./bin/stop_fe.sh
部署 BE 節(jié)點(diǎn)
這里我們開始介紹如何安裝部署 BE。Doris BE 主要負(fù)責(zé) Doris 的數(shù)據(jù)存儲及 SQL 執(zhí)行計(jì)算工作,在一個(gè)服務(wù)器節(jié)點(diǎn)只能部署一個(gè) BE 節(jié)點(diǎn)。
這里我們示例是指安裝一個(gè) BE 節(jié)點(diǎn),安裝其他的 BE 節(jié)點(diǎn)操作是同樣的。
下載安裝包
下載 Doris 預(yù)編譯好的二進(jìn)制安裝包,并解壓到指定目錄
tar zxf apache-doris-x.x.x.tar.gz
注意:這里是你下載的二進(jìn)制安裝包名稱
配置 BE
我們進(jìn)入到 apache-doris-x.x.x/be 目錄
cd apache-doris-x.x.x/be
修改 FE 配置文件 conf/be.conf ,這里我們主要修改兩個(gè)參數(shù):priority_networks' 及 storage_root ,如果你需要更多優(yōu)化配置,請參考 BE 參數(shù)配置說明,進(jìn)行調(diào)整。
- 添加 priority_networks 參數(shù)
priority_networks=172.23.16.0/24
注意:
這個(gè)參數(shù)我們在安裝的時(shí)候是必須要配置的,特別是當(dāng)一臺機(jī)器擁有多個(gè)IP地址的時(shí)候,我們要為 BE 指定唯一的IP地址。
- 配置 BE 數(shù)據(jù)存儲目錄
storage_root_path=/path/your/doris-data-dir
注意:
這里你可以不配置,默認(rèn)是在你的Doris BE 安裝目錄下的 storage,
- 如果是多個(gè)磁盤,使用英文分號隔開
- 存儲目錄在啟動 BE 之前要?jiǎng)?chuàng)建好,否則啟動失敗。
- SSD 和 HDD 混合使用情況
- 如果是 SSD 磁盤要在目錄后面加上.SSD,HDD磁盤在目錄后面加.HDD
示例:storage_root_path=/home/disk1/doris.HDD;/home/disk2/doris.SSD;/home/disk2/doris
- /home/disk1/doris.HDD 表示 HDD磁盤 ;
- /home/disk2/doris.SSD 表示 SSD 磁盤;
- /home/disk2/doris 默認(rèn)為HDD
- 不論HDD磁盤目錄還是SSD磁盤目錄,都無需添加后綴,storage_root_path參數(shù)里指定medium即可。(
示例:storage_root_path=/home/disk1/doris,medium:hdd;/home/disk2/doris,medium:ssd
- /home/disk1/doris,medium:hdd 表示存儲介質(zhì)是HDD;
- /home/disk2/doris,medium:ssd 表示存儲介質(zhì)是SSD;
啟動 BE
在 BE 安裝目錄下執(zhí)行下面的命令,來完成 BE 的啟動。
./bin/start_be.sh --daemon
添加 BE 節(jié)點(diǎn)到集群
通過 MySQL 客戶端將 BE 節(jié)點(diǎn)添加到集群中
ALTER SYSTEM ADD BACKEND "be_host_ip:heartbeat_service_port";
- be_host_ip:這里是你 BE 的 IP 地址,和你在
be.conf里的priority_networks匹配 - heartbeat_service_port:這里是你 BE 的心跳上報(bào)端口,和你在
be.conf里的heartbeat_service_port匹配,默認(rèn)是9050
如果添加過程中出現(xiàn)錯(cuò)誤,你可以通過下面的命令,將該 BE 節(jié)點(diǎn)從集群中移除
ALTER SYSTEM DECOMMISSION BACKEND "be_host_ip:heartbeat_service_port";
也可以通過下面的命令進(jìn)行快速刪除(僅限新加加點(diǎn),生產(chǎn)慎用)
ALTER SYSTEM DROPP BACKEND "be_host_ip:heartbeat_service_port";
查看 BE 節(jié)點(diǎn)運(yùn)行狀態(tài)
你可以在 MySQL 命令行下執(zhí)行下面的命令查看 BE 的運(yùn)行狀態(tài)。
SHOW BACKENDS\G;
示例:
mysql> SHOW BACKENDS\G;
*************************** 1\. row ***************************
BackendId: 10003
Cluster: default_cluster
IP: 172.21.32.5
HeartbeatPort: 9050
BePort: 9060
HttpPort: 8040
BrpcPort: 8060
LastStartTime: 2022-08-16 15:31:37
LastHeartbeat: 2022-08-17 13:33:17
Alive: true
SystemDecommissioned: false
ClusterDecommissioned: false
TabletNum: 170
DataUsedCapacity: 985.787 KB
AvailCapacity: 782.729 GB
TotalCapacity: 984.180 GB
UsedPct: 20.47 %
MaxDiskUsedPct: 20.47 %
Tag: {"location" : "default"}
ErrMsg:
Version: 1.1.2-rc03-ca55ac2
Status: {"lastSuccessReportTabletsTime":"2022-08-17 13:33:05","lastStreamLoadTime":-1,"isQueryDisabled":false,"isLoadDisabled":false}
1 row in set (0.01 sec)
- Alive : true表示節(jié)點(diǎn)運(yùn)行正常
- SystemDecommissioned: false 表示節(jié)點(diǎn)沒有執(zhí)行下線,如果執(zhí)行下線操作,這里顯示的是true
如果 BE 節(jié)點(diǎn)沒有正常加入到集群,請查看 BE 的 log/be.WARNING 日志獲取更多信息排查問題。
如果出現(xiàn)下面的信息。
W0817 12:37:01.090358 11126 task_worker_pool.cpp:1598] report TASK failed. status: 0, master host: 127.0.0.1, port:9020
說明 priority_networks 這個(gè)配置有問題,請檢查后重新配置,然后執(zhí)行下面命令將 BE 節(jié)點(diǎn)從集群中刪除
ALTER SYSTEM DROPP BACKEND "be_host_ip:heartbeat_service_port";
然后配置好之后,清楚 BE 配置的存儲目錄下的所有數(shù)據(jù),重新啟動。在按照上面添加 BE節(jié)點(diǎn)到集群的部分將 BE 節(jié)點(diǎn)重新添加到集群中
停止 BE 節(jié)點(diǎn)
運(yùn)行以下命令可以停止 BE 節(jié)點(diǎn)
./bin/stop_be.sh
至此我們安裝部署完成,下一講我們開始講解怎么創(chuàng)建 Doris 數(shù)據(jù)表