Flink
on
Yarn配置问题
在配置Flink
on
Yarn的过程中,可能会遇到一些问题。以下是根据搜索结果整理的一些常见问题及其解决方案。
1.安装JDK、Hadoop和Zookeeper
Flink依靠Yarn来实现高可用,由于Yarn依赖于Hadoop,而Hadoop又依赖于Jdk。因此,在配置Flink
on
Yarn之前,需要先安装JDK、Hadoop和Zookeeper。
2.Hadoop版本要求
Flink
on
Yarn部署模式要求Flink是有Hadoop支持的版本,Hadoop环境需要保证版本在2.2以上,并且集群中安装有HDFS服务。
3.Yarn集群资源管理
Yarn在Hadoop的生态系统中担任了资源管理和任务调度的角色,它可以更好地对集群资源进行调度和控制。
1.任务挂掉后的状态显示
当Flink任务挂掉后,YARN的WebUI可能仍然显示任务在运行,但实际上已经挂掉。这是因为Flink提交给YARN之后,YARN后续并没有继续监控Flink任务的状态。为了解决这个问题,可以在提交任务时,命令行加一个参数d。
2.Container释放和丢失节点
如果出现"Containerreleasedona*lost*node"的错误,可能是由于YARN队列压力过大或者磁盘满了之后,可能会导致Flink申请的节点标记为失败,导致taskmanager挂掉。如果有配置重启策略的话,taskmanager会进行重启。如果没有配置重启策略但是配置了checkpoint,
默认的重启策略是无限次重启。但是需要注意一点的是,taskmananger成功重启的前提是jobmanager没有挂掉,如果jobmanager也挂掉了,那么taskmanager重启成功之后也是无效的。
3.Flink
HA配置
如果想要配置Flink
on
Yarn的高可用性,需要在conf/flinkconf.yaml添加以下配置:高可用性模式(必需)设置为zookeeper;yarn.applicationattempts参数代表FlinkJob在Jobmanager(或者叫ApplicationMaster)恢复时,允许重启的最大次数;还需要配置ZooKeeper服务器的IP和端口。
1.yarnsession.sh与flink
run的区别
使用yarnsession.sh启动Flink集群时,会先在yarn集群中启动一个Flink集群,然后再提交作业,相当于所有Flink应用共享一个集群。而使用flink
run直接在YARN上提交运行Flink作业,这种方式的好处是一个任务会对应一个job,即没提交一个作业会根据自身的情况,向yarn申请资源,直到作业执行完成,并不会影响下一个作业的正常运行,除非是yarn上面没有任何资源的情况下。
2.Flink
on
Yarn交互过程
要使得Flink运行于yarn上,Flink要能找到hadoop配置,因为要连接到yarn的resourcemanager和hdfs。每当创建一个新flink的yarnsession的时候,客户端会首先检查要请求的资源(containers和memory)是否可用。然后,将包含flink相关的jar包盒配置上传到hdfs。接着就是客户端会向resourcemanager申请一个yarncontainer用以启动ApplicationMaster。
以上是根据搜索结果整理的Flink
on
Yarn配置过程中可能遇到的问题及其解决方案。希望对您有所帮助。