欢迎访问我的GitHub

https://github.com/zq2599/blog_demos

内容:所有原创文章分类汇总及配套源码,涉及Java、Docker、Kubernetes、DevOPS等;

本文是《Flink on Yarn三部曲》系列的终篇,先简单回顾前面的内容:

  1. 《Flink on Yarn三部曲之一:准备工作》:准备好机器、脚本、安装包;
  2. 《Flink on Yarn三部曲之二:部署和设置》:完成CDH和Flink部署,并在管理页面做好相关的设置;

现在Flink、Yarn、HDFS都就绪了,接下来实践提交Flink任务到Yarn执行;

全文链接

  1. 《Flink on Yarn三部曲之一:准备工作》
  2. 《Flink on Yarn三部曲之二:部署和设置》
  3. 《Flink on Yarn三部曲之三:提交Flink任务》

两种Flink on YARN模式

实践之前,对Flink on YARN先简单了解一下,如下图所示,Flink on Yarn在使用的时候分为两种模式,Job Mode和Session Mode:



Session Mode:在YARN中提前初始化一个Flink集群,以后所有Flink任务都提交到这个集群,如下图:



Job Mode:每次提交Flink任务都会创建一个专用的Flink集群,任务完成后资源释放,如下图:



接下来分别实战这两种模式;

准备实战用的数据(CDH服务器)

接下来提交的Flink任务是经典的WordCount,先在HDFS中准备一份文本文件,后面提交的Flink任务都会读取这个文件,统计里面每个单词的数字,准备文本的步骤如下:

  1. SSH登录CDH服务器;
  2. 切换到hdfs账号:su - hdfs
  3. 下载实战用的txt文件:
wget https://github.com/zq2599/blog_demos/blob/master/files/GoneWiththeWind.txt
  1. 创建hdfs文件夹:hdfs dfs -mkdir /input
  2. 将文本文件上传到/input目录:hdfs dfs -put ./GoneWiththeWind.txt /input

准备工作完成,可以提交任务试试了。

Session Mode实战

  1. SSH登录CDH服务器;
  2. 切换到hdfs账号:su - hdfs
  3. 进入目录:/opt/flink-1.7.2/
  4. 执行如下命令创建Flink集群,-n参数表示TaskManager的数量,-jm表示JobManager的内存大小,-tm表示每个TaskManager的内存大小:
./bin/yarn-session.sh -n 2 -jm 1024 -tm 1024
  1. 创建成功后,控制台输出如下图,注意红框中的提示,表明可以通过38301端口访问Flink:

  2. 浏览器访问CDH服务器的38301端口,可见Flink服务已经启动:

  3. 浏览器访问CDH服务器的8088端口,可见YARN的Application(即Flink集群)创建成功,如下图,红框中是任务ID,稍后结束Application的时候会用到此ID:

  4. 再开启一个终端,SSH登录CDH服务器,切换到hdfs账号,进入目录:/opt/flink-1.7.2
  5. 执行以下命令,就会提交一个Flink任务(安装包自带的WordCount例子),并指明将结果输出到HDFS的wordcount-result.txt文件中:
bin/flink run ./examples/batch/WordCount.jar \
-input hdfs://192.168.50.134:8020/input/GoneWiththeWind.txt \
-output hdfs://192.168.50.134:8020/wordcount-result.txt
  1. 执行完毕后,控制台输出如下:

  2. flink的WordCount任务结果保存在hdfs,我们将结果取出来看看:hdfs dfs -get /wordcount-result.txt
  3. vi打开wordcount-result.txt文件,如下图,可见任务执行成功,指定文本中的每个单词数量都统计出来了:

  4. 浏览器访问Flink页面(CDH服务器的38301端口),也能看到任务的详细情况:

  5. 销毁这个Flink集群的方法是在控制台执行命令:yarn application -kill application_1580173588985_0002



    Session Mode的实战就完成了,接下来我们来尝试Job Mode;

Job Mode

  1. 执行以下命令,创建一个Flink集群,该集群只用于执行参数中指定的任务(wordCount.jar),结果输出到hdfs的wordcount-result-1.txt文件:
bin/flink run -m yarn-cluster \
-yn 2 \
-yjm 1024 \
-ytm 1024 \
./examples/batch/WordCount.jar \
-input hdfs://192.168.50.134:8020/input/GoneWiththeWind.txt \
-output hdfs://192.168.50.134:8020/wordcount-result-1.txt
  1. 控制台输出如下,表明任务执行完成:

  2. 如果您的内存和CPU核数充裕,可以立即执行以下命令再创建一个Flink集群,该集群只用于执行参数中指定的任务(wordCount.jar),结果输出到hdfs的wordcount-result-2.txt文件:
