合 部署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 |
环境变量配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | -- 至少需要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
文件中配置如下内容:
1 2 3 4 5 6 7 8 9 10 11 | # 修改元数据目录。 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 参数配置。
我这里因为是单节点,所以只配置本地地址:
1 | echo "priority_networks = 127.0.0.1/32" >> ${STARROCKS_HOME}/fe/conf/fe.conf |
启动FE节点
运行以下命令启动 FE 节点。
1 | /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
,密码为空。
配置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
。
1 2 3 4 5 | 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 节点从集群移除。
1 | mysql> ALTER SYSTEM decommission BACKEND "127.0.0.1:9050"; |
启动BE节点
1 | /usr/local/starrocks/be/bin/start_be.sh --daemon |
检查BE节点
1 2 3 | tail -f ${STARROCKS_HOME}/be/log/be.out ps -ef|grep starrocks netstat -tulnp | grep starrocks |
示例:
1 2 3 4 5 6 7 8 9 | [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
的配置存在问题。
1 | 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 节点的方式来解决。
1 | ALTER SYSTEM DROP BACKEND "172.16.xxx.xx:9050"; |
如果在初次部署时遇到任何意外问题,可以在删除并重新创建 BE 的数据路径后,重新开始部署。
成功部署 StarRocks 集群后,您可以:
部署Broker节点
通过 Broker,StarRocks 可读取对应数据源(如HDFS、S3)上的数据,利用自身的计算资源对数据进行预处理和导入。除此之外,Broker 也被应用于数据导出,备份恢复等功能。
通过以下命令启动 Broker。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | /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 的保留关键字列表,请参见关键字。
1 | CREATE DATABASE example_db; |
您可以通过 SHOW DATABASES;
命令查看当前 StarRocks 集群中所有数据库。