Flink实战-初识Flink

从2003开始,Google先后公开了三篇论文(被业界戏称为三驾马车):Google FS、MapReduce、BigTable,一举拉开了大数据时代的序幕,在这三篇论文的基础上诞生了HDFS、Spark、Storm等一大批优秀的计算框架,Flink亦是其中之一。Flink的前身是柏林和一些欧洲的大学的共同研究项目Stratosphere,后来一部分创始人从中分离出来,并在此基础上创建了Flink。作为分布式计算框架的后起之秀,Flink具备流批一体、高吞吐、低延迟等特点。

官网:https://flink.apache.org/

安装部署

大家在官网上按照自己所需的版本自行下载即可,不同的版本对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的学习资料并不多,除了官网本身的文档,我整理了一些:

posted @ 2024-07-03 17:42  破落户儿  阅读(41)  评论(0)    收藏  举报