第1.3章:StarRocks部署--单机部署
嚴(yán)格來說,StarRocks并沒有所謂的“Standalone運(yùn)行模式”,生產(chǎn)環(huán)境下更是不建議進(jìn)行單實(shí)例部署。這里將單機(jī)部署整理出來,主要是考慮當(dāng)用戶測(cè)試環(huán)境受限于機(jī)器數(shù)量或僅希望驗(yàn)證功能,那么也可以在一臺(tái)機(jī)器上簡(jiǎn)易部署把StarRocks跑起來。
以服務(wù)器“starrocks(192.168.110.98)”為例,在進(jìn)行完“第1.2章:StarRocks部署--部署環(huán)境準(zhǔn)備”中的準(zhǔn)備工作后,我們開始進(jìn)行單節(jié)點(diǎn)的部署。
為方便演示,我們使用root用戶通過XShell工具訪問服務(wù)器,單節(jié)點(diǎn)架構(gòu)設(shè)計(jì)如下:
| 機(jī)器節(jié)點(diǎn) | 192.168.116.98 (starrocks) |
| 部署服務(wù) | 1 FE(Leader) 1 BE 1 Broker mysql-client |
部署目錄及數(shù)據(jù)目錄設(shè)計(jì)如下,后續(xù)的部署操作嚴(yán)格按照部署設(shè)計(jì)進(jìn)行:
| FE | 部署目錄:/opt/module/starrocks/fe 日志目錄:/opt/module/starrocks/fe/log(默認(rèn)) 元數(shù)據(jù)目錄:/opt/meta |
| BE | 部署目錄:/opt/module/starrocks/be 日志目錄:/opt/module/starrocks/be/log(默認(rèn)) 數(shù)據(jù)目錄:/opt/storage |
| Broker | 部署目錄:/opt/module/starrocks/apache_hdfs_broker |
1?獲取二進(jìn)制產(chǎn)品包
StarRocks的二進(jìn)制部署包可在官網(wǎng)下載獲取:
StarRocks - 新一代極速全場(chǎng)景MPP數(shù)據(jù)庫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?解壓產(chǎn)品包
[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二進(jìn)制包解壓后目錄結(jié)構(gòu)及簡(jiǎn)要說明見附錄一:StarRocks部署包目錄樹。
3?分發(fā)部署文件
[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實(shí)例
4.1?修改FE配置文件
StarRocks各服務(wù)配置文件的默認(rèn)配置已經(jīng)足以啟動(dòng)集群,不建議初嘗用戶修改較多配置。FE的配置文件在測(cè)試環(huán)境中我們通常只需要關(guān)注以下三點(diǎn):
a、注意默認(rèn)端口,避免端口沖突,正常情況下不需要修改;
b、綁定IP,避免多網(wǎng)卡情況下服務(wù)無法自動(dòng)匹配到正確的IP。特別注意,綁定ip時(shí),如果不清楚CIDR表示法,可以直接填寫完整的ip(不支持別名),例如配置為priority_networks = 192.168.110.98,這樣的寫法等同于priority_networks = 192.168.110.98/32;
c、設(shè)置元數(shù)據(jù)目錄,默認(rèn)目錄為fe/meta,我們建議新建目錄并修改配置文件。
根據(jù)部署設(shè)計(jì),創(chuàng)建元數(shù)據(jù)存儲(chǔ)目錄:
[root@starrocks starrocks]# mkdir /opt/meta
針對(duì)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?啟動(dòng)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
[補(bǔ)充:關(guān)閉FE的腳本是stop_fe.sh,命令:./stop_fe.sh]
FE使用Java語言編寫,使用jps命令查看java進(jìn)程,若發(fā)現(xiàn)有StarRocksFe進(jìn)程,即為啟動(dòng)成功:
[root@starrocks bin]# jps
5178 Jps
5164 StarRocksFe
如果進(jìn)程狀態(tài)異常可在FE日志目錄中查看日志追蹤原因,FE的主要日志在fe.log中,所有查詢的審計(jì)日志在fe.audit.log中。由于是初次啟動(dòng),如果在操作過程中遇到比較耗時(shí)的問題,可以清空FE的元數(shù)據(jù)目錄,再從頭開始操作。
4.3?訪問FE
使用mysql-client訪問FE,FE查詢端口默認(rèn)為9030,自帶用戶root,默認(rèn)密碼為空:
[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?確認(rèn)FE狀態(tài)
若mysql-client能夠正常訪問FE,已說明FE狀態(tài)正常,查詢命令:
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節(jié)點(diǎn)狀態(tài)正常。
4.5?添加實(shí)例進(jìn)入集群
我們先將添加BE與Broker實(shí)例添加入集群。這里需要說明一下,“啟動(dòng)服務(wù)”和“將服務(wù)添加入集群”并沒有嚴(yán)格的先后順序,但若先啟動(dòng)服務(wù),在實(shí)例未加入集群前,BE的日志中會(huì)打印一些提示未加入集群的WARNING信息,例如:Fail to get master client from cache。所以我們可以在FE全部部署完成后,使用mysql-client將集群中其他實(shí)例通過SQL添加入集群,然后再逐個(gè)部署啟動(dòng)。
添加BE進(jìn)入集群,端口使用BE的heartbeat_service_port(默認(rèn)為9050):
mysql> alter system add backend '192.168.110.98:9050';
Query OK, 0 rows affected (0.10 sec)
添加Broker進(jìn)入集群時(shí)需要給Broker設(shè)定名稱,比如命名為hdfs_broker,端口使用Broker的broker_ipc_port(默認(rèn)為8000):
mysql> alter system add broker hdfs_broker '192.168.110.98:8000';
Query OK, 0 rows affected (0.03 sec)
若添加實(shí)例進(jìn)入集群時(shí)信息輸入有誤或出現(xiàn)其他異常,我們可以將其刪除后重新添加,刪除示例:
從集群中刪除BE(當(dāng)前僅有一個(gè)BE實(shí)例,故刪除時(shí)可以直接使用dropp命令刪除。刪除BE為高風(fēng)險(xiǎn)操作,所以這里的刪除命令設(shè)計(jì)為了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)
暫時(shí)退出StarRocks:
mysql> exit
Bye
5?部署B(yǎng)E實(shí)例
5.1?修改BE配置文件
BE的配置文件,在測(cè)試環(huán)境通常也是關(guān)注如下三點(diǎn):
a、注意默認(rèn)端口,避免端口沖突,正常情況下不需要修改;
b、綁定IP,避免多網(wǎng)卡情況下無法自動(dòng)找到正確的IP(同樣,不清楚CIDR就可以直接填寫完整的IP);
c、設(shè)置數(shù)據(jù)存儲(chǔ)目錄,默認(rèn)目錄為be/storage,我們建議新建目錄并修改配置文件。
新建BE數(shù)據(jù)存儲(chǔ)目錄:
[root@starrocks bin]# mkdir /opt/storage
針對(duì)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?啟動(dòng)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
[補(bǔ)充:關(guān)閉BE腳本為stop_be.sh,命令:./stop_be.sh]
BE使用C++編寫,使用ps命令查看進(jìn)程,若發(fā)現(xiàn)有starrocks_be進(jìn)程,即為啟動(dòng)成功:
[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
如果進(jìn)程狀態(tài)異常可在BE日志目錄中查看日志追蹤原因,BE的主要日志在be.INFO中,其他的日志在be.out中。
5.3?查看BE狀態(tài)
仍使用mysql-client訪問集群:
[root@starrocks bin]# mysql -h192.168.110.98 -P9030 -uroot
Welcome to the MySQL monitor.? Commands end with ; or \g.
………………
mysql>
查詢BE狀態(tài):
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即為狀態(tài)正常,若為false,可根據(jù)日志排查問題。同樣的,因?yàn)楫?dāng)前BE為初次啟動(dòng),如果出現(xiàn)無法快速定位的問題,可以清空storage數(shù)據(jù)目錄,重新啟動(dòng)服務(wù)。
退出StarRocks:
mysql> exit
Bye
6?部署B(yǎng)roker
在部署完FE與BE后,StarRocks主要服務(wù)已經(jīng)部署完成。Broker是StarRocks與外部HDFS/對(duì)象存儲(chǔ)等外部數(shù)據(jù)對(duì)接的中轉(zhuǎn)服務(wù),若不需要可以不部署。Broker本身是無狀態(tài)的進(jìn)程,可以隨意啟停,不影響集群。
6.1?修改Broker配置文件
Broker的配置文件通常不需要修改。與FE實(shí)例和BE實(shí)例不同,Broker當(dāng)前沒有也不需要priority_networks這個(gè)選項(xiàng)。Broker的服務(wù)默認(rèn)綁定在0.0.0.0上,我們只需在前面4.5節(jié) ADD BROKER時(shí),輸入正確可訪問的BROKER IP即可。
6.2?啟動(dòng)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
[補(bǔ)充:關(guān)閉Broker腳本為stop_broker.sh,命令:./stop_broker.sh]
查看java進(jìn)程,若發(fā)現(xiàn)有BrokerBootstrap即為啟動(dòng)成功:
[root@starrocks bin]# jps | grep BrokerBootstrap
7594 BrokerBootstrap
Broker日志在apache_hdfs_broker.log中,如果進(jìn)程狀態(tài)異常可查看日志追蹤原因。
6.3?查看Broker狀態(tài)
使用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狀態(tài):
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即為狀態(tài)正常,如果狀態(tài)異常可以根據(jù)日志定位問題。
7?簡(jiǎn)單使用示例
7.1?修改root用戶密碼
例如修改root密碼也為root:
mysql> set password=password('root');
Query OK, 0 rows affected (0.02 sec)
7.2?建庫建表
StarRocks的副本數(shù)是不能大于BE節(jié)點(diǎn)數(shù)的,由于當(dāng)前僅有一個(gè)BE節(jié)點(diǎn),我們建表時(shí)務(wù)必注意指定數(shù)據(jù)為單副本,示例如下:
新建一個(gè)starrocks數(shù)據(jù)庫:
mysql> create database starrocks;
Query OK, 0 rows affected (0.01 sec)
mysql> use starrocks;
Database changed
新建一個(gè)customer表,無分區(qū),按c_custkey分桶,指定數(shù)據(jù)存儲(chǔ)為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?插入測(cè)試數(shù)據(jù)
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?簡(jiǎn)單查詢
mysql> select count(1) from customer;
+----------------+
| ?count(1)? ? ? |
+----------------+
|??????? 3? ? ? ? ? ?|
+----------------+
8?使用圖形化工具
StarRocks兼容MySQL協(xié)議,在使用圖形化工具連接時(shí),我們可將其視為MySQL直接連接。以SQLyog為例,輸入服務(wù)器IP、用戶名、密碼和端口(查詢端口默認(rèn)為9030),即可連接:
9 Docker部署
若單臺(tái)服務(wù)器內(nèi)存、磁盤等資源充足,也可以使用Docker在單服務(wù)器節(jié)點(diǎn)上對(duì)FE/BE進(jìn)行多實(shí)例的部署,但考慮到資源競(jìng)爭(zhēng)問題,依舊不推薦在生產(chǎn)環(huán)境中使用。
除在Docker容器中跑StarRocks外,我們可以考慮使用Docker將完成第1.2章部署準(zhǔn)備工作后的某個(gè)容器保存為鏡像,在后續(xù)集群擴(kuò)容時(shí)快速拉取使用。
容器化部署及使用這里先不展開描述,后續(xù)其他文檔會(huì)詳述基于Docker的單節(jié)點(diǎn)StarRocks一鍵部署。
附錄一:StarRocks部署包目錄樹[部分]
StarRocks-1.19.2
├── apache_hdfs_broker? # Broker目錄
│?? ├── bin
│?? │?? ├── start_broker.sh? # Broker啟動(dòng)腳本
│?? │?? └── stop_broker.sh? # Broker關(guān)閉腳本
│?? ├── conf
│?? │?? ├── apache_hdfs_broker.conf? # Broker配置文件
│?? │?? ├── hdfs-site.xml
│?? │?? └── log4j.properties
│?? └── lib
│?????? └── *.jar? # Broker依賴的jar包
├── be? # BE實(shí)例目錄
│?? ├── bin
│?? │?? ├── common.sh
│?? │?? ├── show_be_version.sh? # BE版本查看
│?? │?? ├── start_be.sh? # BE啟動(dòng)腳本
│?? │?? └── stop_be.sh? # BE關(guān)閉腳本
│?? ├── conf
│?? │?? ├── be.conf? # BE配置文件
│?? │?? └── hadoop_env.sh
│?? ├── lib
│?? │?? ├── meta_tool? # Tablet元數(shù)據(jù)離線管理工具 [1.19版本已合并入starrocks_be]
│?? │?? └── starrocks_be? # BE可執(zhí)行文件(小版本升級(jí)時(shí)替換即可)
│?? └── www? # BE Web頁面文件
├── fe? # FE實(shí)例目錄
│?? ├── bin
│?? │?? ├── common.sh
│?? │?? ├── show_fe_version.sh? # FE版本查看
│?? │?? ├── start_fe.sh? # FE啟動(dòng)腳本
│?? │?? └── stop_fe.sh? # FE關(guān)閉腳本
│?? ├── conf
│?? │?? ├── fe.conf? # FE配置文件
│?? │?? └── hadoop_env.sh
│?? ├── lib
│?? │?? ├── starrocks-fe.jar? # FE jar包(小版本升級(jí)時(shí)替換即可)
│?? │?? └── *.jar? # FE依賴的jar包
│?? ├── log
│?? │?? └── *.log
│?? └── webroot # FE Web頁面文件
└── udf # 用戶自定義函數(shù)目錄 [重構(gòu)中,目前不建議使用]
??? ├── include
??? │?? ├── uda_test_harness.h
??? │?? └── udf.h? # UDF框架頭文件
??? └── lib
??????? └── libStarRocksUdf.a? # UDF框架靜態(tài)庫文件
總結(jié)
以上是生活随笔為你收集整理的第1.3章:StarRocks部署--单机部署的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 教你怎么合理选购LED透明屏_LED透明
- 下一篇: React集成中国地图