使用 Helm 部署 StarRocks
目标
本快速入门的目标是:
- 使用 Helm 部署 StarRocks Kubernetes Operator 和 StarRocks 集群
- 为 StarRocks 数据库用户
root
配置密码 - 提供具有三个 FE 和三个 BE 的高可用性
- 将元数据存储在持久存储中
- 将数据存储在持久存储中
- 允许 MySQL 客户端从 Kubernetes 集群外部连接
- 允许使用 Stream Load 从 Kubernetes 集群外部导入数据
- 导入公共数据集
- 查询数据
此处使用的数据集和查询与基本快速入门中使用的相同。本教程的主要区别在于使用 Helm 和 StarRocks Operator 进行部署。
所使用的数据由 NYC OpenData 和国家环境信息中心提供。
这些均为大型数据集,因为本教程旨在帮助您熟悉使用 StarRocks,所以不会导入过去 120 年的数据。您可以使用三个 e2-standard-4 机器(或类似)的 GKE Kubernetes 集群运行本教程,磁盘空间为 80GB。对于更大的部署方案,稍后会提供其他文档。
本文档包含大量信息,前半部分为分步教程,后半部分为技术细节。这样安排是为了按顺序服务以下目的:
- 使用 Helm 部署系统。
- 允许读者在 StarRocks 中导入数据并分析这些数据。
- 解释导入过程中数据转换的基础知识。
前提条件
Kubernetes 环境
本指南编写时使用的 Kubernetes 环境由三个节点组成,每个节点配备四个 vCPU 和 16GB 内存(GCP e2-standard-4
机器)。Kubernetes 集群是通过以下 gcloud
命令部署的:
这个命令仅供参考,如果你使用的是 AWS、Azure 或其他 Kubernetes 提供商,你需要根据自身环境进行修改。在 Google Cloud 中,你需要指定自己的项目和合适的位置。
gcloud container --project enterprise-demo-422514 \
clusters create ee-docs \
--location=southamerica-west1-b \
--machine-type e2-standard-4 --disk-size 80 --num-nodes 3
Helm
Helm 是一个用于 Kubernetes 的包管理器,简化了应用程序的部署和管理。在本实验中,你将使用 Helm 来部署 CelerData Enterprise Edition Kubernetes operator 和示例 StarRocks 集群。
SQL 客户端
您可以使用 Kubernetes 环境中提供的 SQL 客户端,或使用您系统上的客户端。本指南使用 mysql CLI
,许多 MySQL 兼容的客户端都可以使用。
curl
curl
用于向 StarRocks 发出数据导入任务,并下载数据集。通过在操作系统提示符下运行 curl
或 curl.exe
检查是否已安装 curl。如果未安装 curl,请 在此获取 curl。
术语
FE
前端节点负责元数据管理、客户端连接管理、查询计划和查询调度。每个 FE 在其内存中存储并维护一份完整的元数据副本,保证 FE 之间的服务无差别。
BE
后端节点负责数据存储和执行查询计划。
添加 StarRocks Helm Chart 仓库
Helm Chart 包含 StarRocks Operator 和自定义资源 StarRocksCluster 的定义。
-
添加 Helm Chart 仓库。
helm repo add starrocks https://starrocks.github.io/starrocks-kubernetes-operator
-
更新 Helm Chart 仓库到最新版本。
helm repo update
-
查看您添加的 Helm Chart 仓库。
helm search repo starrocks
NAME CHART VERSION APP VERSION DESCRIPTION
starrocks/kube-starrocks 1.9.7 3.2-latest kube-starrocks includes two subcharts, operator...
starrocks/operator 1.9.7 1.9.7 A Helm chart for StarRocks operator
starrocks/starrocks 1.9.7 3.2-latest A Helm chart for StarRocks cluster
starrocks/warehouse 1.9.7 3.2-latest Warehouse is currently a feature of the StarRoc...
下载数据
将这两个数据集下载到您的机器上。
纽约市交通事故数据
curl -O https://raw.githubusercontent.com/StarRocks/demo/master/documentation-samples/quickstart/datasets/NYPD_Crash_Data.csv
天气数据
curl -O https://raw.githubusercontent.com/StarRocks/demo/master/documentation-samples/quickstart/datasets/72505394728.csv
创建 Helm values 文件
本快速入门的目标是:
- 为 StarRocks 数据库用户
root
配置密码 - 部署 3 FE 和 3 BE 保证高可用性
- 将元数据存储在持久化存储中
- 将数据存储在持久化存储中
- 允许 MySQL 客户端从 Kubernetes 集群外部连接
- 允许使用 Stream Load 从 Kubernetes 集群外部导入数据
Helm Chart 提供的选项足以满足所有这些目标,但默认情况下未配置。本小节的其余部分涵盖了满足所有这些目标所需的配置。最后将提供完整的 values 规范,但请您先阅读每个部分的详细信息,然后复制完整的范本。
1. 数据库用户的密码
这段 YAML 指示 StarRocks Operator 将数据库用户 root
的密码设置为 Kubernetes secret starrocks-root-pass
中 password
键的值。
starrocks:
initPassword:
enabled: true
# 设置密码 secret,例如:
# kubectl create secret generic starrocks-root-pass --from-literal=password='g()()dpa$$word'
passwordSecret: starrocks-root-pass
-
任务:创建 Kubernetes secret
kubectl create secret generic starrocks-root-pass --from-literal=password='g()()dpa$$word'
2. 部署 3 FE 和 3 BE 保证高可用性
通过将 starrocks.starrockFESpec.replicas
和 starrocks.starrockBeSpec.replicas
设置为 3,您将拥有足够的 FE 和 BE 以保证高可用性。将 CPU 和内存请求设置为较低数值,从而保证可以在小型 Kubernetes 环境中创建 pod。
starrocks:
starrocksFESpec:
replicas: 3
resources:
requests:
cpu: 1
memory: 1Gi
starrocksBeSpec:
replicas: 3
resources:
requests:
cpu: 1
memory: 2Gi
3. 将元数据存储在持久化存储中
将 starrocks.starrocksFESpec.storageSpec.name
的值设置为 ""
以外的任何值会导致:
- 使用持久存储
starrocks.starrocksFESpec.storageSpec.name
的值将用作服务所有存储卷的前缀。
通过将值设置为 fe
,这些 PV 将为 FE 0 创建:
fe-meta-kube-starrocks-fe-0
fe-log-kube-starrocks-fe-0
starrocks:
starrocksFESpec:
storageSpec:
name: fe