StarRocks 開發(fā)環(huán)境搭建踩坑指北之存算分離篇
前段時間碰到一個 StarRocks 物化視圖的 bug: https://github.com/StarRocks/starrocks/issues/55301
但是這個問題只能在存算分離的場景下才能復(fù)現(xiàn),為了找到問題原因我便嘗試在本地搭建一個可以 Debug 的存算分離版本。
之前也分享過在本地 Debug StarRocks,不過那是存算一體的版本,而存算分離稍微要復(fù)雜一些。
這里提到的本地 Debug 主要是指可以調(diào)試 FE,而 CN/BE 則是運(yùn)行在容器環(huán)境,避免本地打包和構(gòu)建運(yùn)行環(huán)境。
當(dāng)前 StarRocks 以下的存算分離部署方式,在本地推薦直接使用 MinIO 部署。。
圖片
啟動 MinIO
首先第一步啟動 MinIO:
docker run -d --rm --name minio \
-e MINIO_ROOT_USER=miniouser \
-e MINIO_ROOT_PASSWORD=miniopassword \
-p 9001:9001 \
-p 9000:9000 \
--entrypoint sh \
minio/minio:latest \
-c 'mkdir -p /minio_data/starrocks && minio server /minio_data --console-address ":9001"'
進(jìn)入 MinIO 容器設(shè)置 access token:
docker exec -it minio sh
mc alias set myminio http://10.0.9.20:9000 miniouser miniopassword; mc admin user svcacct add --access-key AAAAAAAAAAAAAAAAAAAA --secret-key BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB myminio miniouser
啟動 cn:
docker run -p 9060:9060 -p 8040:8040 -p 9050:9050 -p 8060:8060 -p 9070:9070 -itd --rm --name cn -e "TZ=Asia/Shanghai" starrocks/cn-ubuntu:3.4-latest
修改 cn.conf :
cd cn/config/
echo "priority_networks = 10.0.9.20/24" >> cn.properties
使用腳本手動啟動 cn:
bin/start_cn.sh --daemon
使用以下配置在本地 IDEA 中啟動 FE:
LOG_DIR = ${STARROCKS_HOME}/log
DATE = "$(date +%Y%m%d-%H%M%S)"
sys_log_level = INFO
http_port = 8030
rpc_port = 9020
query_port = 9030
edit_log_port = 9010
mysql_service_nio_enabled = true
run_mode = shared_data
cloud_native_storage_type = S3
aws_s3_endpoint = 10.0.9.20:9000
# set the path in MinIO
aws_s3_path = starrocks
# credentials for MinIO object read/write
# 這里的 key 為剛才設(shè)置的 access token
aws_s3_access_key = AAAAAAAAAAAAAAAAAAAA
aws_s3_secret_key = BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
aws_s3_use_instance_profile = false
aws_s3_use_aws_sdk_default_behavior = false
# Set this to false if you do not want default
# storage created in the object storage using
# the details provided above
enable_load_volume_from_conf = true
# 本機(jī) IP,需要與 cn 中的配置對齊
priority_networks = 10.0.9.20/24
啟動 FE 之前最好先刪除 meta/. 下的所有元數(shù)據(jù)文件然后再啟動。
添加 CN 節(jié)點(diǎn)
FE 啟動成功之后連接上 FE,然后手動添加 CN 節(jié)點(diǎn)。
ALTER SYSTEM ADD COMPUTE NODE "127.0.0.1:9050";
show compute nodes;
然后就可以創(chuàng)建存算分離的表了。
CREATE TABLEIFNOTEXISTS par_tbl1
(
datekey DATETIME,
k1 INT,
item_id STRING,
v2 INT
)PRIMARY KEY (`datekey`,`k1`)
PARTITIONBY date_trunc('day', `datekey`)
PROPERTIES (
"compression" = "LZ4",
"datacache.enable" = "true",
"enable_async_write_back" = "false",
"enable_persistent_index" = "true",
"persistent_index_type" = "LOCAL",
"replication_num" = "1",
"storage_volume" = "builtin_storage_volume"
);
最終其實(shí)是參考官方提供的 docker-compose 的編排文件進(jìn)行部署的: https://raw.githubusercontent.com/StarRocks/demo/master/documentation-samples/quickstart/docker-compose.yml
如果只是想在本地搭建一個存算分離的版本,可以直接使用這個 docker compose.
其中有兩個坑需要注意:
創(chuàng)建表超時
建表出現(xiàn)超時,提示需要配置時間:
admin set frontend config("tablet_create_timeout_second"="50")
配置也不能解決問題,依然會超時,可以看看本地是否有開啟代理,嘗試關(guān)閉代理試試看。
unknown compression type(0) backend [id=10002]
不支持的壓縮類型:這個問題我在使用 main 分支的 FE 與最新的 starrocks/cn-ubuntu:3.4-latest 的鏡像會觸發(fā),當(dāng)我把 FE 降低到具體到 tag 分支,比如 3.3.9 的時候就可以了。
具體原因就沒有細(xì)究了,如果要本地 debug 使用最新的 tag 也能滿足調(diào)試的需求。
參考鏈接:
- https://github.com/StarRocks/starrocks/issues/55301
- https://docs.starrocks.io/zh/docs/deployment/shared_data/minio/