美文网首页
flink 学习笔记 — 初识 flink

flink 学习笔记 — 初识 flink

作者: 飞不高的老鸟 | 来源:发表于2019-11-18 21:24 被阅读0次

    Apache flink 简介

        Apache flink 是分布式流式数据处理框架,主要用于有界(bounded)和无界(unbounded)数据流的有状态处理,具有高性能、高吞吐、高容灾等特性。

    何为有界和无界数据流
    • 有界流:数据有明确的开始和结束,在数据处理的时候可以进行统一的批量处理。
    • 无界流:可以想象成水管,有数据流的开始,未定义数据流的结束。因此,数据需要进行实时的处理,不可能等到所有的数据都到达之后才进行处理。

    flink有界流.jpg
    何为状态
    • 状态是 flink 处理数据过程中所产生的中间可操作结果,可用于任务的恢复,flink 的checkpoint机制就是状态很有用的产物(checkpoint机制在后续会有深入介绍)。

    flink 架构

        如下图是 flink 简单架构图解:


    flink简单架构图.png

        由图中可以看到,在 flink 程序提交执行的过程中会涉及到3个部分,其中 JobManager 和 TaskManager 是运行的两个JVM进程:

    • Cli:提交程序的客户端,我们的任务程序会通过 Cli 进行解析,然后提交给 JobManager 。同时,Cli 也是接收 JobMnager 结果的接收者。
    • JobManager:它是 flink 的 master 进程,对 TaskManager进行资源管理,它接受 Cli 提交的任务流,然后根据 TaskManger 当前的资源使用情况进行任务的分配。同时,它与 TaskManger 时刻保持通信,监听 TaskManger 的健康状态。另外,JobManager 也是 保存 checkpoint 的地方。通常情况下,JobManager 会存在单点的问题,因此,需要考虑在此处做HA处理。
    • TaskManger:它是 flink 的 worker 进程,在 TaskManager 启动时会分配相应的 slot 槽位,slot 是 flink 任务执行的最小单元,各个 slot 之间内存均分,cpu 共享。从 JobManager 发来的任务通常以 task 的形式在这里进行执行, 。在hdfs文件系统中,TaskManager 通常跟 DataNode 共存,以达到计算向数据移动的目的。

    flink 部署使用

        flink 的部署方式有多种,主要有local 模式、standalone 模式、yarn 模式等等,这里主要通过 local 模式进行简单应用测试:

    flink 下载安装

        flink local模式很简单(前提是已经安装了 JDK),去官网下载 flink 安装包,然后进行解压:

    tar zxvf flink-1.8.2-bin-scala_2.11.tgz
    cd flink-1.8.2
    

         启动 flink,然后通过 jps 进行验证,会看到 JobManager 进程(StandaloneSessionClusterEntrypoint)和 TaskManager 进程(TaskManagerRunner):

    ./bin/start-cluster.sh
    

         下面我们可以登录本地的 flink web界面进行一些操作(地址:http://localhost:8081/),如下图:

    flinkweb界面.jpg
    • 由图中可以看到,在本地模式下,flink 只有一个 TaskManager,每个 TaskManager 默认分配了一个槽位 slot。当然,这种方式只适用于本地的程序测试,在生产中,通常采用 standalone 模式或者 yarn 模式。
    flink 任务提交

    在本地模式下,flink 程序可以通过命令行进行任务提交,也可以通过 web 界面进行提交,

    1. 命令行提交,这是 flink 自带的一个单词统计的例子:
    cd flink-1.8.2
    ./bin/flink run  /Users/liudi/app/flink-1.8.2/examples/batch/WordCount.jar
    
    Starting execution of program
    Executing WordCount example with default input data set.
    Use --input to specify file input.
    Printing result to stdout. Use --output to specify output path.
    (a,5)
    (action,1)
    ......
    
    1. web 界面任务提交:
    • 在刚才展示的界面左侧栏里有一菜单 submit new job,然后 add new 即可添加任务成功。
    flink任务执行图.jpg

         通过web界面进行任务提交,我们可以清晰的观擦任务每一步的执行,而且任务的执行结果状态也可以清晰可见。

    Ok,通过上面两种方式可以进行任务的提交,这里我们使用了默认的配置信息。事实上,flink 在任务提交时可以进行多个参数的配置,适合我们进行 flink 的调优工作,这里就不多做介绍。

    总结

         这里主要对 flink 做了一个简单的介绍,并对其安装、部署、启动,以及 flink 任务的提交做了简单操作,接下来会对 flink 慢慢进行深入的了解。当然,纯属于个人随记,有理解偏差的地方,还请不吝指正。

    相关文章

      网友评论

          本文标题:flink 学习笔记 — 初识 flink

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