1.会话(session)模式
特点:需要事先申请资源,启动JobManager 和 TaskManager
- 优点:不需要每次递交作业申请资源,使用已有资源
- 缺点:作业执行完成后,资源不会被释放,因此会一直占用系统资源
使用场景:适合小作业比较多,作业递交比较频繁的场景
作业方式:
bin/yarn-session.sh -n 2 -tm 800 -s 1 -d #申请资源
bin/flink run examples/batch/WordCount.jar #递交作业
2.分离(per-job)模式
特点:不需要事先申请资源,在每次递交作业的时候申请一次资源
- 优点:作业运行完成资源立刻会被释放
- 缺点:每次递交作业都需要申请资源,会影响执行效率,申请资源需要消耗时间
使用场景:适合大作业,作业比较少的场景
作业方式:
3.应用(application)模式
应用模式的特点和分离模式很像,区别在于:
- 用户程序的 main 方法在集群中运行,而不是在客户端运行
- 应用模式为每个提交的应用程序创建一个集群,该集群可以看作是在特定应用程序的作业之间共享的会话集群,并在应用程序完成时终止。在这种体系结构中,应用模式在不同应用之间提供了资源隔离和负载平衡保证
- 用户可以手动将应用程序jar及依赖的jar事先上传到hdfs,然后每次递交作业的时候不需要上传jar了,只需要指定hdfs已上传的jar路径即可