第1.3章:StarRocks部署--单机部署
嚴格來說,StarRocks并沒有所謂的“Standalone運行模式”,生產環境下更是不建議進行單實例部署。這里將單機部署整理出來,主要是考慮當用戶測試環境受限于機器數量或僅希望驗證功能,那么也可以在一臺機器上簡易部署把StarRocks跑起來。
以服務器“starrocks(192.168.110.98)”為例,在進行完“第1.2章:StarRocks部署--部署環境準備”中的準備工作后,我們開始進行單節點的部署。
為方便演示,我們使用root用戶通過XShell工具訪問服務器,單節點架構設計如下:
| 機器節點 | 192.168.116.98 (starrocks) |
| 部署服務 | 1 FE(Leader) 1 BE 1 Broker mysql-client |
部署目錄及數據目錄設計如下,后續的部署操作嚴格按照部署設計進行:
| FE | 部署目錄:/opt/module/starrocks/fe 日志目錄:/opt/module/starrocks/fe/log(默認) 元數據目錄:/opt/meta |
| BE | 部署目錄:/opt/module/starrocks/be 日志目錄:/opt/module/starrocks/be/log(默認) 數據目錄:/opt/storage |
| Broker | 部署目錄:/opt/module/starrocks/apache_hdfs_broker |
1?獲取二進制產品包
StarRocks的二進制部署包可在官網下載獲取:
StarRocks - 新一代極速全場景MPP數據庫https://www.starrocks.com/zh-CN/download/community
下面我們以StarRocks-1.19.2.tar.gz為例,將下載好的部署包上傳至/opt/software目錄下:
[root@starrocks ~]# mkdir /opt/software
[root@starrocks ~]# cd /opt/software/
[root@starrocks software]# ll
total 988752
-rw-r--r-- 1 root root 1012479814 Nov 22 15:46 StarRocks-1.19.2.tar.gz
2?解壓產品包
[root@starrocks software]# tar xvf StarRocks-1.19.2.tar.gz
[root@starrocks software]# ll
total 988752
drwxrwxr-x 6 1007 1007??????? 100 Nov 20 20:29 StarRocks-1.19.2
-rw-r--r-- 1 root root 1012479814 Nov 22 15:46 StarRocks-1.19.2.tar.gz
StarRocks二進制包解壓后目錄結構及簡要說明見附錄一:StarRocks部署包目錄樹。
3?分發部署文件
[root@starrocks software]# mv /opt/software/StarRocks-1.19.2 /opt/software/starrocks[重命名]
[root@starrocks software]# mv /opt/software/starrocks /opt/module/
[root@starrocks software]# cd /opt/module/starrocks/
[root@starrocks starrocks]# ll
total 0
drwxr-xr-x. 5 1021 1021 40 Nov 22 14:40 apache_hdfs_broker
drwxr-xr-x. 6 1021 1021 51 Nov 22 14:40 be
drwxr-xr-x. 8 1021 1021 83 Nov 22 14:52 fe
drwxr-xr-x. 4 1021 1021 32 Nov 22 14:40 udf
4?部署FE實例
4.1?修改FE配置文件
StarRocks各服務配置文件的默認配置已經足以啟動集群,不建議初嘗用戶修改較多配置。FE的配置文件在測試環境中我們通常只需要關注以下三點:
a、注意默認端口,避免端口沖突,正常情況下不需要修改;
b、綁定IP,避免多網卡情況下服務無法自動匹配到正確的IP。特別注意,綁定ip時,如果不清楚CIDR表示法,可以直接填寫完整的ip(不支持別名),例如配置為priority_networks = 192.168.110.98,這樣的寫法等同于priority_networks = 192.168.110.98/32;
c、設置元數據目錄,默認目錄為fe/meta,我們建議新建目錄并修改配置文件。
根據部署設計,創建元數據存儲目錄:
[root@starrocks starrocks]# mkdir /opt/meta
針對b和c修改配置文件(帶#的為注釋,紅色字體為新增配置):
[root@starrocks starrocks]# vi /opt/module/starrocks/fe/conf/fe.conf
# store metadata, create it if it is not exist.
# Default value is ${STARROCKS_HOME}/meta
# meta_dir = ${STARROCKS_HOME}/meta
meta_dir = /opt/meta
…………
# Choose one if there are more than one ip except loopback address.
# Note that there should at most one ip match this list.
# If no ip match this rule, will choose one randomly.
# use CIDR format, e.g. 10.10.10.0/24
# Default value is empty.
# priority_networks = 10.10.10.0/24;192.168.0.0/16
priority_networks = 192.168.110.98
修改完成后保存配置。
4.2?啟動FE
[root@starrocks starrocks]# cd /opt/module/starrocks/fe/bin/
[root@starrocks bin]# ll
total 16
-rwxrwxr-x. 1 1021 1021 1347 Nov 22 14:40 common.sh
-rwxrwxr-x. 1 1021 1021 1411 Nov 22 14:40 show_fe_version.sh
-rwxrwxr-x. 1 1021 1021 3122 Nov 22 14:40 start_fe.sh
-rwxrwxr-x. 1 1021 1021 1749 Nov 22 14:40 stop_fe.sh
[root@starrocks bin]# ./start_fe.sh --daemon
[補充:關閉FE的腳本是stop_fe.sh,命令:./stop_fe.sh]
FE使用Java語言編寫,使用jps命令查看java進程,若發現有StarRocksFe進程,即為啟動成功:
[root@starrocks bin]# jps
5178 Jps
5164 StarRocksFe
如果進程狀態異常可在FE日志目錄中查看日志追蹤原因,FE的主要日志在fe.log中,所有查詢的審計日志在fe.audit.log中。由于是初次啟動,如果在操作過程中遇到比較耗時的問題,可以清空FE的元數據目錄,再從頭開始操作。
4.3?訪問FE
使用mysql-client訪問FE,FE查詢端口默認為9030,自帶用戶root,默認密碼為空:
[root@starrocks bin]# mysql -h192.168.110.98 -P9030 -uroot
Welcome to the MySQL monitor.? Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.1.0
………………
mysql>
4.4?確認FE狀態
若mysql-client能夠正常訪問FE,已說明FE狀態正常,查詢命令:
mysql> show frontends\G
*************************** 1. row ***************************
???????????? Name: 192.168.110.98_9010_1631099997319
?????????????? IP: 192.168.110.98
????? EditLogPort: 9010
???????? HttpPort: 8030
??????? QueryPort: 9030
????????? RpcPort: 9020
???????????? Role: FOLLOWER
???????? IsMaster: true
??????? ClusterId: 417341735
???????????? Join: true
??????????? Alive: true
ReplayedJournalId: 74
??? LastHeartbeat: 2021-11-25 19:24:04
???????? IsHelper: true
?????????? ErrMsg:
1 row in set (0.09 sec)
Alive為true即說明FE節點狀態正常。
4.5?添加實例進入集群
我們先將添加BE與Broker實例添加入集群。這里需要說明一下,“啟動服務”和“將服務添加入集群”并沒有嚴格的先后順序,但若先啟動服務,在實例未加入集群前,BE的日志中會打印一些提示未加入集群的WARNING信息,例如:Fail to get master client from cache。所以我們可以在FE全部部署完成后,使用mysql-client將集群中其他實例通過SQL添加入集群,然后再逐個部署啟動。
添加BE進入集群,端口使用BE的heartbeat_service_port(默認為9050):
mysql> alter system add backend '192.168.110.98:9050';
Query OK, 0 rows affected (0.10 sec)
添加Broker進入集群時需要給Broker設定名稱,比如命名為hdfs_broker,端口使用Broker的broker_ipc_port(默認為8000):
mysql> alter system add broker hdfs_broker '192.168.110.98:8000';
Query OK, 0 rows affected (0.03 sec)
若添加實例進入集群時信息輸入有誤或出現其他異常,我們可以將其刪除后重新添加,刪除示例:
從集群中刪除BE(當前僅有一個BE實例,故刪除時可以直接使用dropp命令刪除。刪除BE為高風險操作,所以這里的刪除命令設計為了dropp):
mysql> alter system dropp backend '192.168.110.98:9050';
Query OK, 0 rows affected (0.09 sec)
從集群中刪除Broker:
mysql> alter system drop broker hdfs_broker '192.168.110.98:8000';
Query OK, 0 rows affected (0.04 sec)
暫時退出StarRocks:
mysql> exit
Bye
5?部署BE實例
5.1?修改BE配置文件
BE的配置文件,在測試環境通常也是關注如下三點:
a、注意默認端口,避免端口沖突,正常情況下不需要修改;
b、綁定IP,避免多網卡情況下無法自動找到正確的IP(同樣,不清楚CIDR就可以直接填寫完整的IP);
c、設置數據存儲目錄,默認目錄為be/storage,我們建議新建目錄并修改配置文件。
新建BE數據存儲目錄:
[root@starrocks bin]# mkdir /opt/storage
針對b和c修改配置文件(帶#的為注釋,紅色字體為新增配置):
[root@starrocks bin]# vi /opt/module/starrocks/be/conf/be.conf
# Choose one if there are more than one ip except loopback address.
# Note that there should at most one ip match this list.
# If no ip match this rule, will choose one randomly.
# use CIDR format, e.g. 10.10.10.0/24
# Default value is empty.
# priority_networks = 10.10.10.0/24;192.168.0.0/16
priority_networks = 192.168.110.98
…………
# you also can specify the properties by setting '<property>:<value>', seperate by ','
# property 'medium' has a higher priority than the extension of path
#
# Default value is ${STARROCKS_HOME}/storage, you should create it by hand.
# storage_root_path = ${STARROCKS_HOME}/storage
storage_root_path = /opt/storage
修改完成后保存配置。
5.2?啟動BE
[root@starrocks bin]# cd /opt/module/starrocks/be/bin/
[root@starrocks bin]# ll
total 16
-rwxrwxr-x. 1 1021 1021 1347 Nov 22 14:40 common.sh
-rwxrwxr-x. 1 1021 1021? 644 Nov 22 14:40 show_be_version.sh
-rwxrwxr-x. 1 1021 1021 3377 Nov 22 14:40 start_be.sh
-rwxrwxr-x. 1 1021 1021 1601 Nov 22 14:40 stop_be.sh
[root@starrocks bin]# ./start_be.sh --daemon
[補充:關閉BE腳本為stop_be.sh,命令:./stop_be.sh]
BE使用C++編寫,使用ps命令查看進程,若發現有starrocks_be進程,即為啟動成功:
[root@starrocks bin]# ps -ef | grep starrocks_be
root?????? 6670????? 1? 1 19:46 pts/0??? 00:00:00 /opt/module/starrocks/be/lib/starrocks_be
如果進程狀態異常可在BE日志目錄中查看日志追蹤原因,BE的主要日志在be.INFO中,其他的日志在be.out中。
5.3?查看BE狀態
仍使用mysql-client訪問集群:
[root@starrocks bin]# mysql -h192.168.110.98 -P9030 -uroot
Welcome to the MySQL monitor.? Commands end with ; or \g.
………………
mysql>
查詢BE狀態:
mysql> show backends\G
*************************** 1. row ***************************
??????????? BackendId: 10003
????????????? Cluster: default_cluster
?????????????????? IP: 192.168.110.98
??????? HeartbeatPort: 9050
?????????????? BePort: 9060
???????????? HttpPort: 8040
???????????? BrpcPort: 8060
??????? LastStartTime: 2021-11-25 19:46:17
??????? LastHeartbeat: 2021-11-25 19:51:32
??????????????? Alive: true
?SystemDecommissioned: false
ClusterDecommissioned: false
??????????? TabletNum: 10
???? DataUsedCapacity: .000
??????? AvailCapacity: 28.404 GB
??????? TotalCapacity: 37.017 GB
????????????? UsedPct: 23.27 %
?????? MaxDiskUsedPct: 23.27 %
?????????????? ErrMsg:
???? ?????????Version: 1.19.2-b04a782
?????????????? Status: {"lastSuccessReportTabletsTime":"2021-11-25 19:51:17"}
1 row in set (0.10 sec)
一般Alive為true即為狀態正常,若為false,可根據日志排查問題。同樣的,因為當前BE為初次啟動,如果出現無法快速定位的問題,可以清空storage數據目錄,重新啟動服務。
退出StarRocks:
mysql> exit
Bye
6?部署Broker
在部署完FE與BE后,StarRocks主要服務已經部署完成。Broker是StarRocks與外部HDFS/對象存儲等外部數據對接的中轉服務,若不需要可以不部署。Broker本身是無狀態的進程,可以隨意啟停,不影響集群。
6.1?修改Broker配置文件
Broker的配置文件通常不需要修改。與FE實例和BE實例不同,Broker當前沒有也不需要priority_networks這個選項。Broker的服務默認綁定在0.0.0.0上,我們只需在前面4.5節 ADD BROKER時,輸入正確可訪問的BROKER IP即可。
6.2?啟動Broker
[root@starrocks bin]# cd /opt/module/starrocks/apache_hdfs_broker/bin/
[root@starrocks bin]# ll
total 8
-rwxrwxr-x. 1 1021 1021 2616 Sep? 7 14:40 start_broker.sh
-rwxrwxr-x. 1 1021 1021 1602 Sep? 7 14:40 stop_broker.sh
[root@starrocks bin]# ./start_broker.sh --daemon
[補充:關閉Broker腳本為stop_broker.sh,命令:./stop_broker.sh]
查看java進程,若發現有BrokerBootstrap即為啟動成功:
[root@starrocks bin]# jps | grep BrokerBootstrap
7594 BrokerBootstrap
Broker日志在apache_hdfs_broker.log中,如果進程狀態異常可查看日志追蹤原因。
6.3?查看Broker狀態
使用mysql-client訪問集群:
[root@starrocks bin]# mysql -h192.168.110.98 -P9030 -uroot
Welcome to the MySQL monitor.? Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.1.0 StarRocks version 1.18.2
……………………
mysql>
查看Broker狀態:
mysql> show broker\G
*************************** 1. row ***************************
????????? Name: hdfs_broker
??????????? IP: 192.168.110.98
????????? Port: 8000
???????? Alive: true
?LastStartTime: 2021-11-25 20:19:56
LastUpdateTime: 2021-11-25 20:21:31
??????? ErrMsg:
1 row in set (0.01 sec)
Alive為true即為狀態正常,如果狀態異常可以根據日志定位問題。
7?簡單使用示例
7.1?修改root用戶密碼
例如修改root密碼也為root:
mysql> set password=password('root');
Query OK, 0 rows affected (0.02 sec)
7.2?建庫建表
StarRocks的副本數是不能大于BE節點數的,由于當前僅有一個BE節點,我們建表時務必注意指定數據為單副本,示例如下:
新建一個starrocks數據庫:
mysql> create database starrocks;
Query OK, 0 rows affected (0.01 sec)
mysql> use starrocks;
Database changed
新建一個customer表,無分區,按c_custkey分桶,指定數據存儲為1副本:
mysql>CREATE TABLE customer (
??? c_custkey INT,
??? c_name VARCHAR(26),
c_city VARCHAR(11)
)
DUPLICATE KEY(c_custkey)
DISTRIBUTED BY HASH (c_custkey) BUCKETS 10
PROPERTIES (
? "replication_num"="1");
Query OK, 0 rows affected (0.05 sec)
7.3?插入測試數據
mysql> insert into customer values(1,"Jack","Beijing"),(2,"Loong","Xian"),(3,"Bob","London");
Query OK, 3 rows affected (0.07 sec)
{'label':'insert_7ddb8f57-10a2-11ec-bcd0-525400d116d1', 'status':'VISIBLE', 'txnId':'3'}
7.4?簡單查詢
mysql> select count(1) from customer;
+----------------+
| ?count(1)? ? ? |
+----------------+
|??????? 3? ? ? ? ? ?|
+----------------+
8?使用圖形化工具
StarRocks兼容MySQL協議,在使用圖形化工具連接時,我們可將其視為MySQL直接連接。以SQLyog為例,輸入服務器IP、用戶名、密碼和端口(查詢端口默認為9030),即可連接:
9 Docker部署
若單臺服務器內存、磁盤等資源充足,也可以使用Docker在單服務器節點上對FE/BE進行多實例的部署,但考慮到資源競爭問題,依舊不推薦在生產環境中使用。
除在Docker容器中跑StarRocks外,我們可以考慮使用Docker將完成第1.2章部署準備工作后的某個容器保存為鏡像,在后續集群擴容時快速拉取使用。
容器化部署及使用這里先不展開描述,后續其他文檔會詳述基于Docker的單節點StarRocks一鍵部署。
附錄一:StarRocks部署包目錄樹[部分]
StarRocks-1.19.2
├── apache_hdfs_broker? # Broker目錄
│?? ├── bin
│?? │?? ├── start_broker.sh? # Broker啟動腳本
│?? │?? └── stop_broker.sh? # Broker關閉腳本
│?? ├── conf
│?? │?? ├── apache_hdfs_broker.conf? # Broker配置文件
│?? │?? ├── hdfs-site.xml
│?? │?? └── log4j.properties
│?? └── lib
│?????? └── *.jar? # Broker依賴的jar包
├── be? # BE實例目錄
│?? ├── bin
│?? │?? ├── common.sh
│?? │?? ├── show_be_version.sh? # BE版本查看
│?? │?? ├── start_be.sh? # BE啟動腳本
│?? │?? └── stop_be.sh? # BE關閉腳本
│?? ├── conf
│?? │?? ├── be.conf? # BE配置文件
│?? │?? └── hadoop_env.sh
│?? ├── lib
│?? │?? ├── meta_tool? # Tablet元數據離線管理工具 [1.19版本已合并入starrocks_be]
│?? │?? └── starrocks_be? # BE可執行文件(小版本升級時替換即可)
│?? └── www? # BE Web頁面文件
├── fe? # FE實例目錄
│?? ├── bin
│?? │?? ├── common.sh
│?? │?? ├── show_fe_version.sh? # FE版本查看
│?? │?? ├── start_fe.sh? # FE啟動腳本
│?? │?? └── stop_fe.sh? # FE關閉腳本
│?? ├── conf
│?? │?? ├── fe.conf? # FE配置文件
│?? │?? └── hadoop_env.sh
│?? ├── lib
│?? │?? ├── starrocks-fe.jar? # FE jar包(小版本升級時替換即可)
│?? │?? └── *.jar? # FE依賴的jar包
│?? ├── log
│?? │?? └── *.log
│?? └── webroot # FE Web頁面文件
└── udf # 用戶自定義函數目錄 [重構中,目前不建議使用]
??? ├── include
??? │?? ├── uda_test_harness.h
??? │?? └── udf.h? # UDF框架頭文件
??? └── lib
??????? └── libStarRocksUdf.a? # UDF框架靜態庫文件
總結
以上是生活随笔為你收集整理的第1.3章:StarRocks部署--单机部署的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 教你怎么合理选购LED透明屏_LED透明
- 下一篇: React集成中国地图