跳到主要内容

部署 HDP

部署前置要求

  1. 新建 MySQL 数据库:MDHDP

    1. 登录 MySQL

      /usr/local/mysq/bin/mysql -h 127.0.0.1 -P 3306 -uroot -p123456
    2. 创建数据库:MDHDP

      CREATE DATABASE IF NOT EXISTS MDHDP DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci;
  2. 部署 Flink 服务,参考:Flink 部署文档

    • HDP 功能依赖 Flink 服务,在启用 HDP 功能之前,请确保已成功部署 Flink 服务

    • 如果之前使用数据集成或聚合表功能已部署过 Flink,需要将 Flink 升级到 1.17.1.530

      升级须知

      Flink 版本升级后,存量的数据集成同步任务及聚合表需手动重新启动后方可恢复运行

  3. 下载 HDP 镜像

    在 Kubernetes 集群中所有运行 HAP 微服务的节点上,下载 HDP 镜像

    crictl pull registry.cn-hangzhou.aliyuncs.com/mdpublic/mingdaoyun-hdp:1.0.0

部署 HDP

  1. 在微服务配置文件所在目录下,新建 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
  2. 将 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
  3. 将 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
  4. 将 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
  5. config.yaml 中新增环境变量

    ENV_HDP_ENABLE: "true"
  6. 重启微服务生效