前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >BigData | 优秀的流处理框架 Flink

BigData | 优秀的流处理框架 Flink

作者头像
Sam Gor
发布2019-07-08 23:08:59
8910
发布2019-07-08 23:08:59
举报
文章被收录于专栏:SAMshareSAMshareSAMshare

? Index

  • Flink核心模型介绍
  • Flink的架构介绍
  • Flink与Spark的异同之处

? Flink核心模型介绍

Apache Flink就是其中的翘楚,它采用了基于操作符(operator)的连续流模型,可以做到微秒的延迟。Flink最核心的数据结构是Stream,它代表一个运行在多个分区上的并行流,它没有边界,随着时间的增长而不断变化,而且它是逐条进行操作的,每当有新数据进行就会被执行,这也是Flink低延迟的根本。

当一个Flink程序被执行的时候,会被映射为Streaming Dataflow,如下图:

图来自极客时间

其中,Streaming Dataflow由 Operator以及Stream组成,Transformation Operator把一个或多个Stream转换成Stream,一个Stream可以包含多个分区(Stream Partitions),一个操作符可以被分成多个操作符子任务,每个子任务在不同的线程或者不同的机器节点中独立执行。

Stream与Operator之间传输数据有两种形式:

  • One-to-One(一对一):Stream维护着分区以及元素的顺序,每个操作符与Stream之间一一对应。
  • Redistributing(重新分布):Stream中数据的分区会发生改变,操作符的每一个子任务把数据发送到不同的目标子任务。

? Flink的架构介绍

Flink的架构如下图所示:

图来自极客时间

同样的,这架构也是大致分成4层:存储层、部署层、核心处理引擎层、high-level的API和库

  • 存储层:兼容多种主流文件系统,如HDFS、Amazon S3,多种数据库,如HBase,多种数据流,如Kafka、Flume等
  • 部署层:支持本地运行,还可以在独立集群或者被YARN或Mesos管理的集群上运行,也可以部署在云端
  • 核心处理引擎:其实就是Streaming Dataflow,因为所有的程序都会被映射成这种形式来执行
  • High-Level:核心API就是DataSet API以及DataStream API,一个用来做批处理、一个用来做流处理

? Flink与Spark的异同之处

Flink的诞生总是有原因的,简单来说因为它统一了批处理和流处理,并且对于实时计算可以实现微秒级别的输出。

与Spark一样的地方

  • 基于内存计算
  • 都有统一的批处理和流处理API
  • 都支持SQL编程
  • 都支持多种转换操作,如map、filter、count、groupBy等等
  • 都有完善的错误恢复机制
  • 都支持Exactly One的语义一执行

与Spark不一样的地方

  • Spark虽然也支持流处理,但是其实也还是批处理,因为它只是把流处理当成了window很小的批处理,所以延迟性得不到保证;而Flink是基于每个事件去处理,每当由新数据进来的时候就会马上执行,延迟上明显优于Spark
  • 虽然都支持SQL编程,但Spark提供的SparkSQL会在使用性能上更优,而Flink提供的Table API仍有很大的进步空间,如相应的优化、扩展和性能方面
  • 生态圈方面,Spark会明显优于Flink

? Spark和Flink的适用场景

在下面的场景,可以优先使用Spark:

  • 数据量大而且业务逻辑复杂的批处理,并且对计算效率有很高要求
  • 基于历史数据的交互式查询
  • 对实时流数据处理,延迟仅仅需要数百毫秒到数秒之间

在下面的场景,可以优先使用Flink:

  • 对延迟要求很高的实时数据处理场景,如实时日志报表

? References

  • 百度百科
  • 蔡元楠-《大规模数据处理实战》21小节 —— 极客时间
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 SAMshare 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ? Index
  • ? Flink核心模型介绍
  • ? Flink的架构介绍
  • ? Flink与Spark的异同之处
    • 与Spark一样的地方
      • 与Spark不一样的地方
      • ? Spark和Flink的适用场景
      • ? References
      相关产品与服务
      大数据
      全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档