码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Flink 运行架构和核心概念


    Flink 运行架构和核心概念

    几个角色的作用:

    • 客户端:提交作业
    • JobManager进程 任务管理调度
      • JobMaster线程 一个job对应一个JobMaster 负责处理单个作业
      • ResourceManager 资源的分配和管理,资源就是任务槽
      • 分发器 提交应用,为每一个新提交的作业启动一个新的JobMaster 组件
    • TaskManager 处理数据,每个TaskManager 都包含一定的slots

    在这里插入图片描述

    作业提交过程(Standlone)

    1. 提交作业到客户端
    2. 客户端解析参数 提交任务到JobManager
    3. JobManager通过分发器启动并提交应用(作业图 JobGraph),一个作业对应一个JobMaster
    4. JobMaster 将作业图 解析为可执行的执行图 Execution Graph,得到所需要的资源数,向资源管理器请求slots
    5. 资源管理器 向TaskManager请求资源 也就是slots
    6. TaskManager 会向资源管理器注册自己的任务槽,并提供
    7. JobMaster 分发任务给TaskManager

    核心概念

    并行度

    特定算子子任务的个数。

    设置有三种方式

    • 代码中设置

    stream.map(word -> Tuple2.of(word, 1L)).setParallelism(2);

    • 提交应用时设置 全局设置

    bin/flink run –p 2 –c com.atguigu.wc.SocketStreamWordCount

    ./FlinkTutorial-1.0-SNAPSHOT.jar

    • 配置文件中设置

    在这里插入图片描述

    算子

    算子有两种

    • 一对一 类似于窄依赖
    • 重分区 类似于shuffle

    并行度相同的 一对一的算子可以合并 成为 算子链

    // 禁用算子链

    .map(word -> Tuple2.of(word, 1L)).disableChaining();

    // 从当前算子开始新链

    .map(word -> Tuple2.of(word, 1L)).startNewChain()

    任务槽

    TaskManager所分配的特定的资源(内存)

    任务槽数量的设置,在配置文件中 默认的数量是1

    taskmanager.numberOfTaskSlots: 8

    任务槽只是隔离内存 不隔离cpu所以 一般会把任务槽的数量设置为cpu的核数,避免不同任务对cpu的争抢。

    同一个作业中的不同任务节点的并行子任务,可以放到同一个slot中执行

    任务槽和并行度的关系:

    占用任务槽的数量等于作业的最大并行度。

    参考资料:25_Flink运行时架构_核心概念_并行度设置&优先级_哔哩哔哩_bilibili

  • 相关阅读:
    springboot证书管理系统的设计与实现毕业设计源码162317
    【Vue-Element-Admin】table添加自定义索引
    对最近火热的“DevOps已死”的回应
    配置ssh免密登陆:客户端主机通过redhat用户基于秘钥验证方式进行远程连接服务器的root用户
    解决类重复的问题
    java设计模式之观察者设计模式的前世今生
    vue-router4之路由的跳转
    创建一个新的IDEA插件项目
    CSS:结构伪类选择器(选择子元素)、伪元素、标准流、浮动、清除浮动
    net core天马行空系列-微服务篇:全声明式http客户端feign快速接入微服务中心nacos
  • 原文地址:https://blog.csdn.net/weixin_47467016/article/details/134520204
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号