bin/flink run -m yarn-cluster \
-yn 2 \
-yjm 1024 \
-ytm 1024 \
./examples/batch/WordCount.jar \
-input hdfs://192.168.50.134:8020/input/GoneWiththeWind.txt \
-output hdfs://192.168.50.134:8020/wordcount-result-2.txt
  1. 在YARN管理页面可见任务已经结束:

  2. 执行命令hdfs dfs -ls /查看结果文件,已经成功生成:

  3. 执行命令hdfs dfs -get /wordcount-result-1.txt下载结果文件到本地,检查数据正常;
  4. 至此,Flink on Yarn的部署、设置、提交都实践完成,《Flink on Yarn三部曲》系列也结束了,如果您也在学习Flink,希望本文能够给您一些参考,也建议您根据自身情况和需求,修改ansible脚本,搭建更适合自己的环境;

欢迎关注公众号:程序员欣宸

微信搜索「程序员欣宸」,我是欣宸,期待与您一同畅游Java世界...

https://github.com/zq2599/blog_demos

Flink on Yarn三部曲之三:提交Flink任务的更多相关文章

  1. Flink on Yarn三部曲之一:准备工作

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  2. Flink on Yarn三部曲之二:部署和设置

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  3. Flink的DataSource三部曲之三:自定义

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  4. Flink源码阅读(一)——Flink on Yarn的Per-job模式源码简析

    一.前言 个人感觉学习Flink其实最不应该错过的博文是Flink社区的博文系列,里面的文章是不会让人失望的.强烈安利:https://ververica.cn/developers-resource ...

  5. Flink的DataSource三部曲之一:直接API

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  6. Flink的DataSource三部曲之二:内置connector

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  7. Apache Flink 进阶(六):Flink 作业执行深度解析

    本文根据 Apache Flink 系列直播课程整理而成,由 Apache Flink Contributor.网易云音乐实时计算平台研发工程师岳猛分享.主要分享内容为 Flink Job 执行作业的 ...

  8. flink on yarn模式下两种提交job方式

    yarn集群搭建,参见hadoop 完全分布式集群搭建 通过yarn进行资源管理,flink的任务直接提交到hadoop集群 1.hadoop集群启动,yarn需要运行起来.确保配置HADOOP_HO ...

  9. Flink on yarn的配置及执行

    1. 写在前面 Flink被誉为第四代大数据计算引擎组件,即可以用作基于离线分布式计算,也可以应用于实时计算.Flink可以自己搭建集群模式已提供为庞大数据的计算.但在实际应用中.都是计算hdfs上的 ...

随机推荐

  1. [程序员代码面试指南]链表问题-将单链表的每k个节点之间逆序

    题目描述 给定一个单链表的表头节点head,实现一个调整单链表的函数,是的每k个节点之间逆序,如果最后不够k个节点一组,则不调整最后几个节点. 题解 内部函数reverse实现链表beg到end的翻转 ...

  2. STL_Vector(向量)

    向量Vector 头文件 #include<vector> 作用: vector是一种顺序容器,与数组类似,但与之不同的是vector并不需要开辟内存空间,其类似于每存一个变量便开一个空间 ...

  3. fiddler工具介绍及证书设置

    fiddler 目录 1.Fiddler介绍 01.介绍 02.简单使用 03.结果状态码 介绍完了,接下来就到证书了 2.Fiddler证书设置 这就是fiddler证书设置的全部步骤了 1.Fid ...

  4. Kafka 【入门一篇文章就够了】

    初识 Kafka 什么是 kafka Kafka 是由 Linkedin 公司开发的,它是一个分布式的,支持多分区.多副本,基于 Zookeeper 的分布式消息流平台,它同时也是一款开源的基于发布订 ...

  5. php第三天-数组的定义,数组的遍历,常规数组的操作

    0x01 数组分类 在php中有两种数组:索引数组和关联数组 索引数组的索引值是整数,以0开始.当通过位置来标识东西时用索引数组. 关联数组是以字符串作为索引值,关联数组更像操作表.索引值为列名,用于 ...

  6. Spring事务管理(编码式、配置文件方式、注解方式)

    1.事务(https://www.cnblogs.com/zhai1997/p/11710082.html) (1)事务的特性:acdi (2)事务的并发问题:丢失修改,脏读,不可重复读 (3)事务的 ...

  7. idea模拟前端向后台请求数据输出响应结果

    tools-httpClient-Test restful web service 通过上述步骤之后出现如下图 1 表示通过哪种方式请求:2 请求数据的地址头部:3 请求数据的除了头部之后的地址:4, ...

  8. Linux下安装ZooKeeper-3.5.6

    下载 官网下载地址是https://www.apache.org/dyn/closer.cgi/zookeeper,下载apache-zookeeper-3.5.6-bin.tar.gz.   sta ...

  9. Centos-上传下载文件-rz sz

    依赖: ssh协议.远程终端 .lrzsz软件包.window操作系统 安装 lrzsz 软件包 yum install -y lrzsz 下载命令 sz sz fileName 上传命令 rz 相关 ...

  10. LRU Cache & Bloom Filter

    Cache 缓存 1. 记忆 2. 空间有限 3. 钱包 - 储物柜 4. 类似背代码模板,O(n) 变 O(1)     LRU Cache 缓存替换算法 1. Least Recently Use ...