郑州做网站哪家好,基金从业培训网站,电子书网站 跟我学做家常菜800,网上哪里有辅导高考生做难题的网站前言 今天是Flink学习的第二天#xff0c;我的心情异常的复杂哈哈哈#xff08;苦笑#xff09;#xff0c;学习上还是比较顺利的#xff0c;感情上我并不擅长#xff0c;所以心情波动大在所难免。害#xff0c;至少还有学习让我不被各种糟糕琐碎的日常生活里的人和事所…前言 今天是Flink学习的第二天我的心情异常的复杂哈哈哈苦笑学习上还是比较顺利的感情上我并不擅长所以心情波动大在所难免。害至少还有学习让我不被各种糟糕琐碎的日常生活里的人和事所影响。 不管是学习还是生活保持积极的心态很重要不要好高骛远不要想着遥远的目标不敢去努力。
今天摘录《解忧杂货店》的一句话 如果自己不想积极认真地生活不管得到什么样的回答都没用。 Flink 提交 Job 的方式
1、Web 端提交 Job
Web UI 的方式就不做介绍了完全傻瓜式的点击。无非就是需要添加4个参数
入口类的全限定名。并行度不能超过可用资源我们的并行度也就是我们 Flink 集群中任务槽的个数Task Slots默认一个TaskManager 一个任务槽Task Slot。运行时的参数。检查点的目录这两里的检查点的概念类似于我们 Spark 中的 checkPoint 他们都是用来解决预防实时任务失败或关闭重启造成的数据丢失所以设置一个检查点来对之前的数据进行恢复那必然是需要额外的资源开销的比如磁盘开销。
至于取消任务UI 端有一个大大的 Cancel。
2、命令行提交 Job
$ bin/flink run -m hadoop102:8081 -c com.study.lyh.wc.StreamWordCount ./FlinkStudy-1.0-SNAPSHOT.jar如果资源不足再提交一个任务会使用默认最低的并行度但要是最低的并行度也不能满足就直接任务失败。除非上一个任务结束释放资源。
$ bin/flink cancel jobId
部署模式
Flink 一共有三种部署模式会话模式、单作业模式和应用模式。
1、会话模式 会话模式是先启动集群然后客户端将用户的程序代码转换成数据流图Dataflow Graph并最终生成作业图JobGraph然后一并发送给JobManager作业提交后JobManager 为作业分配相应的资源作业完成就释放资源而集群并不因为没有作业就关闭。 当然缺点也是显而易见的因为资源是共享的所以资源不够了提交新的作业就会失败。另外同一个 TaskManager 上可能运行了很多作业如果其中一个发生故障导致 TaskManager 宕机那么所有作业都会受到影响因为当作业很多的时候我们的资源TaskSlot被占满了所以当有TaskManager节点宕机时就无法保证容错因为已经没有空闲资源供使用了而且后面可能还有一堆作业等着处理呢。
2、单作业模式 单作业模式也很好理解就是严格的一对一集群只为这个作业而生。同样由客户端运行应用程序然后启动集群作业被提交给 JobManager进而分发给 TaskManager 执行。作业完成后集群就会关闭所有资源也会释放。这样一来每个作业都有它自己的 JobManager管理占用独享的资源即使发生故障它的 TaskManager 宕机也不会影响其他作业。注意是作业不是应用我之前一直觉得这里的作业指的就是应用但其实不是一个应用可能包含一个或多个作业。单作业模式就是为一个作业开启一个集群就是这么奢侈但对于运行时间长需要资源量大的场景这种牺牲是值得的。 这些特性使得单作业模式在生产环境运行更加稳定所以是实际应用的首选模式。需要注意的是Flink 本身无法直接这样运行所以单作业模式一般需要借助一些资源管理框架来启动集群比如 YARN、Kubernetes。
3、应用模式 应用模式与单作业模式都是提交作业之后才创建集群单作业模式是通过客户端来提交的客户端解析出的每一个作业对应一个集群而应用模式下是直接由 JobManager 执行应用程序的并且即使应用包含了多个作业也只创建一个集群。
总结
在会话模式下集群的生命周期独立于集群上运行的任何作业的生命周期并且提交的所有作业共享资源。而单作业模式为每个提交的作业创建一个集群带来了更好的资源隔离这时集群的生命周期与作业的生命周期绑定。最后应用模式为每个应用程序创建一个会话集群在 JobManager 上直接调用应用程序的 main()方法。
Yarn Flink 独立Standalone模式由 Flink 自身提供资源无需其他框架这种方式降低了和其他第三方资源框架的耦合性独立性非常强。但是比如独立模式中的单作业模式不依赖外部资源管理框架就无法实现。而我们刚开始提到的提交Job的方式默认就是Flink独立模式下的会话模式。 我们知道Flink只是一个流式计算框架它并不擅长资源的管理所以我们这里使用YARN而且即使 Flink 的独立模式本就支持会话模式我们还是使用YARN来管理毕竟 YARN 是专业的资源调度框架嘛。
Yarn 部署的流程 客户端把 Flink 应用提交给 Yarn 的 ResourceManager, Yarn 的 ResourceManager 会向 Yarn 的 NodeManager 申请容器。在这些容器上Flink 会部署JobManager 和 TaskManager 的实例从而启动集群。Flink 会根据运行在 JobManger 上的作业所需要的 Slot 数量动态分配 TaskManager 资源。
1、Yarn 会话模式
1.1、启动 yarn-session
bin/yarn-session.sh -nm test -d
-nm 指定应用名称
-d 意思是挂载到后台我们的hadoop102可以 ctrlC 停止当前会话而并不会关闭 yarn session。 执行该命令后返回的信息中需要记住两条信息一个是给我们的 Web UI 端口一个是关闭该会话的命令。
1.2、提交 Job
提交 Job 的语法和我们 standlone 模式一样。 注意这里提交 Job 的用户需要和创建 YARN-Session 的用户保持一致否则会报错 The main method caused an error: Failed to execute job ‘Flink Streaming Job’...拒绝连接
bin/flink run -c com.lyh.wc.UnBoundedStreamWordCount FlinkStudy-1.0-SNAPSHOT.jar
1.3、关闭 yarn-session 会话
echo stop | ./bin/yarn-session.sh -id application_1699415564762_0001
2、Yarn 单作业模式
2.1、提交作业 在 YARN 环境中由于有了外部平台做资源调度所以我们也可以直接向 YARN 提交一个单独的作业从而启动一个 Flink 集群。
$ bin/flink run -d -t yarn-per-job -c com.atguigu.wc.StreamWordCount FlinkTutorial-1.0-SNAPSHOT.jar