前言
這里介紹如何通過二進(jìn)制安裝包方式,手動的一步步安裝Apache Doris。
如果你需要從 源碼 編譯安裝部署,參考 docker 編譯。
下面我們以部署一臺 FE 節(jié)點(diǎn)和一臺 BE節(jié)點(diǎn)為例來演示部署,正常情況 Doris 集群下我們建議至少要部署一個 FE 節(jié)點(diǎn)及三個 BE 節(jié)點(diǎn)。
注意:
- 重要:doris支持單機(jī)部署和集群部署,集群部署時至少設(shè)置三副本
- 說明:doris單機(jī)部署時,將BE和FE均在一臺機(jī)器上設(shè)置即可
一、環(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)需要時 CentOS 7.x 版本或者 Ubuntu 16.04及以上版本
在 FE 節(jié)點(diǎn)需安裝 JDK1.8 或者 JDK11(根據(jù)你下載的安裝包對應(yīng)的 JDK 或者你編譯的時候使用的 JDK 版本選擇)。
安裝 MySQL 客戶端,建議 5.5 以上版本。
所有節(jié)點(diǎn)之間要做時鐘同步
設(shè)置系統(tǒng)最大打開文件句柄數(shù)
關(guān)閉 Linux 交換分區(qū),避免交換內(nèi)存到虛擬內(nèi)存時對性能造成的影響
echo "0" > /proc/sys/vm/swappiness
echo "0" > /proc/sys/vm/overcommit_memory
sysctl -p
二、開始部署
2.1 部署 FE 節(jié)點(diǎn)
這里開始介紹如何安裝部署 FE。Doris FE 主要負(fù)責(zé)元數(shù)據(jù)管理、負(fù)責(zé)客戶端連接管理、SQL查詢規(guī)劃、調(diào)度等工作。
- 修改可打開文件數(shù)
ulimit -n 65535
上述方式在重啟系統(tǒng)后失效
永久生效:修改配置文件: /etc/security/limits.conf 添加
* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535
這種方法需要重啟機(jī)器才能生效(所有BE節(jié)點(diǎn)都需要進(jìn)行配置),否則啟動不成功, 日志報(bào)錯。
2.1.1 下載安裝包
直接下載編譯好的二進(jìn)制文件,進(jìn)行解壓。
https://doris.apache.org/zh-CN/download
[root@dev workspace]# wget https://mirrors.tuna.tsinghua.edu.cn/apache/doris/1.1/1.1.4-rc01/apache-doris-be-1.1.4-bin-x86_64-noavx2.tar.gz
root@dev workspace]# tar -zxvf apache-doris-be-1.1.4-bin-x86_64-noavx2.tar.gz


