首页
/ Apache Pinot在Kubernetes上的Helm部署指南

Apache Pinot在Kubernetes上的Helm部署指南

2025-07-08 02:35:39作者:范靓好Udolf

概述

Apache Pinot是一个实时分布式OLAP数据存储系统,专为低延迟分析查询而设计。本文将详细介绍如何使用Helm在Kubernetes集群上快速部署Pinot系统,涵盖从集群准备到实际部署的全过程。

环境准备

基础工具要求

在开始部署前,需要确保已安装以下工具:

  1. kubectl:Kubernetes命令行工具
  2. Helm:Kubernetes包管理工具
  3. 配置好的kubectl连接至目标Kubernetes集群

可选集群搭建

如果还没有可用的Kubernetes集群,可以选择在主流云平台上创建:

AWS EKS集群创建

  1. 安装必要工具:

    • AWS CLI
    • AWS IAM Authenticator
    • eksctl
  2. 使用eksctl创建集群示例命令:

eksctl create cluster \
--name pinot-quickstart \
--version 1.14 \
--region us-west-2 \
--nodegroup-name standard-workers \
--node-type t3.small \
--nodes 3 \
--nodes-min 3 \
--nodes-max 4 \
--node-ami auto

GKE集群创建

  1. 安装Google Cloud SDK
  2. 执行setup_gke.sh脚本创建集群

Azure AKS集群创建

  1. 安装Azure CLI
  2. 创建资源组和集群

Pinot集群部署

Helm依赖更新

helm dependency update

部署Pinot集群

对于Helm v3用户:

kubectl create ns pinot-quickstart
helm install pinot -n pinot-quickstart .

验证部署状态

kubectl get all -n pinot-quickstart

实时数据处理配置

Kafka集群部署

helm repo add incubator https://charts.helm.sh/incubator
helm install -n pinot-quickstart kafka incubator/kafka --set replicas=1

创建Kafka主题

kubectl -n pinot-quickstart exec kafka-0 -- kafka-topics.sh --bootstrap-server kafka-0:9092 --topic flights-realtime --create --partitions 1 --replication-factor 1

加载数据并创建Pinot表

kubectl apply -f pinot-realtime-quickstart.yml

数据查询

执行端口转发并访问查询控制台:

./query-pinot-data.sh

配置参数详解

以下是Pinot Helm Chart的主要可配置参数:

参数 描述 默认值
image.repository Pinot容器镜像仓库 apachepinot/pinot
cluster.name 集群名称 pinot-quickstart
controller.replicaCount Controller副本数 1
controller.persistence.enabled 是否启用持久化存储 true
controller.jvmOpts JVM参数 详见默认值
controller.external.enabled 是否外部暴露 true

最佳实践建议

  1. 生产环境建议:

    • 增加Controller副本数
    • 配置合适的持久化存储大小
    • 根据数据量调整JVM参数
  2. 性能调优:

    • 根据查询模式调整segment配置
    • 合理设置副本数保证高可用
  3. 监控建议:

    • 配置Prometheus监控
    • 设置合理的告警规则

故障排除

常见问题及解决方案:

  1. Tiller相关问题:
kubectl -n kube-system delete deployment tiller-deploy
helm init --service-account tiller
  1. 权限问题:
kubectl apply -f helm-rbac.yaml