部署 HDP
部署前置要求
-
新建 MySQL 数据库:MDHDP
-
登录 MySQL
/usr/local/mysq/bin/mysql -h 127.0.0.1 -P 3306 -uroot -p123456 -
创建数据库:
MDHDPCREATE DATABASE IF NOT EXISTS MDHDP DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci;
-
-
如果已开启 MongoDB 需认证连接,则需要手动创建
mdhdp数据库,参考 如何新建 MongoDB 数据库 -
请提前启用聚合表功能,参考 如何开启聚合表功能
-
部署 Flink 服务,参考:Flink 部署文档
-
HDP 功能依赖 Flink 服务,在启用 HDP 功能之前,请确保已成功部署 Flink 服务
-
如果之前使用数据集成或聚合表功能已部署过 Flink,需要将 Flink 升级到 1.19.720
升级须知Flink 版本升级后,存量的数据集成同步任务及聚合表需手动重新启动后方可恢复运行
- Flink 集群模式:跨版本升级指南
-
-
下载 HDP 镜像
在 Kubernetes 集群中所有运行 HAP 微服务的节点上,下载 HDP 镜像
- 服务器支持访问互联网
- 服务器不支持访问互联网
crictl pull registry.cn-hangzhou.aliyuncs.com/mdpublic/mingdaoyun-hdp:1.1.0离线镜像文件下载链接,下载完成后上传到部署服务器
https://pdpublic.mingdao.com/private-deployment/offline/mingdaoyun-hdp-linux-amd64-1.1.0.tar.gz在服务器上解压离线镜像
gunzip -d mingdaoyun-hdp-linux-amd64-1.1.0.tar.gz导入解压后的离线镜像
ctr -n k8s.io image import mingdaoyun-hdp-linux-amd64-1.1.0.tar
部署 HDP
-
在微服务配置文件所在目录下,新建
hdp.yaml文件,内容如下:apiVersion: apps/v1kind: Deploymentmetadata:name: hdpwwwnamespace: defaultspec:replicas: 1selector:matchLabels:app: hdpwwwtemplate:metadata:labels:app: hdpwwwannotations:md-update: "20240123163208"spec:containers:- name: hdpwwwimage: registry.cn-hangzhou.aliyuncs.com/mdpublic/mingdaoyun-hdp:1.1.0env:- name: ENV_SERVERIDvalue: "single:hdpwww"resources:limits:cpu: "4"memory: 8096Mirequests:cpu: "0.01"memory: 64MireadinessProbe:tcpSocket:port: 8380initialDelaySeconds: 10periodSeconds: 10livenessProbe:tcpSocket:port: 8380initialDelaySeconds: 180periodSeconds: 10---apiVersion: v1kind: Servicemetadata:name: hdpwwwnamespace: defaultspec:selector:app: hdpwwwports:- name: http-hdpwwwport: 8380targetPort: 8380---apiVersion: apps/v1kind: Deploymentmetadata:name: hdpapinamespace: defaultspec:replicas: 1selector:matchLabels:app: hdpapitemplate:metadata:labels:app: hdpapiannotations:md-update: "20240123163208"spec:containers:- name: hdpapiimage: registry.cn-hangzhou.aliyuncs.com/mdpublic/mingdaoyun-hdp:1.1.0env:- name: ENV_SERVERIDvalue: "single:hdpapi"resources:limits:cpu: "4"memory: 8096Mirequests:cpu: "0.01"memory: 64MireadinessProbe:tcpSocket:port: 8365initialDelaySeconds: 10periodSeconds: 10livenessProbe:tcpSocket:port: 8365initialDelaySeconds: 180periodSeconds: 10---apiVersion: v1kind: Servicemetadata:name: hdpapinamespace: defaultspec:selector:app: hdpapiports:- name: http-hdpapiport: 8365targetPort: 8365 -
将 HDP 的启动命令添加至微服务启动脚本
start.sh中kubectl apply -f $baseDir/hdp.yaml修改后的
start.sh脚本如下:baseDir=$(dirname $0)kubectl apply -f $baseDir/config.yamlsleep 30kubectl apply -f $baseDir/service.yamlkubectl apply -f $baseDir/hdp.yaml # 新增本行kubectl apply -f $baseDir/computinginstance.yamlsleep 180kubectl apply -f $baseDir/www.yaml -
将 HDP 的停止命令添加至微服务停止脚本
stop.sh中kubectl delete -f $baseDir/hdp.yaml修改后的
stop.sh脚本如下:baseDir=$(dirname $0)kubectl delete -f $baseDir/www.yamlkubectl delete -f $baseDir/service.yamlkubectl delete -f $baseDir/hdp.yaml # 新增本行kubectl delete -f $baseDir/computinginstance.yamlkubectl delete -f $baseDir/config.yaml -
将 HDP 的重启命令添加至微服务重启脚本
restart.sh中sed -r -i "/md-update:/ s/([[:digit:]]+)/$RESTART_DATATIME/" $baseDir/hdp.yaml修改后的
restart.sh脚本如下:RESTART_DATATIME=$(date +%Y%m%d%H%M%S)baseDir=$(dirname $0)sed -r -i "/md-update:/ s/([[:digit:]]+)/$RESTART_DATATIME/" $baseDir/config.yamlsed -r -i "/md-update:/ s/([[:digit:]]+)/$RESTART_DATATIME/" $baseDir/service.yamlsed -r -i "/md-update:/ s/([[:digit:]]+)/$RESTART_DATATIME/" $baseDir/hdp.yaml # 新增本行sed -r -i "/md-update:/ s/([[:digit:]]+)/$RESTART_DATATIME/" $baseDir/datapipeline.yamlsed -r -i "/md-update:/ s/([[:digit:]]+)/$RESTART_DATATIME/" $baseDir/wps.yaml# Commenting out the update of computinginstance.yaml# sed -r -i "/md-update:/ s/([[:digit:]]+)/$RESTART_DATATIME/" $baseDir/computinginstance.yamlsed -r -i "/md-update:/ s/([[:digit:]]+)/$RESTART_DATATIME/" $baseDir/www.yaml# Final message indicating a rolling restartecho "Performing rolling restart for all services..."/bin/bash $baseDir/start.sh -
在
config.yaml中新增环境变量ENV_HDP_ENABLE: "true"如果 MySQL 为 MGR 模式,请补充以下配置
如果 MySQL 部署为 MGR 模式,则需要在 HAP 微服务的
config.yaml文件中额外配置以下用于连接 MySQL Router 的环境变量:ENV_HDP_MYSQL_HOST: "192.168.10.21"ENV_HDP_MYSQL_PORT: "6446"ENV_HDP_MYSQL_USERNAME: "root"ENV_HDP_MYSQL_PASSWORD: "123456"其中
ENV_HDP_MYSQL_HOST只需填写任意一个 Router 的 IP,ENV_HDP_MYSQL_PORT默认为6446(Router 读写端口),账号和密码填写实际可用的连接信息。 -
重启微服务生效