大象教程
首页
Spark
Hadoop
HDFS
MapReduce
Hive
Flink 教程
什么是 Flink
Flink 开发环境搭建
Flink 部署
Flink 运行时架构
Flink 流处理API
Flink 一共有3种部署模式,分别为: - Standalone 模式 - Yarn 模式 - Kubernetes 模式 #Standalone 模式 ##安装 解压缩 flink-1.10.1-bin-scala_2.12.tgz,进入 conf 目录中。 1)修改 flink/conf/flink-conf.yaml 文件: ![flink-alone](/media/editor/file_1658553858000_20220723132413537615.png "flink-alone") 2)修改 /conf/slaves 文件: ![](/media/editor/file_1658553947000_20220723132542500973.png) 3)分发给另外两台机子: ![](/media/editor/file_1658553972000_20220723132607317199.png) 4)启动: ![](/media/editor/file_1658553990000_20220723132625847453.png) 访问 http://localhost:8081 可以对 flink 集群和任务进行监控管理。 ![](/media/editor/file_1658554028000_20220723132703193244.png) ##提交任务 1) 准备数据文件(如果需要) ![](/media/editor/file_1658554117000_20220723132832404525.png) 2) 把含数据文件的文件夹,分发到 taskmanage 机器中 ![](/media/editor/file_1658554139000_20220723132854731878.png) 如果从文件中读取数据,由于是从本地磁盘读取,实际任务会被分发到 taskmanage 的机器中,所以要把目标文件分发 3) 执行程序 `./flink run -c com.atguigu.wc.StreamWordCount –p 2 FlinkTutorial-1.0-SNAPSHOT-jar-with-dependencies.jar --host lcoalhost –port 7777` ![](/media/editor/file_1658554320000_20220723133155790529.png) 4) 查看计算结果 注意:如果输出到控制台,应该在 taskmanager 下查看;如果计算结果输出到文件,同样会保存到 taskmanage 的机器下,不会在 jobmanage 下。 ![](/media/editor/file_1658554351000_20220723133226531295.png) 5) 在 webui 控制台查看计算过程 ![](/media/editor/file_1658554377000_20220723133252087409.png) #Yarn 模式 以 Yarn 模式部署 Flink 任务时,要求 Flink 是有 Hadoop 支持的版本,Hadoop 环境需要保证版本在 2.2 以上,并且集群中安装有 HDFS 服务。 ##Flink on Yarn Flink 提供了两种在 yarn 上运行的模式,分别为 Session-Cluster 和 Per-Job-Cluster 模式。 **1) Session-cluster 模式:** ![](/media/editor/file_1658554532000_20220723133527328872.png) Session-Cluster 模式需要先启动集群,然后再提交作业,接着会向 yarn 申请一块空间后,资源永远保持不变。如果资源满了,下一个作业就无法提交,只能等到 yarn 中的其中一个作业执行完成后,释放了资源,下个作业才会正常提交。所有作业共享 Dispatcher 和 ResourceManager;共享资源;适合规模小执行时间短的作业。 在 yarn 中初始化一个 flink 集群,开辟指定的资源,以后提交任务都向这里提交。这个 flink 集群会常驻在 yarn 集群中,除非手工停止。 **2) Per-Job-Cluster 模式:** ![](/media/editor/file_1658554600000_20220723133635475425.png) 一个 Job 会对应一个集群,每提交一个作业会根据自身的情况,都会单独向 yarn 申请资源,直到作业执行完成,一个作业的失败与否并不会影响下一个作业的正常提交和运行。独享 Dispatcher 和 ResourceManager,按需接受资源申请;适合规模大长时间运行的作业。 每次提交都会创建一个新的 flink 集群,任务之间互相独立,互不影响,方便管理。任务执行完成之后创建的集群也会消失。 ##Session Cluster 1) 启动 hadoop 集群(略) 2) 启动 yarn-session `./yarn-session.sh -n 2 -s 2 -jm 1024 -tm 1024 -nm test -d` 其中: ```bash -n(--container):TaskManager 的数量。 -s(--slots): 每个 TaskManager 的 slot 数量,默认一个 slot 一个 core,默认每个 taskmanager 的 slot 的个数为 1,有时可以多一些 taskmanager,做冗余。 -jm:JobManager 的内存(单位 MB)。 -tm:每个 taskmanager 的内存(单位 MB)。 -nm:yarn 的 appName(现在 yarn 的 ui 上的名字)。 -d:后台执行。 ``` ![](/media/editor/file_1658554960000_20220723134237766379.png) 3) 执行任务 `./flink run -c com.atguigu.wc.StreamWordCount FlinkTutorial-1.0-SNAPSHOT-jar-with-dependencies.jar --host lcoalhost –port 7777 ` 4) 去 yarn 控制台查看任务状态 ![](/media/editor/file_1658555031000_20220723134346045183.png) 5) 取消 yarn-session `yarn application --kill application_1577588252906_0001` ##Per Job Cluster 1) 启动 hadoop 集群(略) 2) **不启动 yarn-session**,直接执行 job `./flink run –m yarn-cluster -c com.atguigu.wc.StreamWordCount FlinkTutorial-1.0-SNAPSHOT-jar-with-dependencies.jar --host lcoalhost –port 7777 ` #Kubernetes 部署 容器化部署时目前业界很流行的一项技术,基于 Docker 镜像运行能够让用户更加方便地对应用进行管理和运 维。容器管理工具中最为流行的就是 Kubernetes(k8s),而 Flink 也在最近的版本中支持了 k8s 部署模式。 1)搭建 Kubernetes 集群(略) 2)配置各组件的 yaml 文件 在 k8s 上构建 Flink Session Cluster,需要将 Flink 集群的组件对应的 docker 镜像分别在 k8s 上启动,包括 JobManager、TaskManager、JobManagerService 三个镜像服务。每个镜像服务都可以从中央镜像仓库中获取。 3)启动 Flink Session Cluster ```bash // 启动 jobmanager-service 服务 kubectl create -f jobmanager-service.yaml // 启动 jobmanager-deployment 服务 kubectl create -f jobmanager-deployment.yaml // 启动 taskmanager-deployment 服务 kubectl create -f taskmanager-deployment.yaml ``` 4)访问 Flink UI 页面 集群启动后,就可以通过 JobManagerServicers 中配置的 WebUI 端口,用浏览器输入以下 url 来访问 Flink UI 页面了: `http://{JobManagerHost:Port}/api/v1/namespaces/default/services/flink-jobmanager:ui/proxy`
加我微信交流吧