微信公众号: 深广大数据Club
关注可了解更多大数据相关资讯。问题或建议,请公众号留言;
如果你觉得深广大数据Club对你有帮助,欢迎转发朋友圈
最近一直在写Flink源码解析系列的文章,也鼓励大家自己去调试代码了解流程,但一直没有介绍如果构建你的第一个Flink Application,这次补上。
在本文中,我们将介绍5个步骤,指导你在本地设置第一个运行的Flink应用程序。我们讨论开始时的软件需求,并指出一些帮助您理解框架功能的培训资源。如果您喜欢从头开始,我们还将向您展示如何引导应用程序!这个快速概述将使您能够在几乎没有时间的情况下启动Flink应用程序。
您可以在Linux、Mac OS X和Windows上开发和执行Flink应用程序。因为社区中的大多数开发人员都在基于unix的设置中操作,所以这个环境包含最丰富的工具支持。首先,真正的要求是安装Java开发工具包(JDK) 8——无论您是要使用Java还是Scala进行开发。虽然开发Flink应用程序并非严格要求,但我们建议您也在计算机上安装以下软件:
Apache Maven 3.x。目前软件开发不管是java还是scala,Maven自动化构建是其中的一种常用方式。此外,Flink还提供了Maven原型来引导新的Flink Maven项目。
用于Java和/或Scala开发的IDE。特别是如果你要使用Scala,我们推荐使用IntelliJ,因为它对Maven和易于安装的Scala插件提供了开箱即用的支持。对于Java, Eclipse或Netbeans也同样适用。
如果您更喜欢从头开始自己的项目,那么您可以跳过这个部分,直接进入下一步。
培训材料的练习将帮助您熟悉Flink的操作方式,并随着时间的推移帮助您轻松掌握时间和状态管理等更复杂的主题。
GitHub上提供了这些练习(和可能的解决方案),所以您可以轻松地克隆项目并使用Maven来构建它:
git clone https://github.com/Jonathan-Wei/flink-training-exercises.git cd flink-training-exercises mvn clean package
这需要几分钟,具体时间取决于连接的速度——Maven将下载所有必需的依赖项。如果一切按计划进行,构建成功,那么你就在正确的轨道上!
当然,从现有项目开始是使用Flink进行应用程序开发的最简单的方法。但是,如果您想从头创建自己的项目,该怎么办呢?Flink提供了Maven原型来为Java和Scala应用程序生成Maven项目。例如,要为Flink应用程序创建一个quickstart Java项目,可以运行以下命令:
mvn archetype:generate / -DarchetypeGroupId=org.apache.flink / -DarchetypeArtifactId=flink-quickstart-java / -DarchetypeVersion=1.7.0
上面的命令为Flink 1.7.0生成一个Maven项目,其中包含两个类:StreamingJob和BatchJob;它们分别为流和批处理Flink程序提供了基本框架。你可以调整参数来匹配你的版本和命名首选项!我们建议您将该项目导入您选择的IDE中,以便开发一个可运行的示例。如果您正在与灵感作斗争,您可以从Flink文档中获得一些提示。
虽然Flink是一个分布式数据处理系统,但是在本地环境中使用您的机器更容易启动它。在典型的设置中,主机(JobManager)和worker (taskmanager)作为单独的JVM进程在单独的机器上运行;但是Flink还包括一种模式,允许您在与多线程进程相同的JVM中执行应用程序。这种模式允许您在IDE中轻松地开发、调试和执行Flink应用程序,就像任何其他Java或Scala项目一样。要启动应用程序,只需像往常一样运行main()方法!
如果您想知道正在运行的应用程序的底层发生了什么,那么您可以轻松地使用捆绑在Flink中的web接口来可视化和监视它。要启用本地开发的接口,您需要向POM文件添加一个新的依赖项:
<dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-runtime-web_2.11</artifactId> <version>${flink.version}</version> </dependency>
并显式创建具有所需配置的本地执行环境:
import org.apache.flink.configuration.ConfigConstants; ... Configuration config = new Configuration(); config.setBoolean(ConfigConstants.LOCAL_START_WEBSERVER, true); StreamExecutionEnvironment env = StreamExecutionEnvironment.createLocalEnvironment(config); ...
一旦程序运行,Flink web接口现在应该可以在http://localhost:8081下使用,看起来有点像下面的图像。如果您在IDE中没有启用自动导入,请记住在更改POM文件之后更新Maven项目——这可能会在您第一次尝试访问web界面时导致错误。
恭喜你!您刚刚在IDE中运行了第一个Flink应用程序。Flink文档中的教程进一步介绍了如何设置本地Flink集群,并像向远程集群提交作业一样提交作业。
Flink源码解析 | 从Example出发理解Flink-Flink启动
Flink源码解析 | 从Example出发:读懂本地任务执行流程
Flink源码解析 | 从Example出发:读懂集群任务执行流程
Flink源码解析 | 从Example出发:读懂Flink On Yarn任务执行流程
Flink源码解析 | 从Example出发:读懂start-start-shell.sh任务执行流程
Flink源码解析 | 从Example出发:理解StreamGraph的生成过程
Flink源码解析 | 从Example出发:理解ExecutionGraph的生成过程
HBase技术社区