部署StarRocks 2.5.3单机环境
环境申请
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | docker rm -f starrocks253 docker run -itd --name starrocks253 -h starrocks253 \ -p 9030:9030 -p 8030:8030 \ -v /sys/fs/cgroup:/sys/fs/cgroup \ --privileged=true lhrbest/lhrcentos76:9.0 \ /usr/sbin/init wget https://releases.mirrorship.cn/starrocks/StarRocks-2.5.3.tar.gz docker cp -q StarRocks-2.5.3.tar.gz starrocks253:/soft/ docker exec -it starrocks253 bash tar -zxf /soft/StarRocks-2.5.3.tar.gz -C /usr/local/ ln -s /usr/local/StarRocks-2.5.3 /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-2.5.3/ |
安装包下载: 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.332.b09-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@starrocks253 ~]# jps 8280 StarRocksFE 8714 Jps [root@starrocks253 ~]# 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@starrocks253 ~]# [root@starrocks253 ~]# 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@starrocks253 ~]# |
通过运行 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@starrocks253 ~]# 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: 2.5.3-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
。本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!