Flink Standalone运行模式
1 Flink概述
根据官方(https://flink.apache.org)的说法,所谓的Flink是一个开源的大数据框架和分布式处理引擎,它由Apache软件基金会开源,用于在无界(有数据流的开始点,但没有数据流的结束点)和有界(有数据流的开始点,且有数据流的结束点)流数据上进行有状态的计算。下面给出官网首页的一张图来说明Flink常见的应用架构,如图所示。
从图可以看出,Flink应用架构一般由多个Flink计算节点构成集群,在资源调度方面可以基于K8s、Yarn和Mesos等组件。在存储方面,可以支持HDFS、S3和NFS等文件系统。在集群内部,不同节点可以进行数据交互,并可维护相关的状态数据,这样在计算过程中,如果发送异常,则可以借助容错机制从中间状态进行数据恢复,这一点对于一个分布式应用程序来说至关重要。
Flink框架将复杂的分布式计算框架进行抽象,内部复杂的调度、计算过程对用户可以说是透明的,用户只需关注具体的计算逻辑即可。如果将Fink应用集群看作是一个函数的话,它可以接收多种流数据输入作为参数,比如实时事件数据、传统数据库数据、文件系统数据以及键值对存储系统。这些各种类型的数据可以来自事务系统、日志、物联网设备以及网页点击流等。
另外,Fink可以将处理后的数据,输出到第三方应用系统、事件日志、数据库系统、文件系统以及键值对存储系统中。由于Flink程序主要由Java语言或Scala语言开发,另外还支持Python语言。但底层组件和Flink运行时(runtime)是运行在JVM上,因此,Flink程序可以运行在多种平台上,如Linux、Unix、Mac OS X和Windows操作系统上,并能在计算机内存中进行分布式数据处理,因此计算速度非常快,且计算的延迟低。
2 Flink Standalone模式
Flink单机Standalone模式最为简单,也是多机Standalone运行模式的基础。该模式安装非常的简单,下面给出主要安装步骤。首先到官网上下载压缩包,这里下载Apache Flink 1.12.0 for Scala 2.11对应的文件。该文件为flink-1.12.0-bin-scala_2.11.tgz。通过FinalShell工具将flink-1.12.0-bin-scala_2.11.tgz文件上传到Linux操作系统上,具体路径为/wmsoft。在Linux操作系统终端中执行如下命令进行解压:
tar -zxf flink-1.12.0-bin-scala_2.11.tgz
启动Flink单机Standalone模式,执行如下命令:
cd flink-1.12.0/bin/
./start-cluster.sh
成功启动后,可以在浏览器中输入具体的网址,默认端口号为8081,具体如图所示。
在此界面中,注意一下可用的Task Slots数量为1,默认情况下一般为1,如果为0,则说明没有资源可以用于任务计算,此时非常可能无法执行计算任务。上传Flink应用并运行。这里的应用一般以jar包形式存在,比如前面Scala项目编译后生成的flink-scala-1.0-SNAPSHOT.jar。另外,Flink安装目录下的examples也给出了一些官方打包好的示例jar包,如examples\batch\WordCount.jar。
单击网页上的【Sumbit New Job】菜单,在详细界面中,首先单击【Add New】并选择flink-scala-1.0-SNAPSHOT.jar文件进行上传。然后单击该记录,展开后填写Job相关信息并单击【Sumbit】提交,这里主要需要指定一下输入参数,具体参数如下:
第一个是入口类,com.example.BatchJob,如果pom.xml进行了指定,则它会自动识别,当然如果不是预期的类,可以进行手动维护。
第二个参数为并行度,这里填写1,生成环境则根据集群情况进行优化配置。
第三个参数为入口函数中可以解析的参数,这个一般由开发人员给定,这里示例为--output file:////home/jack/wmsoft/out.txt表示输出的文件为out.txt文件。这里用的本地文件系统,当然你可以选择分布式文件系统,比如hdfs:///demo/input。
第四个参数为保存点路径,这里不设置,为空即可。
下面给出提交com.example.BatchJob这个Job对应的Web界面,如图所示。
当正确运行此Job后,可以查看file:////home/jack/wmsoft/out.txt文件的输出结果:
Apache,1
Flink,2
Hello,2
Word,1
在运行过程中,如果有错误,或者想看一下中间的运行日志,可以单击【Job Manager】菜单,在详细页面中单击【Log】页签进行日志查看,这个对于锁定相关错误信息,是非常有用的。对应Flink流处理应用,一旦Job提交,如果不手动取消,那么它会一直运行,且占用一定的计算资源。此时如果切换到概览(Overview)页面下,则可以看到Running Jobs任务数为1,而可用的Task Slots个数为0,此时则不能再提交其他Job运行。如图所示。
如果查看当前运行的具体Job信息,在Job Overview页签下可以看到一个Dataflow数据流图,如图所示。
图中右上角有一个【Cancel Job】按钮,单击后可以取消当前运行的Job,并释放相关的计算资源。如果需要停止Flink计算环境,则可以在终端执行如下命令:
#停止Flink计算环境
./stop-cluster.sh
停止Flink集群后,则上传的jar包都会丢失,如果有需要,则需要重新上传文件。另外,在多个jar应用程序执行时,如果资源不够,则要视情况而定,看是否需要将之前的正在执行的job取消掉。
- 点赞
- 收藏
- 关注作者
评论(0)