Apache Flink:十分可靠,一分不差

Apache Flink 的提出背景

我们先从较高的抽象层次上总结当前数据处理方面主要遇到的数据集类型(types of datasets)以及在处理数据时可供选择的处理模型(execution models),这两者经常被混淆,但实际上是不同的概念

数据集的类型

当前数据处理主要遇到的数据集类型可分为两大类,①Unbounded,无限的数据集,体现为快速持续到达的流式数据 ②Bounded,有限的数据集,通常不可改变,即不会发生更新的数据集

传统数据处理框架通常把现实世界的数据抽象为有限的数据集,或者说是批(batch)数据,但现实世界的数据实际上是无限的,下面是一些 Unbounded 数据集的例子

  1. 产生于终端用户与移动应用或 Web 应用交互的数据

  2. 物理传感器传输的实时测量数据

  3. 金融市场的实时数据

  4. 机器日志

数据处理模型的类型

主要也分为两类,①Streaming,流式的,在数据不断产生的同时持续处理数据 ②Batch,批式的,在有限的时间内完成一批数据完整的处理,在处理结束后释放计算资源

尽管不对应的搭配的处理效果可能不尽如人意,但是确实可以用任一种数据处理模型来处理任一种类型的数据集,例如,批处理模型长久以来的被用于处理 Unbounded 数据集,尽管它在 Windowing,状态管理和无序数据处理上有着各种各样的问题

Flink 是基于流式处理模型设计的,它连续地处理不断产生的数据,这种在数据集类型和数据处理模型上的一致性保证了数据处理的准确性和高效性

Apache Flink 的流式基因

Flink 是一个为分布式流式数据处理设计的开源框架,①它能保证即使处理的数据以乱序到达,或者延时到达,都能得到正确的处理结果 ②Flink 是有状态的(stateful),并且有良好的容错性(fault-tolerant),因此它能够在出错时无缝地恢复,并且可以保证 Excatly-once 的应用状态 ③在大规模应用上有良好的表现,可以在数千个节点上以高吞吐量和低延迟运行

前面提到了保持数据集类型和数据处理模型一致性的好处,下面提到的 Flink 的性质,包括状态管理,无序数据处理和灵活的 Windowing 等等,都是针对准确地在无限数据集上进行计算设计和优化的

Excatly-once 语义

Flink 为带状态的计算提供了 Excatly-once 的语义保证,有状态意味着应用程序可以维护已处理数据的集合或聚集结果,Flink 的 checkpointing 机制为在故障发生时恢复应用程序状态保证了 Excatly-once 的语义

Event time 语义

Flink 支持流处理和 Windowing 的 Event time 语义,Event time 能简化在流上对无序到达的事务或延迟到达的事务计算出准确结果

灵活的 Windowing

除了数据驱动的 Windows,Flink 支持基于时间,计数或会话的 Windowing,可以通过定制 Windowing 的触发条件来支持复杂的流模式,Flink 的 Windowing 提供了模拟数据创建时的环境的方法

轻量级的 Fault tolerant

Flink 提供轻量级的 Fault tolerant 以支持同时提供高吞吐率和 Excatly-once 的语义,Flink 可以从错误中无数据丢失(zero data loss)的恢复,这不会太过影响 Flink 的可靠性和性能

高吞吐与低延迟

Savepoint 机制

Flink 的 Savepoint 机制提供了版本化妆台的功能,在不丢失状态和仅需短暂停工的条件下,支持了上传应用程序以及重新处理历史数据

分布式的支持

Flink 可以在数千个节点上的部署和运行,提供了 Mesos 和 YARN 上运行的支持

Apache Flink 的批式兼容

Flink 使用 DataStream API 处理 Unbounded 数据集,用 DataSet API 处理 Bounded 数据集

在 Flink 框架下,Bounded 数据集可以视为 Unbounded 数据集的特例,DataSet API 正是这么处理 Bounded 数据集的,它将 Bounded 数据集视为有限的流

Flink 使用大同小异的方式处理 Bounded 和 Unbounded 数据集

