Flink实战-初识Flink
从2003开始,Google先后公开了三篇论文(被业界戏称为三驾马车):Google FS、MapReduce、BigTable,一举拉开了大数据时代的序幕,在这三篇论文的基础上诞生了HDFS、Spark、Storm等一大批优秀的计算框架,Flink亦是其中之一。Flink的前身是柏林和一些欧洲的大学的共同研究项目Stratosphere,后来一部分创始人从中分离出来,并在此基础上创建了Flink。作为分布式计算框架的后起之秀,Flink具备流批一体、高吞吐、低延迟等特点。
安装部署
大家在官网上按照自己所需的版本自行下载即可,不同的版本对Java的运行版本可能有所要求。
Linux部署
下载后直接解压,运行./bin/start-cluster.sh启动,启动后会默认提供一个WebUI来监视集群的状态和正在运行的作业:http://localhost:8081/
Windows部署
下载完成后,运行start-cluster.bat启动,管理界面:http://localhost:8081/ 与Linux略有不同的是,Windows的可安装版本似乎只支持到1.9.3,本系列也是在这个版本的基础上进行的研究。

官方文档:https://nightlies.apache.org/flink/flink-docs-release-1.19/zh/
常用命令
flink list -a #所有
flink list -r #正在运行的
flink cancel <jobid> #停止作业
#提交job
flink run -c em.im.pve.flinkdemo flinkdemo.jar # -c 指定main方法;-p 指定并行度
快速上手
Step 1: 快速创建一个Flink项目,Maven依赖如下:
<dependencies>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-java</artifactId>
<version>1.9.3</version>
</dependency>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-streaming-java_2.11</artifactId>
<version>1.9.3</version>
</dependency>
</dependencies>
Step 2:创建log.txt文件,内如如下:
孙三
孙三
赵一
李四
郑七
李四
郑七
钱二
李四
周五
郑七
赵一
李四
郑七
李四
赵一
吴六
孙三
郑七
吴六
Step 3:从log.txt中读取数据,按用户名分组并统计个数
public class Main {
public static void main(String[] args) {
try {
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
//读取用户名
DataStreamSource<String> source = env.readTextFile("D:\\log.txt");
source.flatMap((String line, Collector<Tuple2<String, Integer>> out) -> {
out.collect(Tuple2.of(line, 1));
}).returns(Types.TUPLE(Types.STRING, Types.INT))
.keyBy(0)
.sum(1)
.writeAsText("d:\\result.txt");
env.execute("用户统计");
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("执行完毕!");
}
}
Step 4:切换到flink的根目录,运行flink程序
.\flink run -c em.im.cbd.Main D:\WorkCodeTest\em.im.pve\implat\implat-flink\target\implat-flink-1.0-SNAPSHOT.jar
值得一提的是,Flink可以以嵌入式模式执行,所以在本地的IDE中运行和调试就可以调试Flink程序。前期入门的最好方式就是直接在本地运行,快速上手,后期再去实践集群搭建、作业提交、系统调优这些流程。
相关资料
网上关于Flink的学习资料并不多,除了官网本身的文档,我整理了一些:

浙公网安备 33010602011771号