了解如何在 Kube.NETes 上安裝 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