zoukankan      html  css  js  c++  java
  • flink入门到实战(1)入门学习

    Flink学习笔记

    一.简介

    1.定义:

    ​ 针对流数据和批数据的分布式处理引擎。它主要是由 Java 代码实现。。

    2.应用场景:

    ​ 流数据:把所有任务当成流来处理,处理观察和分析连续事件产生的数据。

    3.重要角色:

    ​ ①Client :用来提交任务给JobManager。

    ​ ②JobManager:分发任务给 TaskManager 去执行。

    ​ ③TaskManager:通过心跳的汇报任务状态。

    4.接口:

    ​ 面向流处理和面向批处理2种接口。

    5.flink基石:

    ​ Checkpoint:Chandy-Lamport 算法实现 了分布式一致性的快照来提供exactly-once 的语义。

    ​ State:托管状态(managed state)并提供了 API 接口;像java集合类一样来管理状态。

    ​ Time:watermark 的机制,解决了基于事件时间处理时的数据乱序和数据迟到的问题;

    ​ Window:提供了窗口操作来进行流计算,滚动窗口、滑动窗口、会话窗口等。

    二.与storm对比

     stormflink
    状态管理 无状态,需用户自行进行状态管理 有状态
    窗口支持 对事件窗口支持较弱,缓存整个窗口的所有数据,窗口结束时一起计算 窗口支持较为完善,自带一些窗口聚合方法,并且会自动管理窗口状态。
    消息投递 At Most Once At Least Once At Most Once At Least Once Exactly Once
    容错方式 ACK 机制:对每个消息进行全链路跟踪,失败或超时进行重发。 检查点机制:通过分布式一致性快照机制,对数据流和算子状态进行保存。在发生错误时,使系统能够进行回滚。

    三.开发环境:window下配置jdk1.8和maven环境

    四.案例

    1.统计单词数

    package flinkDemo
    import org.apache.flink.api.scala._
    import org.apache.flink.core.fs.FileSystem.WriteMode
    /**
      * @Description * @Author <613024710@qq.com>
      * @Version V1.0
      * @Since 1.0
      * @Date 2019/6/13 0013 14:53
      * @Description * @ClassName WordCount
      */
    object WordCount {
      def main(args: Array[String]) {
        val env = ExecutionEnvironment.createLocalEnvironment(1)
    
        //从本地读取文件
        val text = env.readTextFile("D:\\data\\words.txt")
        //单词统计
        val counts = text.flatMap { _.toLowerCase.split(" ") filter { _.nonEmpty } }
          .map { (_, 1) }
          .groupBy(0)
          .sum(1)
    
        //输出结果
        counts.print()
        //保存结果到txt文件
        counts.writeAsText("D:\\data\\output.txt", WriteMode.OVERWRITE)
        env.execute("Scala WordCount Example")
      }
    
    }
    结果:
    (administered,1)
    (allow,1)
    (along,1)
    (an,1)
    (and,5)
    (both,1)
    (by,1)
    (code,1)
    (collaborates,1)
    (commercial,1)
    (community,2)
    (conferences,1)
    (contributed,1)
    (developed,1)
    (distributable,1)
    (documentation,1)
    (endless,1)
    (even,1)
    (for,3)
    (foundation,1)
    (freely,1)
    (help,1)
    (hosts,2)
    (in,1)
    (index,1)
    (is,2)
    (it,1)
    (keep,1)
    (library,1)
    (license,2)
    (lists,1)
    (mailing,1)
    (making,1)
    (meetups,1)
    (modules,2)
    (more,1)
    (much,1)
    (of,1)
    (on,1)
    (open,1)
    (osi-approved,1)
    (package,1)
    (party,1)
    (possibilities,1)
    (python,4)
    (python's,3)
    (software,1)
    (source,1)
    (standard,1)
    (the,6)
    (third,1)
    (thousands,1)
    (touch,1)
    (under,1)
    (usable,1)
    (use,1)
    (way,1)
    (will,2)
    (you,2)
    作者:大码王

    -------------------------------------------

    个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!

    如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!

    万水千山总是情,打赏一分行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主,哈哈哈(っ•?ω•?)っ???!

  • 相关阅读:
    转数组
    字符串分割(分行)
    字符串操作:判断相等、判断首尾、大小写转换
    字符串操作:索引位置、去空格、替换字符串
    数组(遍历、转置、元素替换、排序、复制)
    专利申请教程
    循环语句
    条件语句
    输入
    h.264直接预测
  • 原文地址:https://www.cnblogs.com/huanghanyu/p/12841179.html
Copyright © 2011-2022 走看看