| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> flink架构设计 -> 正文阅读 |
|
[大数据]flink架构设计 |
1.架构设计
2、运行模式 运模模式核心区分点 集群生命周期和资源隔离保证 经常是指flink on yarn集群模式,yarn也可以换成mesos,Kubernetes(k8s)等资源管理平台替换。
本地运行模式 standalone模式 Flink Session 集群(会话模式) Flink Session 集群也被称为 session 模式下的 Flink 集群。 工作模式 细节描述 如果集群失败,客户端将显示错误。如果客户端被终止,它也会通知集群关闭。 分离模式(-d或–detached) 特点 细节描述 yarn-session.sh客户端将Flink集群提交给YARN,然后客户端返回。 需要再次调用客户端或 YARN 工具来停止 Flink 集群。 工作流程特征说明 多个不同的FlinkJob向同一个Flink Session会话上提交作业,由这一个统一个的FlinkSession管理所有的Flink作业。 工作流程示意图 集群生命周期: 在 Flink Job 集群中,可用的集群管理器(例如 YARN)用于为每个提交的作业启动一个集群,并且该集群仅可用于该作业。在这里客户端首先从集群管理器请求资源启动 JobManager,然后将作业提交给在这个进程中运行的 Dispatcher。然后根据作业的资源请求惰性的分配 TaskManager。一旦作业完成,Flink Job 集群将被拆除。 资源隔离: JobManager 中的致命错误仅影响在 Flink Job 集群中运行的一个作业。 其他注意事项: 由于 ResourceManager 必须应用并等待外部资源管理组件来启动 TaskManager 进程和分配资源,所以其实时计算性并没有session模式强,因此 Flink Job 集群更适合长期运行、具有高稳定性要求且对较长的启动时间不敏感的大型作业。 Flink Job 集群也被称为 job (or per-job) 模式下的 Flink 集群。 工作流程特征说明 多个不同的FlinkJob向各自由统一资源管理器(Yarn)生成的专用Flink Session会话上提交作业,由作业所属的FlinkSession管理自己的Flink作业。 工作流程示意图 Flink Application 集群(应用模式) 集群生命周期: Flink Application 集群是与Flink作业执行直接相关的运行模式,并且 main()方法在集群上而不是客户端上运行。 提交作业是一个单步骤过程: 无需先启动 Flink 集群,然后将作业提交到现有的 session 集群。 而是,将应用程序逻辑和依赖打包成一个可执行的作业 JAR 中,由入口机客户端提交jar包和相关资源到hdfs当中。 然后由调度启动的集群当中JobManager来拉取已由上一步上传完成的运行代码所需要的所有资源。如果有JobManager HA设置的话,将会同时启动多个JobManager作HA保障,此时将面临JobManager的选择,最终由一个胜出的JobManager作为Active进程推进下边的执行。 并由运行JobManager进程的集群入口点节点机器(ApplicationClusterEntryPoint)负责调用 main()方法来提取 JobGraph,即作为用户程序的解析和提交的客户端程序与集群进行交互,直到作业运行完成。 另外,如果一个main()方法中有多个env.execute()/executeAsync()调用,在Application模式下,这些作业会被视为属于同一个应用,在同一个集群中执行(如果在Per-Job模式下,就会启动多个集群) 该模式也允许我们像在 Kubernetes 上部署任何其他应用程序一样部署 Flink 应用程序。 因此,Flink Application 集群的寿命与 Flink 应用程序的寿命有关。 资源隔离: Flink Job 集群可以看做是 Flink Application 集群”客户端运行“的替代方案。 该模式为yarn session和yarn per-job模式的折中选择。 工作流程特征说明 将各个环节更进一步进行专用化处理,相当于每个FlinkJob都有一套专用的服务角色进程。 总结 应用场景 Session模式:集群资源充分、频繁任务提交、小作业居多、实时性要求高的场景。(该模式较少) Per-Job模式:作业少、大作业、实时性要求低的场景。 Application模式:实时性要求不太高、安全性有一定要求均可以使用,普遍适用性最强。 生产环境使用说明 3、运行流程 由两种类型的进程组成,一个 JobManager 和一个或者多个 TaskManager。 工作流程图 补充说明 Client 客户端不是运行时和程序执行的一部分,而是用于准备数据流并将其发送给 JobManager。 提交任务完成之后,Client可以断开连接(分离模式),或保持连接来接收进程报告(附加模式)。 Client可以作为触发执行 Java/Scala 程序的一部分运行,也可以在命令行进程./bin/flink run …中运行。 可以通过多种方式启动 JobManager 和 TaskManager:直接在机器上作为standalone 集群启动、在容器中启动、或者通过YARN或Mesos等资源框架管理并启动。TaskManager 连接到 JobManagers,宣布自己可用,并被分配工作。 actor system 各个角色组件互相通信的消息传递系统中间件。 actor是一种并发编程模型,与另一种模型共享内存完全相反,Actor模型share nothing,即没有任何共享。 所有的线程(或进程)通过消息传递的方式进行合作(通信),这些线程(或进程)称为Actor。 以其简单、高效著称 缺点 纯消息通信,实时性和粒度控制上会略弱于共享内存的方式。 核心组成角色剖析 JobManager JobManager 具有许多与协调 Flink 应用程序的分布式执行有关的职责:它决定何时调度下一个 task(或一组 task)、对完成的 task 或执行失败做出反应、协调 checkpoint、并且协调从失败中恢复等等。这个进程由三个不同的组件组成: ResourceManager ResourceManager 负责 Flink 集群中的资源提供、回收、分配 - 它管理 task slots,这是 Flink 集群中资源调度的最小单位。Flink 为不同的环境和资源提供者(例如 YARN、Mesos、Kubernetes 和 standalone 部署)实现了对应的 ResourceManager。在 standalone 设置中,ResourceManager 只能分配可用 TaskManager 的 slots,而不能自行启动新的 TaskManager。 Dispatcher JobMaster 始终至少有一个 JobManager。高可用(HA)设置中可能有多个 JobManager,其中一个始终是 leader,其他的则是 standby。 TaskManager 必须始终至少有一个 TaskManager。在 TaskManager 中资源调度的最小单位是 task slot。TaskManager 中 task slot 的数量表示并发处理 task 的数量。请注意一个 task slot 中可以执行多个算子。 3.2)Yarn模式提交任务的工作流程 补充说明 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 17:05:05- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |