15 分鐘內(nèi),在 Kubernetes 上設(shè)置 Apache Pinot
了解如何在 Kubernetes 上安裝 Pinot Control Plane,配置您的第一個(gè) Pinot 集群,并深入了解控制平面功能。
作為一名經(jīng)驗(yàn)豐富的專(zhuān)業(yè)人士,我作為 Apache Druid k8s operator 的維護(hù)者獲得了豐富的經(jīng)驗(yàn),并且與人合著并致力于各種 k8s operators/庫(kù)。通過(guò)我的經(jīng)驗(yàn),我認(rèn)識(shí)到需要建立特定于應(yīng)用程序的控制平面,以促進(jìn)大數(shù)據(jù)在 Kubernetes 上的順利運(yùn)行。
在我過(guò)去的角色中,我為 RillData 的 Druid、Startree 的 Pinot 和 Chistadata 的 Clickhouse 構(gòu)建了 Kubernetes 控制平面。在所有三個(gè) OLAP 商店工作之后,我現(xiàn)在完全致力于我的最新企業(yè) DataInfra,該公司專(zhuān)注于構(gòu)建高效的控制平面,使數(shù)據(jù)能夠在 Kubernetes 上無(wú)縫運(yùn)行。
為什么 Pinot 的控制平面?
我們相信 Kubernetes 可以作為任何應(yīng)用程序的控制平面,包括那些具有數(shù)據(jù)和狀態(tài)集的應(yīng)用程序。雖然 Helm 圖表對(duì)配置管理很有用,但它們不維護(hù)應(yīng)用程序的狀態(tài)。這就是我們基于 Kubernetes 操作符模式構(gòu)建控制平面的原因,它充當(dāng)您的應(yīng)用程序需求和 Kubernetes 基礎(chǔ)設(shè)施之間的橋梁。
k8s 的 Pinot 控制平面專(zhuān)門(mén)設(shè)計(jì)用于改善運(yùn)行 Apache Pinot 集群的用戶(hù)體驗(yàn)。作為一個(gè)分布式數(shù)據(jù)庫(kù),如果沒(méi)有合適的工具,Pinot 很難在 Kubernetes 上運(yùn)行。我們的項(xiàng)目基于DSOI 規(guī)范,并使用Operator-Runtime庫(kù)構(gòu)建,以提供更加用戶(hù)友好和 Kubernetes 友好的體驗(yàn)。
本項(xiàng)目基于 Kubernetes 算子模式,但不限于此模式。鑒于 Pinot 的復(fù)雜性,僅依靠 Kubernetes 運(yùn)營(yíng)商可能不足以有效管理其運(yùn)營(yíng)。我們對(duì)該項(xiàng)目的愿景是創(chuàng)建一套全面的工具和實(shí)用程序,以實(shí)現(xiàn) Pinot 在 Kubernetes 上的無(wú)縫部署和操作。
安裝 Pinot 控制平面
Pinot 控制平面支持基于Helm Chart 的部署。要安裝圖表,請(qǐng)運(yùn)行以下命令。我們將使用 Makefile 命令來(lái)引導(dǎo)控制平面。
- 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
導(dǎo)出 Kubernetes 存儲(chǔ)類(lèi)。
export STORAGE_CLASS_NAME=standard
- 安裝 Pinot Cluster
envsubst < examples/00-pinot-basic/pinot-basic.yaml | kubectl apply -f - -n pinot
安裝 Kafka 集群并創(chuàng)建主題
- 添加 Helm 倉(cāng)庫(kù)并安裝 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 啟動(dòng)并運(yùn)行后,創(chuàng)建主題
# 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
創(chuàng)建 Pinot 模式
- Pinot 控制平面支持模式的創(chuàng)建。
kubectl apply -f examples/00-pinot-basic/pinotschema-basic.yaml -n pinot
創(chuàng)建比諾表
- Pinot 控制平面支持創(chuàng)建表。
kubectl apply -f examples/00-pinot-basic/pinottable-basic.yaml -n pinot
將數(shù)據(jù)提取到 Kafka
- 將數(shù)據(jù)提取到 kafka 主題中
kubectl apply -f examples/00-pinot-basic/pinot-realtime-kafka.yaml
訪(fǎng)問(wèn) Pinot 控制臺(tái)
- 通過(guò)端口轉(zhuǎn)發(fā)控制器 pod 或 svc 訪(fǎng)問(wèn) pinot 控制臺(tái)。
kubectl port-forward pinot-controller-controller-0 -n pinot 9000