flink部署三种模式(案例操作)

10 篇文章 0 订阅
8 篇文章 0 订阅

一. Local模式

1. 应用场景

在local模式下,不需要启动任何的进程,仅仅是使用本地线程来模拟flink的进程,适用于测试开发调试等,这种模式下,不用更改任何配置,只需要保证jdk8安装正常即可

2. 操作

#第一步:上传安装包并解压
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 模式

1. 应用场景

standalone模式也叫作独立模式,主从模式,自带完整的服务,可单独部署到一个集群中,无序依赖任何其他资源管理系统。
优势:只需要一个集群,所有作业提交之后都进集群处理,集群的生命周期是超越作业上的,作业结束释放资源,集群继续运行。
缺点:因为资源是共享的,当资源不足时,提交新的作业会失败,另外,同一个taskmanager上可能运行了很多作业,如果其中一个发生故障导致taskmanager宕机,所有作业都将会受到影响。
总结:适合单个规模小,执行时间短的大量作业。

2. 部署模式

2.1 会话模式

在这里插入图片描述

2.1.1 安装规划

Flink 是典型的 Master-Slave 架构的分布式数据处理框架, 其中 Master 角色对应着 JobManager,Slave 角色则对应 TaskManager。我们对三台节点服务器的角色分配如下所示。

节点服务器hadoop102hadoop103hadoop104
角色JobManagerTaskManagerTaskManager
2.1.2 修改配置

(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 组件 进行优化配置, 主要配置项如下:

  • jobmanager.memory.process.size:对 JobManager 进程可使用到的全部内存进行配置, 包括 JVM 元空间和其他开销,默认为 1600M,可以根据集群规模进行适当调整。
  • taskmanager.memory.process.size:对 TaskManager 进程可使用到的全部内存进行配置, 包括 JVM 元空间和其他开销,默认为 1600M,可以根据集群规模进行适当调整。
  • taskmanager.numberOfTaskSlots:对每个 TaskManager 能够分配的 Slot 数量进行配置, 默认为 1,可根据 TaskManager 所在的机器能够提供给 Flink 的 CPU 数量决定。所谓 Slot 就是TaskManager 中具体运行一个任务所分配的计算资源。
  • parallelism.default:Flink 任务执行的默认并行度, 优先级低于代码中进行的并行度配 置和任务提交时使用参数指定的并行度数量。
2.1.3 分发安装目录

配置修改完毕后, 将 Flink 安装目录发给另外两个节点服务器。

scp -r ./flink-1.13.0 root@hadoop103:/opt/module
scp -r ./flink-1.13.0 root@hadoop104:/opt/module
2.1.4 启动集群

(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
2.1.5 访问 Web UI

在这里插入图片描述

这里可以明显看到, 当前集群的 TaskManager 数量为 2;由于默认每个 TaskManager 的 Slot 数量为 1,所以总 Slot 数和可用 Slot 数都为 2。

2.2 单作业模式

为了更好的隔离资源,为每个提交的作业启动一个集群
在这里插入图片描述
由客户端运行应用程序,然后启动集群,作业被提交给 JobManager,进而分发给 TaskManager 执行。作业作业完成后,集群就会关闭,所有资源也会释放。这样一来,每个作业都有自己的jobmanager管理,占用独享的资源,即使发生故障,也不会影响其他作业。
总结:在生产环境中更加稳定,成为实际应用中的首选,但单作业模式一般需要借助一个资源管理框架来启动集群,Yarn,k8s等。

Flink 本身无法直接以单作业方式启动集群, 一般需要借助一些资源管理平台。所以 Flink 的独立(Standalone)集群并不支持单作业模式部署。

2.3 应用模式

前两种模式应用代码都是在客户端运行,然后由客户端提交给jobmanager的,这种方式的弊端是:需要占用大量网络带宽,去下载依赖和把二进制数据发送给jobmanager,将会加重客户端资源消耗。
所以Application Mode的解决办法是:不需要客户端,直接把应用提交到jobmanager上运行,这意味着要为每个提交的应用单独启动一个jobmanager,也就是创建一个集群,jobmanager执行完自己的应用将会关闭
在这里插入图片描述
应用模式与单作业模式,都是提交作业之后才创建集群;单作业模式是通过客户端来提交的,客户端解析出的每一个作业对应一个集群;而应用模式下,是直接由 JobManager 执行应用程序的,即使应用包含了多个作业,也只创建一个集群。

三. yarn模式(未实操)

部署过程:客户端把 Flink 应用提交给 Yarn 的 ResourceManager, Yarn 的 ResourceManager 会向 Yarn 的 NodeManager 申请容器。在这些容器上,Flink 会部署JobManager 和 TaskManager 的实例,从而启动集群。Flink 会根据运行在 JobManger 上的作业所需要的 Slot 数量动态分配 TaskManager 资源。
高可用:
YARN 的高可用是只启动一个 Jobmanager, 当这个 Jobmanager 挂了之后, YARN 会再次启动一个, 所以其实是利用的 YARN 的重试次数来实现的高可用。
(还未实际操作…)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菠菜很好吃

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值