StarRock3.3 安装部署(存算分离、存算一体保姆式教程)

avatar
作者
猴君
阅读量:0

服务器前置要求:

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

社区文档参考:

Deploy StarRocks manually | StarRocks

Hive catalog | StarRocks

ALTER SYSTEM | StarRocks

    广告一刻

    为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!