服务器前置要求:
1、内存>=32GB
2、JDK 8 is not supported, please use JDK 11 or 17
1、安装
wget https://releases.starrocks.io/starrocks/StarRocks-3.3.0.tar.gz
tar zxvf StarRocks-3.3.0.tar.gz
2、FE服务启动
2.1 配置FE节点(默认配置,如果是自定义,可以修改配置,否则配置无需变动fe/conf/fe.conf
meta_dir = ${STARROCKS_HOME}/meta
mkdir ${STARROCKS_HOME}/meta
2.2 java环境安装fe/conf/fe.conf
如果本地默认是java8环境,可以单独对sr进行环境配置
# Replace <path_to_JDK> with the path where the chosen JDK is installed.
JAVA_HOME = /root/jdk-17.0.11
2.3 验证端口服务是否需要修改
8030
: FE HTTP server port (http_port
)9020
: FE Thrift server port (rpc_port
)9030
: FE MySQL server port (query_port
)9010
: FE internal communication port (edit_log_port
)6090
: FE cloud-native metadata server RPC listen port (cloud_native_meta_port
)
执行下面命令:
netstat -tunlp | grep 8030
netstat -tunlp | grep 9020
netstat -tunlp | grep 9030
netstat -tunlp | grep 9010
netstat -tunlp | grep 6090
如果出现端口冲突,需要修改配置fe.conf
我本地8030端口冲突,修改fe.conf配置如下:
http_port = 8040
2.4 存算分离模式配置修改(存算一体不需要修改此配置)
run_mode = shared_data
cloud_native_storage_type = HDFS
#cloud_native_meta_port = 6090
storage_root_path = hdfs://xxx/user/starrocks/
2.5 启动FE服务(sr3.3需要 jdk11或者jdk17,建议提前安装)
./bin/start_fe.sh --daemon
./bin/stop_fe.sh --daemon
2.6 验证服务
2.6.1 查看FE节点服务是否正常
cat fe/log/fe.log | grep thrift
2024-07-28 15:35:12.676+08:00 INFO (UNKNOWN 10.177.54.201_9010_1722151478821(-1)|1) [FrontendThriftServer.start():65] thrift server started with port 9020
2.6.2 查看web ui是否正常
在浏览器访问http://ip:http_port(默认 http_port 为 8030),用户名为 root,密码为空
3、BE服务启动
-存算分离模式服务不需要启动,CN的配置需要和BE配置保持一致
3.1 创建数据存储目录
# Replace <storage_root_path> with the data storage directory you want to create.
mkdir -p <storage_root_path>
3.2 服务端口检测
9060
: BE Thrift server port (be_port
)8040
: BE HTTP server port (be_http_port
)9050
: BE heartbeat service port (heartbeat_service_port
)8060
: BE bRPC port (brpc_port
)9070
: An extra agent service port for BE and CN (starlet_port
)
检测BE服务的端口是否被占用
netstat -tunlp | grep 9060
netstat -tunlp | grep 8040
netstat -tunlp | grep 9050
netstat -tunlp | grep 8060
netstat -tunlp | grep 9070
如果出现端口冲突对应的服务端口需要做调整,否则使用默认端口部署
3.3 修改be配置be/conf/be.conf
# Replace <storage_root_path> with the data storage directory you want to create.
mkdir -p <storage_root_path>
storage_root_path = /root/StarRocks-3.3.0-rc01/be/storage
3.4 设置单独的java环境be/conf/be.conf
如果本地默认是java8环境,可以单独对sr进行环境配置
# Replace <path_to_JDK> with the path where the chosen JDK is installed.
JAVA_HOME = /root/jdk-17.0.11
3.5 启动BE服务
./be/bin/start_be.sh --daemon
3.6 验证BE服务是否启动正常
cat be/log/be.INFO | grep heartbeat
I0728 17:26:12.504830 465572 thrift_server.cpp:383] heartbeat has started listening port on 9050
I0728 17:26:12.504838 465572 starrocks_be.cpp:267] BE start step 13: start heartbeat server successfully
4、启动CN服务
(存算分离模式)需要启动,请保证BE服务在同一节点没有启动
4.1 CN 配置通BE配置,保持be/conf/be.conf和be/conf/cn.conf一致
增加:
storage_root_path = /root/StarRocks-3.3.0-rc01/be/storage
JAVA_HOME = /root/jdk-17.0.11
4.2 启动CN服务
./be/bin/start_cn.sh --daemon
4.2 检查CN服务是否正常
cat be/log/cn.INFO | grep heartbeat
I0728 17:48:29.443526 474653 thrift_server.cpp:383] heartbeat has started listening port on 9050
I0728 17:48:29.443535 474653 starrocks_be.cpp:267] CN start step 13: start heartbeat server successfully
5、集群部署
5.1 在mysql客户端连接fe服务
# Replace <fe_address> with the IP address (priority_networks) or FQDN
# of the Leader FE node, and replace <query_port> (Default: 9030)
# with the query_port you specified in fe.conf.
mysql -h <fe_address> -P<query_port> -uroot
然后执行下面命令,可以看到FE节点的状态
SHOW PROC '/frontends'\G
5.2 把BE节点加入到集群中来
-- Replace <be_address> with the IP address (priority_networks)
-- or FQDN of the BE nodes, and replace <heartbeat_service_port>
-- with the heartbeat_service_port (Default: 9050) you specified in be.conf.
ALTER SYSTEM ADD BACKEND "<be_address>:<heartbeat_service_port>";
5.3 查看BE节点状态-存算分离状态可以不用加入
SHOW PROC '/backends'\G
5.4 把CN节点加入到集群
-- Replace <cn_address> with the IP address (priority_networks)
-- or FQDN of the CN node, and replace <heartbeat_service_port>
-- with the heartbeat_service_port (Default: 9050) you specified in cn.conf.
ALTER SYSTEM ADD COMPUTE NODE "<cn_address>:<heartbeat_service_port>";
使用下面命令查看
SHOW PROC '/compute_nodes'\G
看到Alive都是true后表示服务加入成功
6、hdfs相关配置
-
如果 HDFS 集群开启了高可用(High Availability,简称为“HA”)模式,则需要将 HDFS 集群中的 hdfs-site.xml 文件放到每个 FE 的 $FE_HOME/conf 路径下、以及每个 BE 的 $BE_HOME/conf 路径(或每个 CN 的 $CN_HOME/conf 路径)下。
-
如果 HDFS 集群配置了 ViewFs,则需要将 HDFS 集群中的 core-site.xml 文件放到每个 FE 的 $FE_HOME/conf 路径下、以及每个 BE 的 $BE_HOME/conf 路径(或每个 CN 的 $CN_HOME/conf 路径)下
7、hadoop集群开启kerbos情况下,需要进行配置修改
- 在每个 FE 和 每个 BE(或 CN)上执行
kinit -kt keytab_path principal
命令,从 Key Distribution Center (KDC) 获取到 Ticket Granting Ticket (TGT)。执行命令的用户必须拥有访问 HMS 和 HDFS 的权限。注意,使用该命令访问 KDC 具有时效性,因此需要使用 cron 定期执行该命令。 - 在每个 FE 的 $FE_HOME/conf/fe.conf 文件和每个 BE 的 $BE_HOME/conf/be.conf 文件(或每个 CN 的 $CN_HOME/conf/cn.conf 文件)中添加
JAVA_OPTS="-Djava.security.krb5.conf=/etc/krb5.conf"
。其中,/etc/krb5.conf
是 krb5.conf 文件的路径,可以根据文件的实际路径进行修改
8、创建hive catalog
CREATE EXTERNAL CATALOG hive_catalog
PROPERTIES ("type"="hive",
"enable_metastore_cache" = "true",
"metastore_cache_refresh_interval_sec"="30",
"hive.metastore.type" = "hive",
"hive.metastore.uris"="thrift://198.28.1.83:9083,thrift://198.28.1.84:9083");
SHOW CATALOGS;
SHOW DATABASES FROM hive_catalog;
SELECT * from hive_catalog.ods01.ods_uf20_hs_asset_clientInfo LIMIT 10;
9、其他命令
查看计算节点
show compute nodes;
查看fe;
show frontends;
查看be;
show backends;
删除catalog
drop catalog hive_cata;
10、常见问题
10.1
2024-07-29 23:08:45.587+08:00 ERROR (starrocks-mysql-nio-pool-4|2463) [MetadataMgr.listDbNames():211] Failed to listDbNames on catalog hive_cata
com.starrocks.connector.exception.StarRocksConnectorException: Failed to getAllDatabases, msg: null
原因:集群初始化时为存算一体,SR不支持随意变更存算一体和存算分离,需要手动修改配置
解决方案:采用存算模式下,FE配置需要变更
run_mode = shared_data
cloud_native_storage_type = HDFS
storage_root_path = hdfs://xxx/user/starrocks/
并且手动修改VERION信息的run_mode使之和配置保持一致
vim /data/store/StarRocks/meta/image/VERSION
run_mode = shared_data
社区文档参考: