Flink 学习 | 在集群上的,部署模式及运行模式

Client 将作业提交给 JobManager ,JobManager 将作业分发给很多个 TaskManager 开始干活。

部署模式有三种(会话模式_session,单作业模式_per_job,应用模式_application)

主要区别是生命周期及资源的分配方式,以及应用的 main 方法到底在哪里执行,是客户端还是JobManager。

会话模式

需要先启动一个集群,保持一个会话。

但启动集群时,资源是共享的,会导致资源竞争。

单作业模式

为每个提交的作业启动一个集群,作业完成后,集群关闭,资源被释放。

【生产环境运行更加稳定,实际应用时首选。】

但 Flink 不能直接这样运行,需要借助资源管理框架运行(如 Yarn,K8S )。

应用模式

前两种都是客户端执行应用代码,然后提交给 Job Manager ,客户端消耗很多带宽,可能会加重客户端所在节点的资源消耗。

应用模式为每个应用单独提交一个 Job Mananger ,相当于每个Flink集群运行一个应用。

应用模式可以有 Standalone模式、YARN模式、K8S模式等。

运行模式指的是由谁来管理资源。

Standalone模式

独立运行,不依赖外部资源管理平台,不能自动扩展。

YARN

客户端将 Flink 应用提交给 YARN 的 Resource Manager ,Resource Manager 向 YARN 的各个Node结点申请容器,在容器上运行部署(根据 slot 数量动态分配 TaskManager 资源),从而启动集群。

要求 Hadoop环境(HDFS、YARN、MapReduce)

会话模式

执行脚本命令向 YARN 集群申请资源,开启一个 YARN 会话,启动 Flink 集群。

bin/yarn-session.sh -nm test -id xxxxx

// 其中  -nm表示配置在 YARN UI 界面上显示的任务名
         -id指定执行的ID

单作业模式

因为 YARN 环境中有了外部平台做资源调度,因此可以直接向 YARN 提交一个单独的作业,从而启动一个 Flink集群。

bin/flink run -d -t yarn-per-job -c xxxxxxx FlinkTutorial-1.0-SNAPSHOT.jar

// 其中 -t 指定运行模式
        -c 指定类名
        最后指定 jar 包

怎么停止呢?【因为是单作业模式,所以如果停止作业,整个集群就会被停止掉】

bin/flink list -t yarn-per-job -Dyarn.application.id=application_XXXX_YY

bin/flink cancel -t yarn-per-job -Dyarn.application.id=application_XXXX_YY 

// 其中, application_XXXX_YY  指的是当前应用的ID
应用模式部署
bin/flink run-application -t xxx -c xxx xxx.jar       // 提交作业

// 取消作业的命令和前面与一样,把 yarn-per-job 换成 run-application 就行

历史服务器

为了在作业挂掉时,能够定位那一刻发生了什么,不只是依赖日志,而是可以看到相关的 WebUI 统计信息,查询这些已完成作业的统计信息。

它对外提供了 REST API  ,接受 HTTP 的请求并使用 JSON 数据进行响应。

// 创建目录
hadoop fs -mkdir -p /logs/flink-job

// 修改配置,在 flink-config.yaml中添加如下图的配置

// 启动历史服务器
historyserver.sh start

Flink 学习 | 在集群上的,部署模式及运行模式_第1张图片

你可能感兴趣的:(flink,学习,大数据)