• Flink on Yarn和k8s


    Yarn 架构

    下图为作业提交到yarn的交互流程:

    XK6pd0.md.png

    组件列表

    • ResourceManager (RM):ResourceManager (RM) 负责处理客户端请求、启动 / 监控 ApplicationMaster、监控 NodeManager、资源的分配与调度,包含 Scheduler 和 Applications Manager
    • ApplicationMaster (AM):ApplicationMaster (AM)运行在 Slave 上,负责数据切分、申请资源和分配、任务监控和容错
    • NodeManager (NM):NodeManager (NM)运行在 Slave 上,用于单节点资源管理、AM/RM通信以及汇报状态
    • Container:Container 负责对资源进行抽象,包括内存、CPU、磁盘,网络等资源

    PerJob与Session对比

    Flink作业提交到yarn有两种模式:

    1. perJob
    2. session

    XK6ZLR.png

    两者区别图

    XK6MFK.md.png

    Flink perjob 提交流程

    XK63Se.md.png

    Flink on yarn session 提交流程

    Session 模式和 Per Job 模式的应用场景不一样。Per Job 模式比较适合那种对启动时间不敏感,运行时间较长的任务。

    Seesion 模式适合短时间运行的任务,一
    般是批处理任务。若用 Per Job 模式去运行短时间的任务,那就需要频繁的申请资源,运行结束后,还需要资源释放,下次还需再重新申请资源才能运行。显然,这种任务会频繁启停的情况不适用于 Per Job 模式,更适合用 Session 模式。

    Yarn 优缺点

    优点:

    • 资源的统一管理和调度
    • 资源隔离
    • 自动 failover 处理

    缺点:

    • 运维部署成本较高
    • 灵活性不够

    XK6Ok6.md.png

    整个交互的流程比较简单,用户往 Kubernetes 集群提交定义好的资源描述文件即可,例如 deployment、configmap、service 等描述。后续的事情就交给Kubernetes 集群自动完成。Kubernetes 集群会按照定义好的描述来启动 pod,运行用户程序。各个组件的具体工作如下:

    • Service: 通过标签 (label selector) 找到 job manager 的 pod 暴露服务。
    • Deployment:保证 n 个副本的 container 运行 JM/TM,应用升级策略。
    • ConfigMap:在每个 pod 上通过挂载 /etc/flink 目录,包含 flink-conf.yaml内容。

    QA

    Q: Flink 在 K8s 上可以通过 Operator 方式提交任务吗?

    目前 Flink 官方还没有提供 Operator 的方式,Lyft 公司开源了自己的 Operator 实现:https://github.com/lyft/flinkk8soperator。

    Q: 在 K8s 集群上如果不使用 Zookeeper 有没有其他高可用(HA)的方案?

    Etcd 是一个类似于 Zookeeper 的高可用键值服务,目前 Flink 社区正在
    考 虑 基 于 Etcd 实 现 高 可 用 的 方 案(https://issues.apache.org/jira/browse/
    FLINK-11105)以及直接依赖 K8s API 的方案(https://issues.apache.org/jira/
    browse/FLINK-12884)。

    Q: Flink on K8s 在任务启动时需要指定 TaskManager 的个数,有和 Yarn
    一样的动态资源申请方式吗?

    Flink on K8s 目前的实现在任务启动前就需要确定好 TaskManager 的个数,
    这样容易造成 TM 指定太少,任务无法启动,或者指定的太多,造成资源浪费。社区
    正在考虑实现和 Yarn 一样的任务启动时动态资源申请的方式。这是一种和 K8s 结
    合的更为 Nativey 的方式,称为 Active 模式。Active 意味着 ResourceManager
    可以直接向 K8s 集群申请资源。具体设计方案和进展请关注:
    https://issues.apache.org/jira/browse/FLINK-9953

    Reference

    1. https://developer.aliyun.com/article/749536
    2. https://toutiao.io/posts/d1ox8p/preview
  • 相关阅读:
    免费下载 80多种的微软推出入门级 .NET视频
    和付费网盘说再见,自己搭建个人网盘(Java 开源项目)
    JS惰性删除和定时删除可过期的localStorage缓存,或sessionStorage缓存
    docker——系列文章
    Bash 脚本教程
    Sublime text3里 修改TAB键为缩进为四个空格
    百度网盘不限速,直接获取直链
    技术党适合做浏览器首页的网站
    常用电脑软件
    有哪些开源的 Python 库让你相见恨晚?
  • 原文地址:https://www.cnblogs.com/bigdata1024/p/16322455.html
Copyright © 2020-2023  润新知