1. 云栖社区>
  2. PHP教程>
  3. 正文

Flink On Yarn Resource Isolation

作者:用户 来源:互联网 时间:2017-12-01 17:47:47

yarnresourceIsolationFlink

Flink On Yarn Resource Isolation - 摘要: 本文讲的是Flink On Yarn Resource Isolation,Flink On Yarn Resource Isolation 解决问题 Flink目前没有资源隔离,不同任务的task可能跑在同一个JVM进程中,无法进行资源隔离,一个应用出问题,容易导致集群全部挂掉。 Flink on Yarn

Flink On Yarn Resource Isolation 解决问题

Flink目前没有资源隔离,不同任务的task可能跑在同一个JVM进程中,无法进行资源隔离,一个应用出问题,容易导致集群全部挂掉。

Flink on Yarn

Flink提供两种Yarn的部署方式 Yarn Setup :

Start a long-running Flink cluster on YARN

通过命令 yarn-session.sh 来实现,本质上是在yarn集群上启动一个flink集群。 由yarn预先给flink集群分配若干个container给flink使用,在yarn的界面上只能看到一个 Flink session with X TaskManagers 的任务。 只有一个Flink界面,可以从Yarn的ApplicationMaster链接进入。 使用bin/flink run命令发布任务时,本质上是使用Flink自带的调度,与普通的在Flink集群上发布任务并没有不同。 不同的任务可能在一个TaskManager中,也即是在一个JVM进程中,无法实现资源隔离。

Run a Flink job on YARN

通过命令 bin/flink run -m yarn-cluster 实现,一次只发布一个任务,本质上给每个flink任务启动了一个集群。 yarn不事先给flink分配container,而是在任务发布时,启动JobManager(对应Yarn的AM)和TaskManager,如果一个任务指定了 n 个TaksManager(-yn n),则会启动 n+1 个Container,其中一个是JobManager。 发布 m 个应用,则有 m 个Flink界面,对比方式一,同样发布 m 个应用,会多出 m-1 个JobManager的。 发布任务时,实际上是使用了Yarn的调用。 不同的任务不可能在一个Container(JVM)中,也即是实现了资源隔离。 Example

假设已经搭建好了yarn和hdfs集群。Flink目录放在yarn集群的某台机器上,最好是ResourceManager。该机器必须配置有YARN_CONF_DIR 或HADOOP_CONF_DIR环境变量,且Flink能访问。

集群模式 命令:./bin/yarn-session.sh -n 10 -tm 8192 -s 8,表示启动10个TaskManager,每个内存为8G,slots数为8个的Flink集群。

Flink On Yarn Resource Isolation-

点开Tracking UI中的ApplicationMaster,可以看到Flink的页面。

Flink On Yarn Resource Isolation-

Flink页面中能看到目前只启动了一个TaskMananger(一个JVM进程),并且有FreeSlot,新启动的Flink Job会在这些slots中启动,直到没有更多FreeSlots了才会分配新的TaskMananger。 运行两个命令: ./bin/flink run ./examples/streaming/SocketWindowWordCount.jar –port 12345./bin/flink run ./examples/streaming/SocketWindowWordCount.jar –port 1234 启动两个flink任务(需要预先启动nc -l 12345和nc -l 1234才能正常运行),截图如下:

Flink On Yarn Resource Isolation-

可以看到是在同一个JVM进程中运行的, 没有资源隔离。 单个任务模式 命令 ./bin/flink run -m yarn-cluster -yn 2 -ys 4 ./examples/streaming/SocketWindowWordCount.jar –port 12345./bin/flink run -m yarn-cluster -yn 2 -ys 2 ./examples/streaming/SocketWindowWordCount.jar –port 1234 分别表示以yarn-cluster模式,启动了两个flink任务,第一个使用了2个container,每个container 4个slots,第二个使用了2个container,每个container 2个slots

Flink On Yarn Resource Isolation-

Yarn中能看到两个任务,分别有两个ApplicationMaster,对应Flink的JobMananger。

Flink On Yarn Resource Isolation-

Flink On Yarn Resource Isolation-

可以看到两个Flink集群中,均没有Free Slots,所有的资源仅提供给当前任务运行。使用jps查看进程也能看到集群上共有2个ApplicationMaster和4个TaskMananger。 实现了资源隔离。 其他 slots数的指定:对于standalone cluster而言,由于一台机器上只有一个TaskManager,slots数应与机器核数相同。对于single job on yarn模式和yarn cluster模式而言,一台机器上可能有多个TaskManager(取决于yarn在该机器上分配的container数),理论上应该与该Container分配的核数一致为佳。 Flink命令执行后,在任务执行完之前不会返回,控制台是不能退出的。可以在命令后加-d 参数,表示 detached ,但此时无法再通过flink命令结束任务,需要通过yarn命令 yarn application -kill < appId > 结束任务。

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索yarn , resource , Isolation Flink ,以便于您获取更多的相关知识。

弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率

40+云计算产品,6个月免费体验

现在注册,免费体验40+云产品,及域名优惠!

云服务器9.9元/月,大学必备