doris02-編譯安裝


doris02-編譯安裝

1. 編譯

通過前一個, 我們應該已經編譯完成了, 完成后的文件在 output/ 目錄下

2. 機器要求

2.1) 軟件需求

2.2) 硬件需求

  • be總磁盤空間按3副本計算的話, 需要數據量*3, 然后預留40%作為后台compaction及中間數據存放
  • 同一節點可部署多個be, 但如果要求3副本數據, 則必須3個機器部署3個be
  • be的數量多少直接決定了查詢速度
  • fe 分為Folloer(選一個leader) 和 Observer
  • FE 節點數據至少為1(1 個 Follower)。當部署 1 個 Follower 和 1 個 Observer 時,可以實現讀高可用。當部署 3 個 Follower 時,可以實現讀寫高可用(HA)。
  • Follower 的數量必須為奇數,Observer 數量隨意。
  • 根據以往經驗,當集群可用性要求很高是(比如提供在線業務),可以部署 3 個 Follower 和 1-3 個 Observer。如果是離線業務,建議部署 1 個 Follower 和 1-3 個 Observer。
  • 如果 FE 和 BE 混部,需注意資源競爭問題,並保證元數據目錄和數據目錄分屬不同磁盤。

2.3) 關閉swap

root@localhost fe]# free -g
              total        used        free      shared  buff/cache   available
Mem:              5           1           3           0           0           4
Swap:             4           0           4

[root@localhost fe]# cat /proc/vmstat | egrep "dirty|writeback"
nr_dirty 3
nr_writeback 0
nr_writeback_temp 0
nr_dirty_threshold 329179
nr_dirty_background_threshold 109637

[root@localhost fe]# sysctl -w vm.swappiness=0
vm.swappiness = 0

[root@localhost fe]# echo "vm.swappiness = 0" >> /etc/sysc
sysconfig/   sysctl.conf  sysctl.d/    

[root@localhost fe]# echo "vm.swappiness = 0" >> /etc/sysctl.conf 

[root@localhost fe]# swapoff -a

[root@localhost fe]# free -g
              total        used        free      shared  buff/cache   available
Mem:              5           1           3           0           0           4
Swap:             0           0           0

[root@localhost fe]# sysctl -p
vm.swappiness = 0

[root@localhost fe]# free -g
              total        used        free      shared  buff/cache   available
Mem:              5           1           3           0           0           4
Swap:             0           0           0
[root@localhost fe]# 

2.4) 端口開放或關閉防火牆

實例名稱 端口名稱 默認端口 通訊方向 說明
BE be_port 9060 FE --> BE BE 上 thrift server 的端口,用於接收來自 FE 的請求
BE be_rpc_port 9070 BE <--> BE BE 之間 rpc 使用的端口
BE webserver_port 8040 BE <--> BE BE 上的 http server 的端口
BE heartbeat_service_port 9050 FE --> BE BE 上心跳服務端口(thrift),用於接收來自 FE 的心跳
BE brpc_port* 8060 FE<-->BE, BE <--> BE BE 上的 brpc 端口,用於 BE 之間通訊
FE http_port * 8030 FE <--> FE,用戶 FE 上的 http server 端口
FE rpc_port 9020 BE --> FE, FE <--> FE FE 上的 thrift server 端口
FE query_port 9030 用戶 FE 上的 mysql server 端口
FE edit_log_port 9010 FE <--> FE FE 上的 bdbje 之間通信用的端口
Broker broker_ipc_port 8000 FE --> Broker, BE --> Broker Broker 上的 thrift server,用於接收請求

或者關閉防火情

systemctl stop firewalld
# 關閉開機啟動
systemctl disable firewalld.service

2.5) ip綁定

如果機器有多個ip, 比如內網外網, 虛擬機docker等, 需要進行ip綁定, 以便在配置集群時可以正確識別

priority_networks=192.168.206.131/24;10.27.197.26/24

2.6) 修改主機名

hostnamectl set-hostname doris01
hostnamectl set-hostname doris02

3. 啟動fe

3.1) 配置環境變量

vim /etc/profile
export DORIS_HOME=/root/doris/fe

3.2) 創建pola-mate

mkdir -p fe/palo-meta

3.3) 修改fe.conf中的JAVA_OPTS

默認 java 最大堆內存為 2GB,建議生產環境調整至 8G 以上。

3.4) 修改ip綁定

priority_networks = 172.20.144.233/24

3.5) 啟動

sh bin/start_fe.sh --daemon

日志默認存放在 fe/log/ 目錄下

4. 啟動be

4.1) 環境變量

vim /etc/profile
export DORIS_HOME=/root/soft/output/be

4.2) 創建storage_root_path, 並配置be.conf

配置 storage_root_path:數據存放目錄,使用 ; 分隔(最后一個目錄后不要加 ;),其它可以采用默認值。

storage_root_path = /home/palo/data1;/home/palo/data2;/home/palo/data3

5. 添加be

5.1) 使用mysql連接

mysql -h host -P 9030 -uroot

其中 host 為 FE 所在節點 ip;port 為 fe/conf/fe.conf 中的 query_port;默認使用 root 賬戶,密碼為空。

