赞
踩
在local模式下,不需要启动任何的进程,仅仅是使用本地线程来模拟flink的进程,适用于测试开发调试等,这种模式下,不用更改任何配置,只需要保证jdk8安装正常即可
#第一步:上传安装包并解压
tar -zxvf flink-1.15.2-bin-scala_2.12.tgz
注意:高版本需要修改配置文件
默认是localhost,改为0.0.0.0。直接启动默认监听的是本地ip,远程访问webUI打不开,如下图:
vim flink-conf.yaml
#第二步:直接使用脚本启动
cd /opt/flink-1.15.2
bin/start-cluster.sh
#启动成功之后,执行jps就能查看到启动了两个进程,例如:
#18180 StandaloneSessionClusterEntrypoint
#18614 TaskManagerRunner
jps
#第三步:webUI界面访问
浏览器访问http://ip:8081/
在安装文件夹里找到flink-1.5.2\examples\batch\WordCount.jar,浏览器页面add后submit,如下图展示结果:
standalone模式也叫作独立模式,主从模式,自带完整的服务,可单独部署到一个集群中,无序依赖任何其他资源管理系统。
优势:只需要一个集群,所有作业提交之后都进集群处理,集群的生命周期是超越作业上的,作业结束释放资源,集群继续运行。
缺点:因为资源是共享的,当资源不足时,提交新的作业会失败,另外,同一个taskmanager上可能运行了很多作业,如果其中一个发生故障导致taskmanager宕机,所有作业都将会受到影响。
总结:适合单个规模小,执行时间短的大量作业。
Flink 是典型的 Master-Slave 架构的分布式数据处理框架, 其中 Master 角色对应着 JobManager,Slave 角色则对应 TaskManager。我们对三台节点服务器的角色分配如下所示。
节点服务器 | hadoop102 | hadoop103 | hadoop104 |
---|---|---|---|
角色 | JobManager | TaskManager | TaskManager |
(1) 修改flink-conf.yaml
vim flink-conf.yaml
# JobManager 节点地址 .
jobmanager.rpc.address: hadoop102
这就指定了 hadoop102 节点服务器为 JobManager 节点。
(2) 修改workers
修改 workers 文件, 将另外两台节点服务器添加为本 Flink 集群的 TaskManager 节点, 具体修改如下:
vim workers
hadoop103
hadoop104
这样就指定了 hadoop103 和 hadoop104 为 TaskManager 节点。
(3) 优化扩展
在 flink-conf.yaml 文件中还可以对集群中的 JobManager 和 TaskManager 组件 进行优化配置, 主要配置项如下:
配置修改完毕后, 将 Flink 安装目录发给另外两个节点服务器。
scp -r ./flink-1.13.0 root@hadoop103:/opt/module
scp -r ./flink-1.13.0 root@hadoop104:/opt/module
(1)在 hadoop102 节点服务器上执行 start-cluster.sh 启动 Flink 集群:
bin/start-cluster.sh
Starting cluster.
Starting standalonesession daemon on host hadoop102.
Starting taskexecutor daemon on host hadoop103.
Starting taskexecutor daemon on host hadoop104.
(2)查看进程情况:
[root@hadoop102 flink-1.13.0]$ jps
13859 Jps
13782 StandaloneSessionClusterEntrypoint
[root@hadoop103 flink-1.13.0]$ jps
12215 Jps
12124 TaskManagerRunner
[root@hadoop104 flink-1.13.0]$ jps
11602 TaskManagerRunner
11694 Jps
这里可以明显看到, 当前集群的 TaskManager 数量为 2;由于默认每个 TaskManager 的 Slot 数量为 1,所以总 Slot 数和可用 Slot 数都为 2。
为了更好的隔离资源,为每个提交的作业启动一个集群
由客户端运行应用程序,然后启动集群,作业被提交给 JobManager,进而分发给 TaskManager 执行。作业作业完成后,集群就会关闭,所有资源也会释放。这样一来,每个作业都有自己的jobmanager管理,占用独享的资源,即使发生故障,也不会影响其他作业。
总结:在生产环境中更加稳定,成为实际应用中的首选,但单作业模式一般需要借助一个资源管理框架来启动集群,Yarn,k8s等。
Flink 本身无法直接以单作业方式启动集群, 一般需要借助一些资源管理平台。所以 Flink 的独立(Standalone)集群并不支持单作业模式部署。
前两种模式应用代码都是在客户端运行,然后由客户端提交给jobmanager的,这种方式的弊端是:需要占用大量网络带宽,去下载依赖和把二进制数据发送给jobmanager,将会加重客户端资源消耗。
所以Application Mode的解决办法是:不需要客户端,直接把应用提交到jobmanager上运行,这意味着要为每个提交的应用单独启动一个jobmanager,也就是创建一个集群,jobmanager执行完自己的应用将会关闭
应用模式与单作业模式,都是提交作业之后才创建集群;单作业模式是通过客户端来提交的,客户端解析出的每一个作业对应一个集群;而应用模式下,是直接由 JobManager 执行应用程序的,即使应用包含了多个作业,也只创建一个集群。
部署过程:客户端把 Flink 应用提交给 Yarn 的 ResourceManager, Yarn 的 ResourceManager 会向 Yarn 的 NodeManager 申请容器。在这些容器上,Flink 会部署JobManager 和 TaskManager 的实例,从而启动集群。Flink 会根据运行在 JobManger 上的作业所需要的 Slot 数量动态分配 TaskManager 资源。
高可用:
YARN 的高可用是只启动一个 Jobmanager, 当这个 Jobmanager 挂了之后, YARN 会再次启动一个, 所以其实是利用的 YARN 的重试次数来实现的高可用。
(还未实际操作…)
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。