2.1.2 配置 FE
- 1、配置環(huán)境變量
vim /etc/profile
#DORIS_HOME
export DORIS_HOME=/usr/local/apache-doris-be-1.1.4
export PATH=:$DORIS_HOME/bin:$PATH
重新加載環(huán)境變量:source /etc/profile
進(jìn)入到 apache-doris-x.x.x/fe 目錄
cd /usr/local/apache-doris-be-1.1.4/fe
修改 FE 配置文件 conf/fe.conf ,這里我們主要修改兩個參數(shù):priority_networks 及 meta_dir ,如果你需要更多優(yōu)化配置,請參考 FE 參數(shù)配置說明,進(jìn)行調(diào)整。
- 2、添加 priority_networks 參數(shù)
修改ip綁定(可選)如果機(jī)器有多個ip, 比如內(nèi)網(wǎng)外網(wǎng), 虛擬機(jī)docker等, 需要進(jìn)行ip綁定, 以便在配置集群時可以正確識別
priority_networks=192.168.10.0/24
注意:
這個參數(shù)我們在安裝的時候是必須要配置的,特別是當(dāng)一臺機(jī)器擁有多個IP地址的時候,我們要為 FE 指定唯一的IP地址。
- 3、添加元數(shù)據(jù)目錄自定義目錄
- 創(chuàng)建doris-mate
其中注意:meta_dir:元數(shù)據(jù)存放位置。默認(rèn)在 fe/doris-meta/ 下。需手動創(chuàng)建該目錄
- 創(chuàng)建doris-mate
meta_dir=/usr/local/apache-doris-be-1.1.4/fe/doris-meta
注意:
這里你可以不配置,默認(rèn)是在你的Doris FE 安裝目錄下的 doris-meta,
如果你有 SSD 硬盤,建議這里目錄配置到 SSD 上,會獲取更好的性能
單獨(dú)配置元數(shù)據(jù)目錄,需要你提前創(chuàng)建好你指定的目錄
4、修改fe.conf中的JAVA_OPTS
fe.conf 中 JAVA_OPTS 默認(rèn) java 最大堆內(nèi)存為 4GB,建議生產(chǎn)環(huán)境調(diào)整至 8G 以上。5、將安裝目錄分發(fā)到另外兩臺節(jié)點(diǎn)
scp -r /usr/local/apache-doris-be-1.1.4/ node2:/usr/local/
scp -r /usr/local/apache-doris-be-1.1.4/ node3:/usr/local/
2.1.3 啟動FE
三臺機(jī)器分別啟動
sh /usr/local/apache-doris-be-1.1.4/fe/bin/start_fe.sh --daemon
或
./bin/start_fe.sh --daemon
日志默認(rèn)存放在 fe/log/ 目錄下
- 1、查看 FE 運(yùn)行狀態(tài)
FE 啟動成功之后,我們通過從 MySQL 客戶端連接 FE 查看 FE 的運(yùn)行狀態(tài),后續(xù)我們向集群中添加其他 FE 節(jié)點(diǎn)和 BE 節(jié)點(diǎn)也是通過這個操作完成。
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 安裝在同一個節(jié)點(diǎn)可以使用127.0.0.1,這種也是 Doris 提供的如果你忘記 root 密碼,可以通過這種方式不需要密碼直接連接登錄,進(jìn)行對 root 密碼進(jìn)行重置
- 2、執(zhí)行下面的命令查看 FE 運(yùn)行狀態(tài)
show frontends\G;
然后你可以看到類似下面的結(jié)果:
mysql> show frontends\G;
*************************** 1. row ***************************
Name: 192.168.10.10_9010_1660549353220
IP: 192.168.10.10
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)角色,如果你只有一個 FE 的時候,當(dāng)前節(jié)點(diǎn)角色是 Follower,
IsMaster:該值為true,說明這個節(jié)點(diǎn)是 FE 的主節(jié)點(diǎn)
alive : 該值為 true 說明該節(jié)點(diǎn)運(yùn)行正常
注意:
- FE 分為 Leader,F(xiàn)ollower 和 Observer 三種角色
- 默認(rèn)一個集群,只能有一個 Leader,可以有多個 Follower 和 Observer。
- Leader 和 Follower 組成一個 Paxos 選舉組,如果 Leader 宕機(jī),則剩下的 Follower 會自動選出新的 Leader,保證寫入高可用。
- Observer 同步 Leader 的數(shù)據(jù),但是不參加選舉。如果只部署一個 FE,則 FE 默認(rèn)就是 Leader。
- 第一個啟動的 FE 自動成為 Leader,上面輸出可以看到IsMaster: true。在此基礎(chǔ)上,可以添加若干 Follower 和 Observer。
如果 MySQL 客戶端連接失敗,可以通過查看 log/fe.log 日志來查看發(fā)現(xiàn)問題。
如果第一次部署遇到任何意外的問題,都可以通過清空元數(shù)據(jù)目錄,然后重新啟動來重試。
驗(yàn)證 FE 啟動是否成功
可以通過一下三種方式驗(yàn)證 Doris FE 是否啟動成功:
- 1、通過查看 fe/log/fe.out 文件,看到一下內(nèi)容表示啟動成功
- 2、通過 jps 命令,我們可以看一個 PaloFe 進(jìn)程表示啟動成功,否是失敗
- 我們也可以通過 Doris 提供的Web UI 來驗(yàn)證是否啟動成功,在瀏覽器里輸入 FE 的 IP 地址及端口(默認(rèn)8030,這個參數(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)的方式來完成。
雖然我們部署了多個 FE 來完成高可用,但是對于前端使用怎么做到無感知及 FE 的負(fù)載均衡,這塊可以具體參考 Doris FE 負(fù)載均衡。
停止 FE 節(jié)點(diǎn)
Doris FE 的停止可以通過下面的命令完成
./bin/stop_fe.sh
2.2 配置BE
這里開始介紹如何安裝部署 BE。Doris BE 主要負(fù)責(zé) Doris 的數(shù)據(jù)存儲及 SQL 執(zhí)行計(jì)算工作,在一個服務(wù)器節(jié)點(diǎn)只能部署一個 BE 節(jié)點(diǎn)。
下載二進(jìn)制安裝包和FE一樣
2.2.1 配置 BE
進(jìn)入到 apache-doris-be-1.1.4/be 目錄
cd /usr/local/apache-doris-be-1.1.4/be
修改 FE 配置文件 conf/be.conf ,這里我們主要修改兩個參數(shù):priority_networks' 及 storage_root ,如果你需要更多優(yōu)化配置,請參考 BE 參數(shù)配置說明,進(jìn)行調(diào)整。
- 1、添加 priority_networks 參數(shù)
priority_networks=192.168.10.0/24
注意:
這個參數(shù)我們在安裝的時候是必須要配置的,特別是當(dāng)一臺機(jī)器擁有多個IP地址的時候,我們要為 BE 指定唯一的IP地址。
- 2、配置 BE 數(shù)據(jù)存儲目錄
storage_root_path=/usr/local/apache-doris-be-1.1.4/be/doris-data-dir
注意:
- 這里你可以不配置,默認(rèn)是在你的Doris BE 安裝目錄下的 storage,
- 如果是多個磁盤,使用英文分號隔開
- 存儲目錄在啟動 BE 之前要創(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;
2.2.2 啟動 BE
在 BE 安裝目錄下執(zhí)行下面的命令,來完成 BE 的啟動。
sh /usr/local/apache-doris-be-1.1.4/be/bin/start_be.sh --daemon
./bin/start_be.sh --daemon
2.2.3 添加 BE 節(jié)點(diǎn)到集群
- 1、通過 MySQL 客戶端將 BE 節(jié)點(diǎn)添加到集群中
ALTER SYSTEM ADD BACKEND "be_host_ip:heartbeat_service_port";
1、be_host_ip:這里是你 BE 的 IP 地址,和你在 be.conf 里的 priority_networks 匹配
2、heartbeat_service_port:這里是你 BE 的心跳上報(bào)端口,和你在 be.conf 里的 heartbeat_service_port 匹配,默認(rèn)是 9050
2、如果添加過程中出現(xiàn)錯誤,你可以通過下面的命令,將該 BE 節(jié)點(diǎn)從集群中移除
ALTER SYSTEM DECOMMISSION BACKEND "be_host_ip:heartbeat_service_port";
- 3、也可以通過下面的命令進(jìn)行快速刪除(僅限新加加點(diǎn),生產(chǎn)慎用)
ALTER SYSTEM DROPP BACKEND "be_host_ip:heartbeat_service_port";
- 4、查看 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: 192.168.10.10
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 這個配置有問題,請檢查后重新配置,然后執(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)重新添加到集群中
2.2.4 停止 BE 節(jié)點(diǎn)
運(yùn)行以下命令可以停止 BE 節(jié)點(diǎn)
./bin/stop_be.sh
三、FS_Broker 部署(可選)
Broker 以插件的形式,獨(dú)立于 Doris 部署。如果需要從第三方存儲系統(tǒng)導(dǎo)入數(shù)據(jù),需要部署相應(yīng)的 Broker,默認(rèn)提供了讀取 HDFS 、百度云 BOS 及 Amazon S3 的 fs_broker。fs_broker 是無狀態(tài)的,建議每一個 FE 和 BE 節(jié)點(diǎn)都部署一個 Broker。
- 拷貝二進(jìn)制文件源碼 fs_broker 的 output 目錄下的相應(yīng) Broker 目錄到需要部署的所有節(jié)點(diǎn)上。建議和 BE 或者 FE 目錄保持同級。
- 修改相應(yīng) Broker 配置
- 在相應(yīng) broker/conf/ 目錄下對應(yīng)的配置文件中,可以修改相應(yīng)配置。
- 啟動 Broker
sh bin/start_broker.sh --daemon
- 添加 Broker
要讓 Doris 的 FE 和 BE 知道 Broker 在哪些節(jié)點(diǎn)上,通過 sql 命令添加 Broker 節(jié)點(diǎn)列表。
使用 mysql-client 連接啟動的 FE,執(zhí)行以下命令:
ALTER SYSTEM ADD BROKER broker_name "host1:port1","host2:port2",...;
其中 host 為 Broker 所在節(jié)點(diǎn) ip;port 為 Broker 配置文件中的 broker_ipc_port。
- 查看 Broker 狀態(tài)
使用 mysql-client 連接任一已啟動的 FE,執(zhí)行以下命令查看 Broker 狀態(tài):
SHOW PROC "/brokers";
在命令行中使用MySQL客戶端加入并查看:
[root@bigdata1 apache_hdfs_broker]# mysql -hbigdata1 -P9030 -uroot -p123456
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.1.0 Doris version 0.15.0-rc04-Unknown
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> ALTER SYSTEM ADD BROKER broker_name "bigdata1:8000","bigdata2:8000","bigdata3:8000";
Query OK, 0 rows affected (0.03 sec)
mysql> SHOW PROC "/brokers";
+-------------+----------------+----------+------+-------+---------------------+---------------------+--------+
| Name | IP | HostName | Port | Alive | LastStartTime | LastUpdateTime | ErrMsg |
+-------------+----------------+----------+------+-------+---------------------+---------------------+--------+
| broker_name | 192.168.12.131 | bigdata1 | 8000 | true | 2022-01-28 17:35:20 | 2022-01-28 17:35:20 | |
| broker_name | 192.168.12.132 | bigdata2 | 8000 | true | 2022-01-28 17:35:20 | 2022-01-28 17:35:20 | |
| broker_name | 192.168.12.133 | bigdata3 | 8000 | true | 2022-01-28 17:35:20 | 2022-01-28 17:35:20 | |
+-------------+----------------+----------+------+-------+---------------------+---------------------+--------+
3 rows in set (0.00 sec)
注意
在生產(chǎn)環(huán)境中,所有實(shí)例都應(yīng)使用守護(hù)進(jìn)程啟動,以保證進(jìn)程退出后,會被自動拉起,如 Supervisor (opens new window)。如需使用守護(hù)進(jìn)程啟動,在 0.9.0 及之前版本中,需要修改各個 start_xx.sh 腳本,去掉最后的 & 符號。從 0.10.0 版本開始,直接調(diào)用 sh start_xx.sh 啟動即可。
參考:
https://doris.apache.org/zh-CN/docs/summary/basic-summary
https://blog.csdn.net/hf200012/article/details/126618042
https://www.cnblogs.com/syw20170419/p/16704763.html
https://blog.csdn.net/yang_shibiao/article/details/122734347