开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

请大家帮忙看看下面的代码错误如何解决呢?

flink k8s application的jobmanager反亲和,clusterid怎么动态取值啊,有懂的么?${kubernetes.cluster-id},我这么取值不行。584fc129876c4e7c9ddb7814a78caf29.png 这个地方我不想写死,想做成通用的。4998a22cc313a0f458c9e3e871b215cb.png

展开
收起
JWRRR 2023-04-03 15:15:29 289 0
2 条回答
写回答
取消 提交回答
  • 公众号:网络技术联盟站,InfoQ签约作者,阿里云社区签约作者,华为云 云享专家,BOSS直聘 创作王者,腾讯课堂创作领航员,博客+论坛:https://www.wljslmz.cn,工程师导航:https://www.wljslmz.com

    在 Flink 的 Kubernetes 模式下,可以通过设置 JobManager 的反亲和性来避免 JobManager 和 TaskManager 调度到同一个节点上,提高作业的稳定性和可靠性。

    在 Flink 1.12.0 版本及以上的版本中,可以通过在 flink-conf.yaml 文件中设置 cluster.id 参数来动态设置 JobManager 的反亲和性。具体来说,可以在 flink-conf.yaml 文件中添加以下配置:

    high-availability:
      cluster-id: ${FLINK_CLUSTER_ID}
    

    然后,在启动 Flink Kubernetes Application 时,可以通过设置环境变量 FLINK_CLUSTER_ID 来动态设置 cluster.id 参数的值。例如,可以使用以下命令来启动 Flink Kubernetes Application:

    $ kubectl create namespace flink
    $ kubectl create secret generic flink-config-secret \
        --from-file=flink-conf.yaml=./flink-conf.yaml \
        --namespace=flink
    $ kubectl apply -f flink-configuration-configmap.yaml \
        --namespace=flink
    $ kubectl apply -f jobmanager-service.yaml \
        --namespace=flink
    $ kubectl apply -f taskmanager-statefulset.yaml \
        --namespace=flink \
        --env="FLINK_CLUSTER_ID=my-cluster-id"
    

    这里通过设置 FLINK_CLUSTER_ID 环境变量来动态设置 cluster.id 参数的值。可以根据实际情况来设置不同的 FLINK_CLUSTER_ID 值,以避免 JobManager 和 TaskManager 调度到同一个节点上。

    FLINK_CLUSTER_ID 环境变量必须在启动 TaskManager 前设置,否则无法生效。另外,需要确保 flink-conf.yaml 文件中的 cluster.id 参数和 FLINK_CLUSTER_ID 环境变量的值保持一致。

    2023-04-23 22:59:46
    赞同 展开评论 打赏
  • yaml不识别变量赋值。在部署脚本里面加个处理逻辑,每次部署前把指定的app name替换掉就好了。此回答整理自钉群“【③群】Apache Flink China社区”

    2023-04-03 16:48:37
    赞同 展开评论 打赏

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载