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

集群模式下 flink 如果是k8s 的application的话还支持这样吗?

集群模式下 flink 可以通过-C 指定额外的外部包启动,如果是k8s 的application的话还支持这样吗?

展开
收起
真的很搞笑 2023-11-30 13:08:16 58 0
2 条回答
写回答
取消 提交回答
  • 你的source数据是反序列化后的字符串,一条数据可以绑定一个Bussinesskey(如订单id)吗?如果可以,那么可以根据这个key进行keyby,这样能扩并行度,且统一业务key的数据在一个并行度来保证分区有序,此回答整理自钉群“【③群】Apache Flink China社区”

    2023-11-30 21:44:48
    赞同 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    在 Apache Flink 的 Kubernetes (k8s) 集成中,你可以使用 Application 模式来部署你的作业。在这个模式下,Flink 任务是作为一个独立的 Kubernetes 应用程序来运行的。

    对于额外依赖包的管理,在 k8s 中,你有多种方式将外部库或依赖项包含到你的应用中:

    1. 构建自定义 Docker 镜像:这是最常见的做法。你可以基于官方的 Flink Docker 镜像,然后添加自己的应用程序和依赖库,并重新构建一个新的镜像。这样,当你在 k8s 上启动 Flink 作业时,会使用这个包含了所有所需依赖的自定义镜像。

    2. 使用 initContainers:Kubernetes 提供了 initContainers 功能,可以在主容器(即 Flink 运行的容器)启动之前执行一些初始化操作,例如下载并安装额外的依赖。这种方法允许你在不修改基础镜像的情况下动态地添加依赖。

    3. 挂载卷:如果你的依赖文件存储在一个共享的网络文件系统或者云存储上,你可以将这些文件挂载到 Flink 容器中,使得容器能够访问到这些依赖。

    4. 使用 ConfigMaps 和 Secrets:Kubernetes 的 ConfigMaps 和 Secrets 可以用来存储配置信息和敏感数据,如密钥和证书。虽然它们通常不用于存储大型的二进制文件,但可以考虑将小的依赖文件存储为 ConfigMap 或 Secret,并在 Flink 容器中挂载它们。

    总之,在 Kubernetes 的 Application 模式下,你需要采用上述方法之一来处理额外的外部包,而不是直接通过 -C 参数指定。这是因为 -C 参数是在本地环境中的 CLI 工具 ./bin/flink run 命令中使用的,而 Kubernetes 环境中并没有类似的机制。

    2023-11-30 13:14:54
    赞同 展开评论 打赏

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

相关产品

  • 实时计算 Flink版
  • 相关电子书

    更多
    ACK 云原生弹性方案—云原生时代的加速器 立即下载
    ACK集群类型选择最佳实践 立即下载
    企业运维之云原生和Kubernetes 实战 立即下载

    相关镜像