Apache Flink的开发环境
对于Flink的开发,在Linux mac 以及Windows上都可以进行,但是Unix类型的系统往往具有最丰富的工具支持
而无论什么环境,Flink代码都需要JDK的支持,在开发的时候,最好也准备好Maven来进行架构管理
以及一个趁手的IDE
我们尝试导入一个项目进入IDE中
git clone https://github.com/streaming-with-flink/examples-scala
并在IDE中,选择File -> New -> Project from Existing Source
然后勾选上 Import project from external model 以及 Maven
然后运行的时候,直接选择main方法启动即可
而这个时候, main方法会将Dataflow组装好,然后在StreamExecutionEnviroment.execute()方法被调用的时候提交到远程的JobMananger上
JobManager会将执行的任务分配给一个或者多个TaskManager上
当然在本地运行的时候,JVM会以独立线程的方式启动JobManager和TaskManager,至于TaskManager的Slot 则是等于CPU的线程数,这样做到本地测试Flink应用.
而在本地测试Flink的时候需要注意几点
除非手动制定了并行度,那么任务线程数可能和你的CPU个数一样多
把Flink程序发给JobManager执行相比,本地执行可能出现类加载的问题
虽然是本地JVM,但是还是存在跨线程通信问题.记录还是要被序列化.
至于如何创建Flink Maven项目,则可以打开终端输入如下命令进行创建一个Flink项目
mvn archetype:generate -DarchetypeGroupld=org.apache.flink -DarchetypeArtifactld=flink-test -DarchetypeVersion=l.7.1 -Dgroupld=flink.quickstart -Dartifactld=flink-scala-project -Dversion=0.1 -Dpackage=org.apache.flink.quickstart
这样就会创建一个包含BatchJob和StreamingJob的项目