1.Flink 的知识点总结:
2.Flink 的简单简介:
2009年诞生。
2014年一跃成为Apache 软件基金会的顶级项目.
2019年被阿里收购成为中国人主导的项目,可以适合中国国内的发展。
Flink 的使用场景。
用官网的图说明
2.1 Flink 的简单场景:
3.Flink 的特性。
1.高吞吐和低延迟。每秒处理数百万个事件,毫秒级延迟 。
2.结果的精准一次性。
3.高可用。
4.可以链接常用的存储。
5.更新应用程序作业迁移到不同的flink 集群。
4.Flink 架构。
5 组件名字解释:
5.1JobManager: JobManager 是一个 Flink 集群中任务管理和调度的核心.
5.2 ResourceManager: ResourceManager 主要负责资源的分配和管理,在 Flink 集.群中只有一个。所谓“资源”,主要是指 TaskManager 的任务槽(task slots)。任务槽就是 Flink 集群中的资源调配单元,包含了机器用来执行计算的一组 CPU 和内存资源。每一个任务(Task)都需要分配到一个 slot 上执行.
5.3 Dispatcher(分发器):Dispatcher 主要负责提供一个 REST 接口,用来提交应用,并且负责为每一个新提交的作业启动一个新的 JobMaster 组件。Dispatcher 也会启动一个 Web UI,用来方便地展示和监控作业执行的信息。
5.4 TaskManager(任务管理器):TaskManager 是 Flink 中的工作进程,数据流的具体计算就是它来做的,所以也被称为“Worker”。Flink 集群中必须至少有一个 TaskManager;当然由于分布式计算的考虑,通常会有多个 TaskManager 运行,每一个 TaskManager 都包含了一定数量的任务槽(task slots)。Slot是资源调度的最小单位,slot 的数量限制了 TaskManager 能够并行处理的任务数量。
6.快速上手 wordCount
7.flink 的部署模式
flink yarn 的部署模式有三种,Session-Cluster,Application Mode和Per-Job-Cluster模式。
7.1 原理
7.1Session-Cluster
特点:
1.Session-Cluster模式需要先启动Flink集群,向Yarn申请资源,
资源申请到以后,永远保持不变。以后提交任务都向这里提交。
这个Flink集群会常驻在yarn集群中,除非手工停止
2.在向Flink集群提交Job的时候, 如果资源被用完了,则新的Job不能正常提交.
缺点:
1.如果提交的作业中有长时间执行的大作业, 占用了该Flink集群的所有资源,
则后续无法提交新的job
Session-Cluster适合那些需要频繁提交的多个小Job, 并且执行时间都不长的Job.
实战:
在看yarn 资源管理中
提交小任务:
可以看到提交任务
[root@node01 bin]# ./flink run -c com.wudl.flink.core.WordCountStream /opt/tmp/wudl-flink-13-1.0-SNAPSHOT-jar-with-dependencies.jar
Setting HBASE_CONF_DIR=/etc/hbase/conf because no HBASE_CONF_DIR was set.
Job has been submitted with JobID 87771fb339b85a6c3bde350ab852847d
命令提交步骤:
1. ./yarn-session.sh -tm 2048 -s 3 -nm wudl
2. ./flink run -c com.wudl.flink.core.WordCountStream /opt/tmp/wudl-flink-13-1.0-SNAPSHOT-jar-with-dependencies.jar
或者指定yarn id
./flink run -t yarn-session -Dyarn.application.id=application_XXXX_YY /xxx-SNAPSHOT.ja
yarn命令
yarn application -list 打印任务信息
yarn application -status application_xx 查看任务状态
yarn applicaton -kill applicationId kill 任务
7.2 Pro-job mode(单作业模式)
优点:适合规模大长时间运行的作业
一个Job会对应一个Flink集群,每提交一个作业会根据自身的情况,
都会单独向yarn申请资源,直到作业执行完成,一个作业的失败与否并不会
影响下一个作业的正常提交和运行。独享Dispatcher和ResourceManager,
按需接受资源申请。
实战:
提交命令
./flink run -d -t yarn-per-job -c com.wudl.flink.core.WordCountStream /opt/tmp/wudl-flink-13-1.0-SNAPSHOT-jar-with-dependencies.jar
在yarn ResourceManager 界面可以看到
7.3 Application Mode(引用模式)
优点:
应用模式为每个应用程序创建一个会话集群,在 JobManager 上直接调用应用程序的 main()方法
实战:
./flink run-application -t yarn-application -c com.wudl.flink.core.WordCountStream /opt/tmp/wudl-flink-13-1.0-SNAPSHOT-jar-with-dependencies.jar
提交参数说明:
-d:分离模式,如果你不想让 Flink YARN 客户端一直前台运行,可以使用这个参数,即使关掉当前对话窗口,YARN session 也可以后台运行。
-jm(--jobManagerMemory):配置 JobManager 所需内存,默认单位 MB.
-nm(--name):配置在 YARN UI 界面上显示的任务名。
-qu(--queue):指定 YARN 队列名.
-tm(--taskManager):配置每个 TaskManager 所使用内存。