部署StarRocks V3.0单机环境
环境申请
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
docker rm -f starrocks300
docker run -itd --name starrocks300 -h starrocks300 \
-p 9031:9030 -p 8031:8030 \
-v /sys/fs/cgroup:/sys/fs/cgroup \
--privileged=true lhrbest/lhrcentos76:9.2 \
/usr/sbin/init
wget https://releases.mirrorship.cn/starrocks/StarRocks-3.0.0.tar.gz
docker cp -q StarRocks-3.0.0.tar.gz starrocks300:/soft/
docker exec -it starrocks300 bash
tar -zxf /soft/StarRocks-3.0.0.tar.gz -C /usr/local/
ln -s /usr/local/StarRocks-3.0.0 /usr/local/starrocks
mkdir -p /usr/local/starrocks/fe/meta
mkdir -p /usr/local/starrocks/be/storage
chown root.root -R /usr/local/starrocks/
chown root.root -R /usr/local/StarRocks-3.0.0/
安装包下载: https://www.mirrorship.cn/zh-CN/download/community
配置操作系统
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
echo 0 | sudo tee /proc/sys/vm/swappiness
echo 1 | sudo tee /proc/sys/vm/overcommit_memory
sed -i s/SELINUX=enforcing/SELINUX=disabled/g /etc/selinux/config
setenforce 0
cat >> /etc/security/limits.conf <<"EOF"
* soft nofile 65535
* hard nofile 65535
EOF
ulimit -HSn 65535
cat >> /etc/sysctl.conf <<"EOF"
vm.overcommit_memory=1
vm.swappiness=0
EOF
sysctl -p
环境变量配置
-- 至少需要Java jdk 1.8
yum -y install java-1.8.0-openjdk-devel.x86_64
java -version
cat >> /root/.bashrc <<"EOF"
export STARROCKS_HOME=/usr/local/starrocks
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.362.b08-1.el7_9.x86_64
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin:$STARROCKS_HOME/fe/bin:$STARROCKS_HOME/be/bin:$STARROCKS_HOME/apache_hdfs_broker/bin
EOF
source /root/.bashrc
配置FE节点
配置FE节点
注意:当一台机器拥有多个 IP 地址时,需要在 FE 配置文件 conf/fe.conf 中设置 priority_networks,为该节点设定唯一 IP。
在${STARROCKS_HOME}/fe/conf/fe.conf文件中配置如下内容:
# 修改元数据目录。
meta_dir = /opt/software/StarRocks-2.2.2/meta
# 修改配置,网段,自动发现IP
priority_networks = 192.168.0.0/24
# 添加 Java 目录
JAVA_HOME = /opt/software/jdk1.8.0_212
# 修改JVM内存,默认是8G,根据自己机器自定义,默认是-Xmx8192m,这里我修改成Xmx512m,这里有两段配置,jdk 9+使用JAVA_OPTS_FOR_JDK_9
JAVA_OPTS="-Dlog4j2.formatMsgNoLookups=true -Xmx512m -XX:+UseMembar -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=7 -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSClassUnloadingEnabled -XX:-CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=80 -XX:SoftRefLRUPolicyMSPerMB=0 -Xloggc:$STARROCKS_HOME/log/fe.gc.log.$DATE"
# For jdk 9+, this JAVA_OPTS will be used as default JVM options
JAVA_OPTS_FOR_JDK_9="-Dlog4j2.formatMsgNoLookups=true -Xmx512m -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=7 -XX:+CMSClassUnloadingEnabled -XX:-CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=80 -XX:SoftRefLRUPolicyMSPerMB=0 -Xlog:gc*:$STARROCKS_HOME/log/fe.gc.log.$DATE:time"
如需在生产环境中对集群进行详细优化配置,参考 FE 参数配置。
我这里因为是单节点,所以只配置本地地址:
echo "priority_networks = 127.0.0.1/32" >> ${STARROCKS_HOME}/fe/conf/fe.conf
启动FE节点
运行以下命令启动 FE 节点。
/usr/local/starrocks/fe/bin/start_fe.sh --daemon
如果由于端口被占用导致 FE 启动失败,可修改配置文件 fe/conf/fe.conf 中的端口号 http_port。
检查FE节点
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
tail -f ${STARROCKS_HOME}/fe/log/fe.log
ps -ef|grep java
jps
netstat -tulnp | grep java
-- 日志输出:
2020-03-16 20:32:14,686 INFO 1 [FeServer.start():46] thrift server started. // FE 节点启动成功。
2020-03-16 20:32:14,696 INFO 1 [NMysqlServer.start():71] Open mysql server success on 9030 // 可以使用 MySQL 客户端通过 `9030` 端口连接 FE。
2020-03-16 20:32:14,696 INFO 1 [QeService.start():60] QE service start.
2020-03-16 20:32:14,825 INFO 76 [HttpServer$HttpServerThread.run():210] HttpServer started with port 8030
...
[root@starrocks300 ~]# jps
8280 StarRocksFE
8714 Jps
[root@starrocks300 ~]# netstat -tulnp | grep java
tcp 0 0 172.71.0.40:9010 0.0.0.0:* LISTEN 8280/java
tcp 0 0 0.0.0.0:9020 0.0.0.0:* LISTEN 8280/java
tcp 0 0 0.0.0.0:8030 0.0.0.0:* LISTEN 8280/java
tcp 0 0 0.0.0.0:9030 0.0.0.0:* LISTEN 8280/java
[root@starrocks300 ~]#
[root@starrocks300 ~]# ps -ef|grep java
root 8280 0 5 10:49 pts/1 00:00:16 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.332.b09-1.el7_9.x86_64/bin/java -Dlog4j2.formatMsgNoLookups=true -Xmx8192m -XX:+UseMembar -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=7 -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSClassUnloadingEnabled -XX:-CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=80 -XX:SoftRefLRUPolicyMSPerMB=0 -Xloggc:/usr/local/starrocks/fe/log/fe.gc.log.20230329-104953 -XX:+PrintConcurrentLocks com.starrocks.StarRocksFE
root 8761 210 0 10:55 pts/1 00:00:00 grep --color=auto java
[root@starrocks300 ~]#
通过运行 jps 命令查看 Java 进程,确认 StarRocksFE 进程是否存在。
通过mysql客户端查看节点信息
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
yum -y install mysql
# 用户名为 root,密码为空
mysql -h 127.0.0.1 -P9030 -uroot
# 查看 FE 状态。
SHOW PROC '/frontends'\G
[root@starrocks300 ~]# mysql -h 127.0.0.1 -P9030 -uroot
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 0
Server version: 5.1.0
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [(none)]> show frontends \G
*************************** 1. row ***************************
Name: 127.0.0.1_9010_1680064832570
IP: 127.0.0.1
EditLogPort: 9010
HttpPort: 8030
QueryPort: 9030
RpcPort: 9020
Role: LEADER
ClusterId: 1723834094
Join: true
Alive: true
ReplayedJournalId: 72
LastHeartbeat: 2023-03-29 12:46:20
IsHelper: true
ErrMsg:
StartTime: 2023-03-29 12:46:02
Version: 3.0.0-46bf084
1 row in set (0.02 sec)
MySQL [(none)]>
当 Role 为 LEADER 时,当前 FE 节点为选举出的主节点。当 Role 为 FOLLOWER 时,当前节点是一个能参与选主的 FE 节点。如果 MySQL 客户端连接失败,可以通过查看 log/fe.warn.log 日志文件发现问题。
如果在初次部署时遇到任何意外问题,可以在删除并重新创建 FE 的元数据目录后,重新开始部署。
通过在浏览器访问 FE ip:http_port(默认 http_port 为 8030),进入 StarRocks 的 WebUI,用户名为 root,密码为空。
http://172.18.0.14:8030/
配置BE节点
配置部署 Backend (BE) 节点。
BE 是 StarRocks 的后端节点,负责数据存储以及 SQL 执行等工作。
以下例子仅部署一个 BE 节点。您可以通过重复以下步骤添加多个 BE 节点。
添加BE节点
【温馨提示】
1、FE节点之间的时钟相差不能超过5s, 使用NTP协议校准时间。一台机器上只可以部署单个FE节点。所有FE节点的http_port需要相同。
2、host 需要与 priority_networks 相匹配,port 需要与 be.conf 文件中的设置的 heartbeat_service_port 相同,默认为 9050。
echo "priority_networks = 127.0.0.1/32" >> ${STARROCKS_HOME}/be/conf/be.conf
mysql -h 127.0.0.1 -P9030 -uroot
ALTER SYSTEM ADD BACKEND "127.0.0.1:9050";
如添加过程出现错误,需要通过以下命令将该 BE 节点从集群移除。
mysql> ALTER SYSTEM decommission BACKEND "127.0.0.1:9050";
启动BE节点
/usr/local/starrocks/be/bin/start_be.sh --daemon
检查BE节点
tail -f ${STARROCKS_HOME}/be/log/be.out
ps -ef|grep starrocks
netstat -tulnp | grep starrocks
示例:
[root@PT-Test-13 log]# netstat -tulnp | grep starrocks
tcp 0 0 0.0.0.0:8060 0.0.0.0:* LISTEN 18989/starrocks_be
tcp 0 0 0.0.0.0:8040 0.0.0.0:* LISTEN 18989/starrocks_be
tcp6 0 0 :::9050 :::* LISTEN 18989/starrocks_be
tcp6 0 0 :::9060 :::* LISTEN 18989/starrocks_be
[root@PT-Test-13 log]# ps -ef|grep starrocks
root 7911 11528 0 16:28 pts/0 00:00:00 grep --color=auto starrocks
root 18989 1 1 15:37 pts/0 00:00:44 /usr/local/starrocks/be/lib/starrocks_be
[root@PT-Test-13 log]#
确认BE启动成功
通过 MySQL 客户端确认 BE 节点是否启动成功。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
[root@starrocks300 conf]# mysql -h 127.0.0.1 -P9030 -uroot
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.1.0
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [(none)]> show backends \G
*************************** 1. row ***************************
BackendId: 11001
IP: 127.0.0.1
HeartbeatPort: 9050
BePort: 9060
HttpPort: 8040
BrpcPort: 8060
LastStartTime: 2023-03-29 12:48:21
LastHeartbeat: 2023-03-29 12:48:26
Alive: true
SystemDecommissioned: false
ClusterDecommissioned: false
TabletNum: 0
DataUsedCapacity: 0.000
AvailCapacity: 519.352 GB
TotalCapacity: 1019.104 GB
UsedPct: 49.04 %
MaxDiskUsedPct: 49.04 %
ErrMsg:
Version: 3.0.0-46bf084
Status: {"lastSuccessReportTabletsTime":"2023-03-29 12:48:21"}
DataTotalCapacity: 519.352 GB
DataUsedPct: 0.00 %
CpuCores: 16
NumRunningQueries: 0
MemUsedPct: 0.24 %
CpuUsedPct: 0.1 %
1 row in set (0.01 sec)
当 Alive 为 true 时,当前 BE 节点正常接入集群。
如果 BE 节点没有正常接入集群,可以通过查看 log/be.WARNING 日志文件排查问题。
如果日志中出现类似以下的信息,说明 priority_networks 的配置存在问题。
W0708 17:16:27.308156 11473 heartbeat_server.cpp:82\] backend ip saved in master does not equal to backend local ip127.0.0.1 vs. 172.16.xxx.xx
如遇到以上问题,可以通过 DROP 错误的 BE 节点,然后重新以正确的 IP 添加 BE 节点的方式来解决。
ALTER SYSTEM DROP BACKEND "172.16.xxx.xx:9050";
如果在初次部署时遇到任何意外问题,可以在删除并重新创建 BE 的数据路径后,重新开始部署。
成功部署 StarRocks 集群后,您可以:
创建表导入和查询数据部署Broker节点
通过 Broker,StarRocks 可读取对应数据源(如HDFS、S3)上的数据,利用自身的计算资源对数据进行预处理和导入。除此之外,Broker 也被应用于数据导出,备份恢复等功能。
通过以下命令启动 Broker。
/usr/local/starrocks/apache_hdfs_broker/bin/start_broker.sh --daemon
ps -ef|grep broker
netstat -tulnp | grep 8000
mysql -h 127.0.0.1 -P9030 -uroot
ALTER SYSTEM ADD BROKER broker_name "127.0.0.1:8000";
show broker;
MySQL [(none)]> show broker;
+-------------+-----------+------+-------+---------------------+---------------------+--------+
| Name | IP | Port | Alive | LastStartTime | LastUpdateTime | ErrMsg |
+-------------+-----------+------+-------+---------------------+---------------------+--------+
| broker_name | 127.0.0.1 | 8000 | true | 2023-03-30 09:32:54 | 2023-03-30 09:32:54 | |
+-------------+-----------+------+-------+---------------------+---------------------+--------+
1 row in set (0.00 sec)
当 Alive 为 true 时,当前 Broker 节点正常接入集群。
创建数据库
使用 root 用户创建 example_db 数据库。
注意
在指定数据库名、表名和列名等变量时,如果使用了保留关键字,必须使用反引号 (`) 包裹,否则可能会产生报错。有关 StarRocks 的保留关键字列表,请参见关键字。
CREATE DATABASE example_db;
您可以通过 SHOW DATABASES; 命令查看当前 StarRocks 集群中所有数据库。
本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!
后续精彩内容已被站长无情隐藏,请输入验证码解锁本文!
获取验证码: 请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“AiDBA”或者“dbaup6”或者微信扫描右侧二维码都可以关注本站微信公众号。
网址:部署StarRocks V3.0单机环境 https://m.mxgxt.com/news/view/1347971
相关内容
使用docker部署单机测试版starrocksEMR Serverless StarRocks评测
StarRocks 相关面试题
通过StarRocks Connector访问MaxCompute
再见,ClickHouse!2022我选StarRocks 2.0!
StarRocks Summit 2023 技术交流峰会圆满落幕
StarRocks 跨集群数据迁移:SDM 帮你一键搞定!
StarRocks资源调度
StarRocks资源隔离
揭秘StarRocks:打造企业级实时数据分析平台