美文网首页
flink入门第一课

flink入门第一课

作者: 打怪兽的黄小妹 | 来源:发表于2019-01-16 18:31 被阅读0次

    1.什么是flink

            flink官网的解释是:Apache Flink is a framework and distributed processing engine for stateful computations over unbounded and bounded data streams. Flink has been designed to run in all common cluster environments, perform computations at in-memory speed and at any scale。

            即:flink是一个分布式的处理无限(无边界)或者有限(有边界)流数据的有状态的框架。它可以在任何规模的集群环境中运行,工作状态优先存在内存中,当内存空间不够时,继续往磁盘存储,所以计算速度非常快,是一个实时的流计算框架。

           我们的现实生活中几乎所有的数据都可以成为是流数据,比如信用卡交易数据、传感器测量数据、机器日志数据或者用户在网页上的交互数据。无边界数据是指有起点而没有终点的数据,它们必须被连续的处理。有边界的数据有终点,它们可以被存储下来集中处理,对有边界数据的处理成为“批处理”。下图可以清晰的展示有边界数据和无边界数据的区别。

    有边界和无边界数据

          Flink既可以处理有边界数据也可以处理无边界数据。并且flink使用同一个引擎处理这两种数据。

    2.flink的安装与运行

        2.1 提前需求:Java1.8及以上版本

        2.2 安装:brew install apache-flink

        2.3 检查是否安装成功:flink --version

        2.4 启动一个本地flink集群:./bin/start-cluster.sh(/usr/local/Cellar/apache-flink/1.7.1/libexec目录下)

        2.5 浏览器输入:http://localhost:8081检查集群是否启动成功

    本地集群启动成功

    3.第一个flink程序(WordCount)

        3.1 Idea中创建一个maven项目

        3.2 pom文件中加入flink的依赖:

              </dependency>

                <groupId>org.apache.flink</groupId>

                <artifactId>flink-streaming-java_2.12</artifactId>

                <version>1.7.1</version>

                <scope>provided</scope>

            </dependency>

        3.3 复制 flink git项目中wordcount代码(该代码逻辑请自行学习,此处不再详述)

            代码地址:https://github.com/apache/flink/blob/master/flink-examples/flink-examples-streaming/src/main/java/org/apache/flink/streaming/examples/socket/SocketWindowWordCount.java

        3.4 进入项目目录下打包:maven package

        3.5 在flink集群上运行程序

            3.5.1 使用netcat监听9000端口:$ nc -l 9000

            3.5.2 运行项目:(注:启动时,一定要写全主类的全路径,否则会出现报错,详见后面)

                $ flink run --class com.hui.learn.SocketWindowWordCount /Users/didi/IdeaProjects/flinklearn/target/flink-learn-1.0-SNAPSHOT.jar --port 9000

                此时,会在flink的监控页面出现任务信息:

    任务运行信息

            3.5.3 在9000端口下输入以下信息:

                $ nc -l 9000

                    what is is you r name

                此时,flink监控界面每5s钟读取页面的输入流,并对单词进行计数,结果将输出到:log/flink-*-taskexecutor-*.out文件中,查看结果:

    wordcount输出结果

        3.6 停止集群:$ ./bin/stop-cluster.sh

    4.异常分析:

        4.1 $ flink run /Users/didi/IdeaProjects/flinklearn/target/flink-learn-1.0-SNAPSHOT.jar --port 9000

            异常:org.apache.flink.client.program.ProgramInvocationException: Neither a 'Main-Class', nor a 'program-class' entry was found in the jar file.未指定主类异常,将主类加上:

        4.2 $ flink run --class SocketWindowWordCount /Users/didi/IdeaProjects/flinklearn/target/flink-learn-1.0-SNAPSHOT.jar --port 900

            异常:org.apache.flink.client.program.ProgramInvocationException: The program's entry point class 'SocketWindowWordCount' was not found in the jar file.提示找不到该主类,将主类全路径写上:

        4.3 $ flink run --class com.hui.learn.SocketWindowWordCount /Users/didi/IdeaProjects/flinklearn/target/flink-learn-1.0-SNAPSHOT.jar --port 9000

            Bingo!!!启动成功!!!!

    5.查看任务列表

    任务列表

    6.取消任务(根据任务ID)

    取消任务

    相关文章

      网友评论

          本文标题:flink入门第一课

          本文链接:https://www.haomeiwen.com/subject/qqxvdqtx.html