了解如何在 Kubernetes 上安装 Pinot Control Plane,配置您的第一个 Pinot 集群,并深入了解控制平面功能。
作为一名经验丰富的专业人士,我作为 Apache Druid k8s operator 的维护者获得了丰富的经验,并且与人合着并致力于各种 k8s operators/库。通过我的经验,我认识到需要建立特定于应用程序的控制平面,以促进大数据在 Kubernetes 上的顺利运行。
在我过去的角色中,我为 RillData 的 Druid、Startree 的 Pinot 和 Chistadata 的 Clickhouse 构建了 Kubernetes 控制平面。在所有三个 OLAP 商店工作之后,我现在完全致力于我的最新企业 DataInfra,该公司专注于构建高效的控制平面,使数据能够在 Kubernetes 上无缝运行。
为什么 Pinot 的控制平面?
我们相信 Kubernetes 可以作为任何应用程序的控制平面,包括那些具有数据和状态集的应用程序。虽然 Helm 图表对配置管理很有用,但它们不维护应用程序的状态。这就是我们基于 Kubernetes 操作符模式构建控制平面的原因,它充当您的应用程序需求和 Kubernetes 基础设施之间的桥梁。
k8s 的 Pinot 控制平面专门设计用于改善运行 Apache Pinot 集群的用户体验。作为一个分布式数据库,如果没有合适的工具,Pinot 很难在 Kubernetes 上运行。我们的项目基于DSOI 规范,并使用Operator-Runtime库构建,以提供更加用户友好和 Kubernetes 友好的体验。
本项目基于 Kubernetes 算子模式,但不限于此模式。鉴于 Pinot 的复杂性,仅依靠 Kubernetes 运营商可能不足以有效管理其运营。我们对该项目的愿景是创建一套全面的工具和实用程序,以实现 Pinot 在 Kubernetes 上的无缝部署和操作。
安装 Pinot 控制平面
Pinot 控制平面支持基于Helm Chart 的部署。要安装图表,请运行以下命令。我们将使用 Makefile 命令来引导控制平面。
- Clone the Repo
git clone https://github.com/datainfrahq/pinot-control-plane-k8s.git
- 部署 Pinot 控制平面——以下命令在 pinot-control-plane 命名空间中使用 helm 部署控制平面。
make helm-install-pinot-control-plane
- 部署 Zookeeper Operator 和 Zookeeper — 以下命令需要几分钟才能完成。它将在 zookeeper-operator 命名空间中部署 zookeeper operator,在 pinot 命名空间中部署 zk statefulset
make helm-install-zk-operator
安装 Pinot Cluster
导出 Kubernetes 存储类。
export STORAGE_CLASS_NAME=standard
- 安装 Pinot Cluster
envsubst < examples/00-pinot-basic/pinot-basic.yaml | kubectl apply -f - -n pinot
安装 Kafka 集群并创建主题
- 添加 Helm 仓库并安装 Kafka 集群
# Add Kafka
helm repo add kafka https://charts.bitnami.com/bitnami
# Deploy kafka
helm install -n pinot kafka kafka/kafka --set replicas=1,zookeeper.image.tag=latest
- Kafka Pod 启动并运行后,创建主题
# Add Kafka
helm repo add kafka https://charts.bitnami.com/bitnami
# Deploy kafka
helm install -n pinot kafka kafka/kafka --set replicas=1,zookeeper.image.tag=latest
创建 Pinot 模式
- Pinot 控制平面支持模式的创建。
kubectl apply -f examples/00-pinot-basic/pinotschema-basic.yaml -n pinot
创建比诺表
- Pinot 控制平面支持创建表。
kubectl apply -f examples/00-pinot-basic/pinottable-basic.yaml -n pinot
将数据提取到 Kafka
- 将数据提取到 kafka 主题中
kubectl apply -f examples/00-pinot-basic/pinot-realtime-kafka.yaml
访问 Pinot 控制台
- 通过端口转发控制器 pod 或 svc 访问 pinot 控制台。
kubectl port-forward pinot-controller-controller-0 -n pinot 9000