《Flink基础教程》阅读小记

  • 流数据更真实地反映了我们的生活方式。
  • “数据流”是指由连续数据组成的流;“流数据”是指数据流中的数据。
  • Lambda架构:1.通过批量MapReduce作业提供了虽有些延迟但是计算结果准确的计算。2.通过流处理将最新数据的计算结果初步展示出来。
  • Lambda架构需要对同样的业务逻辑进行两次编程,一次是批量计算,一次是流式计算。
  • Flink将批处理视作一种特殊的流处理。
  • 我们需要观察和分析连续事件产生的数据,所以要使用流数据。
  • 消息传输层从各种数据源(生产者)采集连续事件产生的数据,并传输给订阅了这些数据的应用程序和服务(消费者)。比如Kafka。
  • 流处理层有三个用途:1.持续地讲数据在应用程序和系统间移动;2.聚合并处理事件;3.在本地维持应用程序的状态。
  • Kafka把从生产者获得的数据分配给特定的主题,数据源将数据推送给消息队列,消费者拉取数据。数据的生产者和消费者是解耦的,到达的消息可以立刻被使用,也可以稍后被使用,消费者从队列中订阅消息,而不是由生产者向消费者广播,在消息到达的时候,消费者不必处于运行状态。
  • 流处理器(尤其是Flink)的正确性体现在计算窗口的定义符合数据产生的自然规律。
  • 用流处理器编程和用批处理器编程最关键的区别在于对时间的处理。
  • Lambda架构用定期运行的批处理器作业来实现应用程序的持续性,并通过流处理器获得预警。流处理器实时提供近似结果;批处理器层最终会对近似结果予以纠正。
  • 事件时间:事件发生的时间,时间戳。
  • 处理时间:事件被处理的时间。
  • 摄取时间:事件进入流处理框架的时间。
  • 因为分布式系统中的时钟不同步,或者一些物理原因,事件时间和处理时间往往有偏差,这意味着事件以乱序到达流处理器。
  • 为了尽可能的快,牺牲一些准确性,可以使用处理时间;如果对准确性有要求,则可以使用事件时间。
  • 窗口是一种机制,它用于将许多事件按照时间或者其他特征分组,从而将每一组作为整体进行分析(比如求和)。
  • 窗口分为时间窗口,计数窗口和会话窗口。
  • 无状态流处理每次只转换一条输入记录,并且仅根据最新的输入记录输出结果。有状态流处理维护所有已处理记录的状态值,并根据每条新输入的记录更新状态,因此输出记录(灰条)反映的是综合考虑多个事件之后的结果。
  • Flink使用异步屏障快照保证一致性。
  • Flink可以将数据当成无限流处理,也可以当成有限流处理,批处理是一种特殊的流处理。Flink通过同一个底层引擎同时支持流处理和批处理。

你可能感兴趣的:(大数据)