5.2) 添加be

ALTER SYSTEM ADD BACKEND "host:9050";

或者多租戶添加be

ALTER SYSTEM ADD FREE BACKEND "host:port";

其中 host 為 BE 所在節點 ip;port 為 be/conf/be.conf 中的 heartbeat_service_port。

如果不添加 FREE 關鍵字,BE 默認進入自動生成的 cluster,添加了 FREE 關鍵字后新的 BE 不屬於任何 cluster,這樣創建新 cluster 的時候就可以從這些空閑的be中選取, 詳細見多租戶

5.3) 修改可打開文件數

ulimit -n 65535

上述方式在重啟系統后失效

或者修改配置文件: /etc/security/limits.conf, 添加

* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535

具體可見博客

否則啟動不成功, 日志報錯

E0116 01:01:01.520340 5608 storage_engine.cpp:365] File descriptor number is less than 60000. Please use (ulimit -n) to set a value equal or greater than 60000
W0116 01:01:01.520455 5608 storage_engine.cpp:95] engine open failed, res=-123
F0116 01:01:01.521009 5608 doris_main.cpp:161] fail to open StorageEngine, res=open engine failed

5.3) 修改ip綁定

priority_networks = 172.20.144.17/24

5.4) 啟動be

sh bin/start_be.sh --daemon

5.5) 查看fe 和 be

在mysql終端中

show proc ‘/frontends’;
show proc ‘/backends’;

也可通過前端界面訪問:

http://fe_hostname:8030/frontend
http://fe_hostname:fe_http_port/system?path=//frontends

查看be

http://fe_hostname:8030/backend
http://fe_hostname:fe_http_port/system?path=//backends

用戶名為root, 密碼為空

6. fe高可用部署

https://blog.csdn.net/weixin_43832846/article/details/89320171

http://doris.apache.org/documentation/cn/installing/install-deploy.html#id2

7. 確定集群部署成功

7.1) fe節點啟動成功

日志中會看到 transfer from UNKNOWN to MASTER/FOLLOWER/OBSERVER。最終會看到 thrift server started 日志,並且可以通過 mysql 客戶端連接到 FE,則表示 FE 啟動成功。

或者: http://fe_host:8030/api/bootstrap

結果返回

{"status":"OK","msg":"Success"}

如果在 fe.log 中查看不到啟動失敗的信息,也許在 fe.out 中可以看到。

7.2) be節點成功

BE 進程啟動后,如果之前有數據,則可能有數分鍾不等的數據索引加載時間

BE 尚未加入任何集群,則 BE 日志會定期滾動 waiting to receive first heartbeat from frontend 字樣。表示 BE 還未通過 FE 的心跳收到 Master 的地址,正在被動等待。這種錯誤日志,在 FE 中 ADD BACKEND 並發送心跳后,就會消失。如果在接到心跳后,又重復出現 master client, get client from cache failed.host: , port: 0, code: 7 字樣,說明 FE 成功連接了 BE,但 BE 無法主動連接 FE。可能需要檢查 BE 到 FE 的 rpc_port 的連通性。

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

同時,如果有數據查詢,應該能看到不停滾動的日志,並且有 execute time is xxx 日志,表示 BE 啟動成功,並且查詢正常。

或者連接http:

http://be_host:8030/api/health

結果返回

{"status": "OK","msg": "To Be Added"}

如果在 be.INFO 中查看不到啟動失敗的信息,也許在 be.out 中可以看到。

7.3) fe, be連通正常

首先確認正常添加了所有節點

show proc '/backends';
show proc '/frontends';
show proc '/brokers';

如果心跳正常,BE 的日志中會顯示 get heartbeat, host: xx.xx.xx.xx, port: 9020, cluster id: xxxxxx

如果心跳失敗,在 FE 的日志中會出現 backend[10001] got Exception: org.apache.thrift.transport.TTransportException類似的字樣,或者其他 thrift 通信異常日志,表示 FE 向 10001 這個 BE 的心跳失敗。這里需要檢查 FE 向 BE host 的心跳端口的連通性。

如果 BE 向 FE 的通信正常,則 BE 日志中會顯示 finish report task success. return code: 0的字樣。否則會出現 master client, get client from cache failed 的字樣。這種情況下,需要檢查 BE 向 FE 的 rpc_port 的連通性。

7.4) 各節點認證

出了fe master外, Follower FE,Observer FE,Backend 都需要通過 ALTER SYSTEM ADD注冊到集群中.

FEMater啟動的時候, 會在palo-meta/image/VERSION 下創建cluster_id.

其他FE第一次加入集群的時候, 會獲取cluster_id, 之后每次重啟都會校驗, 如果不一致, 則fe自動退出

BE在第一次加入集群的時候, 也會獲取cluster_id, 之后重啟如果不一致, 則BE拒絕響應FE的心跳.

心跳中同時會包含 Master FE 的 ip。當 FE 切主時,新的 Master FE 會攜帶自身的 ip 發送心跳給 BE,BE 會更新自身保存的 Master FE 的 ip。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM