乐趣区

关于数据库:OpenMLDB-基于-Kubernetes-的部署全攻略

简介

Kubernetes 作为以后工业界风行的云原生容器编排和管理工具,在大量我的项目实际中被应用。目前,OpenMLDB 的离线引擎和在线引擎,均曾经残缺反对了基于 Kubernetes 的部署,能够实现更为不便的治理性能。本文将别离介绍离线和在线引擎基于 Kubernetes 的部署攻略。

留神,离线和在线引擎基于 Kubernetes 的部署是两个齐全解耦的部署策略,用户能够别离针对不同的需要,为离线或者在线引擎应用基于 Kubernetes 的部署。除了基于 Kubernetes 部署,离线引擎也反对基于 local 本地模式和基于 yarn 模式进行部署;在线引擎也反对原生的不依赖容器的部署形式。这些部署策略能够在理论场景中灵便混合应用,以满足生产环境需要。

离线引擎应用 Kubernetes 后端

部署治理 Spark 工作的 Operator

请参考 spark-on-k8s-operator 官网文档。以下是应用 Helm 部署到 default 命令空间的命令,能够依据须要批改命令空间以及权限信息。

helm install my-release spark-operator/spark-operator --namespace default --create-namespace --set webhook.enable=true
kubectl create serviceaccount spark --namespace default
kubectl create clusterrolebinding binding --clusterrole=edit --serviceaccount=default:spark

部署胜利后,能够应用 spark-operator 提供的代码示例测试 Spark 工作是否能够失常提交。

HDFS 反对

如果须要配置 Kubernetes 工作读写 HDFS 数据,须要提前准备 Hadoop 配置文件并且创立 ConfigMap。依据须要可批改 ConfigMap 名称和文件门路,创立命令示例如下:

kubectl create configmap hadoop-config --from-file=/tmp/hadoop/etc/

离线引擎配置 Kubernetes 反对

离线引擎的 TaskManager 配置文件中能够指定 Kubernetes 相干配置,相干配置项如下

Config Type Note
spark.master String 可反对”kuberenetes”或”k8s”
offline.data.prefix String 倡议应用 HDFS 门路
k8s.hadoop.configmap String 默认为”hadoop-config”
k8s.mount.local.path String 默认为”/tmp”

如果应用 Kubernetes 运行离线引擎,用户的计算工作会运行在集群上,因而倡议配置离线存储门路为 HDFS 门路,否则可能导致工作读写数据失败。TaskManager 配置文件相干项的配置示例如下:

offline.data.prefix=hdfs:///foo/bar/

Note: OpenMLDB 离线引擎的 TaskManager 的残缺配置文件可参考:https://openmldb.ai/docs/zh/main/deploy/conf.html#taskmanager…

工作提交和治理

配置 TaskManager 和 Kubernetes 后,可在命令行提交离线工作,用法与 Local 或 Yarn 模式一样,不仅能够在 SQL 命令行客户端中应用,也能够通过各种语言的 SDK 中应用。

例如提交数据导入工作:

LOAD DATA INFILE 'hdfs:///hosts' INTO TABLE db1.t1 OPTIONS(delimiter = ',', mode='overwrite');

查看 Hadoop ConfigMap 内容:

kubectl get configmap hdfs-config -o yaml

查看 Spark 工作以及 Pod 内容和日志:

kubectl get SparkApplicationkubectl get pods

在线引擎基于 Kubernetes 部署

我的项目仓库

在线引擎基于 Kubernetes 的部署计划作为一个独自的部署工具对 OpenMLDB 进行反对,其源代码仓库地址为:https://github.com/4paradigm/openmldb-k8s

要求

本部署工具提供 OpenMLDB 在线引擎基于 Kubernetes 的部署计划,基于 Helm Charts 实现。在以下版本通过测试(其余低版本未验证):

  • Kubernetes 1.19+
  • Helm 3.2.0+

另外,如果用户应用 Docker Hub 上的预编译 OpenMLDB 镜像,目前仅反对 OpenMLDB >= 0.8.2。用户也能够通过咱们的工具本人制作其余版本的 OpenMLDB 镜像(见章节“镜像制作工具”)。

筹备工作:部署 ZooKeeper

如果用户曾经有可用的 ZooKeeper,可跳过此步。否则进行装置:

helm install zookeeper oci://registry-1.docker.io/bitnamicharts/zookeeper --set persistence.enabled=false

如果要把数据长久化,能够指定已创立的 storage class

helm install zookeeper oci://registry-1.docker.io/bitnamicharts/zookeeper --set persistence.storageClass=local-storage

更多对于 ZooKeeper 的参数设置参考这里

部署 OpenMLDB

下载 repo 源代码

下载本 repo 源代码,并且将后续工作目录设置在本 repo 的根目录:

git clone https://github.com/4paradigm/openmldb-k8s.git
cd openmldb-k8s

配置 ZooKeeper 地址

批改 charts/openmldb/conf/tablet.flags 和 charts/openmldb/conf/nameserver.flags 文件中 zk_cluster 为理论 ZooKeeper 地址,其默认 zk_root_path/openmldb

部署 OpenMLDB

应用 Helm 基于如下命令,能够进行一键化部署:

helm install openmldb ./charts/openmldb

用户能够通过 --set 命令设置更多的部署选项(比方 OpenMLDB 的正本数等),具体反对的选项查看 OpenMLDB Chart 配置文档。

其中比拟重要的配置项须要留神:

  • 默认应用临时文件保留数据,因而当 pod 重启后数据会失落。举荐通过如下形式绑定 pvc 到指定 storageclass
helm install openmldb ./charts/openmldb --set persistence.dataDir.enabled=true --set  persistence.dataDir.storageClass=local-storage
  • 默认应用 Docker Hub 上的 4pdosc/openmldb-online 镜像(仅反对 OpenMLDB >= 0.8.2),如果要用本人的镜像,能够在 install 时通过 --set image.openmldbImage 来指定应用的镜像名称。能够应用咱们的镜像制作工具来制作本地镜像。
helm install openmldb ./charts/openmldb --set image.openmldbImage=openmldb-online:0.8.2

注意事项

  • 部署的 OpenMLDB 服务只能在 Kubernetes 外部同一个 namespace 下拜访
  • 通过此形式部署的 OpenMLDB 集群没有部署 TaskManager 模块,所以不能用 LOAD DATA 和 SELECT INTO 语句,也不能应用离线相干性能。如果要将数据导入到 OpenMLDB 能够应用 OpenMLDB 的在线导入工具、OpenMLDB Connector 或者 SDK。如果要导出表的数据,能够应用在线数据导出工具。
  • 如果要上生产环境,须要在 Kubernetes 部署 tablet 的物理节点上敞开 THP,否则可能存在删除的表内存不能齐全开释问题。敞开形式参考这里

镜像制作工具

部署默认将会应用 Docker Hub 上的 OpenMLDB 镜像,用户也能够本人制作本地镜像。镜像制作工具是位于代码仓库(https://github.com/4paradigm/openmldb-k8s)下的脚本 docker/build.sh

该脚本反对两个参数:

  • 第一个参数为 OpenMLDB 版本号。
  • 第二个参数是 OpenMLDB 部署包的源,默认是从中国大陆镜像地址拉取,如果要从 GitHub 拉取能够设置第二个参数为 github

比方:

cd docker
sh build.sh 0.8.2

相干浏览

  • OpenMLDB 官网:https://openmldb.ai/
  • OpenMLDB GitHub 主页:https://github.com/4paradigm/OpenMLDB
  • OpenMLDB 文档 https://openmldb.ai/docs/zh/
  • OpenMLDB 微信交换群:
退出移动版