[Essay] Apache Flink:十分可靠,一分不差的更多相关文章

  1. Peeking into Apache Flink's Engine Room

    http://flink.apache.org/news/2015/03/13/peeking-into-Apache-Flinks-Engine-Room.html   Join Processin ...

  2. 新一代大数据处理引擎 Apache Flink

    https://www.ibm.com/developerworks/cn/opensource/os-cn-apache-flink/index.html 大数据计算引擎的发展 这几年大数据的飞速发 ...

  3. Apache Flink 流处理实例

    维基百科在 IRC 频道上记录 Wiki 被修改的日志,我们可以通过监听这个 IRC 频道,来实时监控给定时间窗口内的修改事件.Apache Flink 作为流计算引擎,非常适合处理流数据,并且,类似 ...

  4. Apache Flink:特性、概念、组件栈、架构及原理分析

     2016-04-30 22:24:39    Yanjun Apache Flink是一个面向分布式数据流处理和批量数据处理的开源计算平台,它能够基于同一个Flink运行时(Flink Runtim ...

  5. Apache Flink 漫谈系列 - JOIN 算子

    聊什么 在<Apache Flink 漫谈系列 - SQL概览>中我们介绍了JOIN算子的语义和基本的使用方式,介绍过程中大家发现Apache Flink在语法语义上是遵循ANSI-SQL ...

  6. 终于等到你!阿里正式向 Apache Flink 贡献 Blink 源码

    摘要: 如同我们去年12月在 Flink Forward China 峰会所约,阿里巴巴内部 Flink 版本 Blink 将于 2019 年 1 月底正式开源.今天,我们终于等到了这一刻. 阿里妹导 ...

  7. 深入理解Apache Flink

    Apache Flink(下简称Flink)项目是大数据处理领域最近冉冉升起的一颗新星,其不同于其他大数据项目的诸多特性吸引了越来越多人的关注.本文将深入分析Flink的一些关键技术与特性,希望能够帮 ...

  8. 什么是Apache Flink

    大数据计算引擎的发展 这几年大数据的飞速发展,出现了很多热门的开源社区,其中著名的有 Hadoop.Storm,以及后来的 Spark,他们都有着各自专注的应用场景.Spark 掀开了内存计算的先河, ...

  9. Kafka设计解析(二十)Apache Flink Kafka consumer

    转载自 huxihx,原文链接 Apache Flink Kafka consumer Flink提供了Kafka connector用于消费/生产Apache Kafka topic的数据.Flin ...

随机推荐

  1. Python 正则表达式 (python网络爬虫)

    昨天 2018 年 01 月 31 日,农历腊月十五日.20:00 左右,152 年一遇的月全食.血月.蓝月将今晚呈现空中,虽然没有看到蓝月亮,血月.月全食也是勉强可以了,还是可以想像一下一瓶蓝月亮洗 ...

  2. Asp.net core 2.0.1 Razor 的使用学习笔记(一)

    环境:vs2017 版本:15.5.6 一.新建项目 1.文件>新建>项目>Visual c#>.NET Core>ASP.NET Core Web应用程序(“.NET ...

  3. 完美解决打开github速度慢的问题

    摘抄自知乎. 修改hosts(HOSTS文件路径:C:\Windows\System32\drivers\etc\hosts) 1.打开Dns检测|Dns查询 - 站长工具 2.在检测输入栏中输入ht ...

  4. 企业级Docker私有仓库部署(https)

    部署环境 Centos7.3 x64 docker-ce-17.06.0 docker-compose-1.15.0 Python-2.7.5(系统默认) 部署目标 使用HTTPS协议 支持Clair ...

  5. 深度优化LNMP之MySQL

    MySQL数据库优化框架体系 1.硬件层面优化 2.操作系统层面优化 3.MySQL数据库层面优化 4.MySQL安全优化 5.网站集群架构上的优化 6.MySQL流程.制度控制优化 1 硬件层面优化 ...

  6. C#基础(五)--枚举的含义及其应用

    本章讲解如下枚举的如下几个知识点:    1.什么是枚举?    2.枚举是值类型还是引用类型?    3.如何定义枚举?    4.枚举的好处?    5.枚举在实际系统开发过程中的用处?    一 ...

  7. 《Thinking in Java》学习笔记(七)

    1.关于反射还有一些需要补充的 package reflect; public class HiddenClass { public A HiddenA(){ return new A(); } } ...

  8. 自动化测试selenium(三) 由于iframe 定位不到元素

    iframe原因定位不到元素 现在的项目后台基本都是上左右结构,要出现这个结构效果,需要使用到了iframe标签: 我们先说说iframe在java中使用的方法: driver.switchTo(). ...

  9. Linux压缩解压命令汇总

    01-.tar格式 解包:[*******]$ tar xvf FileName.tar 打包:[*******]$ tar cvf FileName.tar DirName (注:tar是打包,不是 ...

  10. Netty(一):入门篇

    匠心零度 转载请注明原创出处,谢谢! 说在前面 上篇文章对Netty进行了初探:Netty初探,主要介绍了下我们为什么需要学习netty.netty介绍等:本篇文章接着上篇文章的内容.本篇为了方便大家 ...