部署 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;
-
-
部署 Flink 服务,参考:Flink 部署文档
-
HDP 功能依赖 Flink 服务,在启用 HDP 功能之前,请确保已成功部署 Flink 服务
-
如果之前使用数据集成或聚合表功能已部署过 Flink,需要将 Flink 升级到 1.17.1.530
升级须知Flink 版本升级后,存量的数据集成同步任务及聚合表需手动重新启动后方可恢复运行
- Flink 集群模式:跨版本升级指南
-
-
下载 HDP 镜像
在 Kubernetes 集群中所有运行 HAP 微服务的节点上,下载 HDP 镜像
- 服务器支持访问互联网
- 服务器不支持访问互联网
crictl pull registry.cn-hangzhou.aliyuncs.com/mdpublic/mingdaoyun-hdp:1.0.0离线镜像文件下载链接,下载完成后上传到部署服务器
https://pdpublic.mingdao.com/private-deployment/offline/mingdaoyun-hdp-linux-amd64-1.0.0.tar.gz在服务器上解压离线镜像
gunzip -d mingdaoyun-hdp-linux-amd64-1.0.0.tar.gz导入解压后的离线镜像
ctr -n k8s.io image import mingdaoyun-hdp-linux-amd64-1.0.0.tar
部署 HDP
-
在微服务配置文件所在目录下,新建
hdp.yaml文件,内容如下:apiVersion: apps/v1
kind: Deployment
metadata:
name: hdpwww
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: hdpwww
template:
metadata:
labels:
app: hdpwww
annotations:
md-update: "20240123163208"
spec:
containers:
- name: hdpwww
image: registry.cn-hangzhou.aliyuncs.com/mdpublic/mingdaoyun-hdp:1.0.0
env:
- name: ENV_SERVERID
value: "single:hdpwww"
resources:
limits:
cpu: "4"
memory: 8096Mi
requests:
cpu: "0.01"
memory: 64Mi
readinessProbe:
tcpSocket:
port: 8380
initialDelaySeconds: 10
periodSeconds: 10
livenessProbe:
tcpSocket:
port: 8380
initialDelaySeconds: 180
periodSeconds: 10
---
apiVersion: v1
kind: Service
metadata:
name: hdpwww
namespace: default
spec:
selector:
app: hdpwww
ports:
- name: http-hdpwww
port: 8380
targetPort: 8380
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: hdpapi
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: hdpapi
template:
metadata:
labels:
app: hdpapi
annotations:
md-update: "20240123163208"
spec:
containers:
- name: hdpapi
image: registry.cn-hangzhou.aliyuncs.com/mdpublic/mingdaoyun-hdp:1.0.0
env:
- name: ENV_SERVERID
value: "single:hdpapi"
resources:
limits:
cpu: "4"
memory: 8096Mi
requests:
cpu: "0.01"
memory: 64Mi
readinessProbe:
tcpSocket:
port: 8365
initialDelaySeconds: 10
periodSeconds: 10
livenessProbe:
tcpSocket:
port: 8365
initialDelaySeconds: 180
periodSeconds: 10
---
apiVersion: v1
kind: Service
metadata:
name: hdpapi
namespace: default
spec:
selector:
app: hdpapi
ports:
- name: http-hdpapi
port: 8365
targetPort: 8365 -
将 HDP 的启动命令添加至微服务启动脚本
start.sh中kubectl apply -f $baseDir/hdp.yaml修改后的
start.sh脚本如下:baseDir=$(dirname $0)
kubectl apply -f $baseDir/config.yaml
sleep 30
kubectl apply -f $baseDir/service.yaml
kubectl apply -f $baseDir/hdp.yaml # 新增本行
kubectl apply -f $baseDir/computinginstance.yaml
sleep 180
kubectl apply -f $baseDir/www.yaml -
将 HDP 的停止命令添加至微服务停止脚本
stop.sh中kubectl delete -f $baseDir/hdp.yaml修改后的
stop.sh脚本如下:baseDir=$(dirname $0)
kubectl delete -f $baseDir/www.yaml
kubectl delete -f $baseDir/service.yaml
kubectl delete -f $baseDir/hdp.yaml # 新增本行
kubectl delete -f $baseDir/computinginstance.yaml
kubectl 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.yaml
sed -r -i "/md-update:/ s/([[:digit:]]+)/$RESTART_DATATIME/" $baseDir/service.yaml
sed -r -i "/md-update:/ s/([[:digit:]]+)/$RESTART_DATATIME/" $baseDir/hdp.yaml # 新增本行
sed -r -i "/md-update:/ s/([[:digit:]]+)/$RESTART_DATATIME/" $baseDir/datapipeline.yaml
sed -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.yaml
sed -r -i "/md-update:/ s/([[:digit:]]+)/$RESTART_DATATIME/" $baseDir/www.yaml
# Final message indicating a rolling restart
echo "Performing rolling restart for all services..."
/bin/bash $baseDir/start.sh -
在
config.yaml中新增环境变量ENV_HDP_ENABLE: "true" -
重启微服务生效