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. Linux系统中调用短信猫发送短信(笔记)

    1, 拷贝底层串口依赖的librxtxSerial.so到JDK安装路径cp librxtxSerial.so /usr/java/{0}/jre/lib/{1} # {0}: JDK的基础目录,例如 ...

  2. Linux安装JDK、MySQL和Tomcat

    1 依赖的安装 因为JDK.Tomcat和MySQL的安装过程中需要从网上下载部分支持包才可以继续,所以需要提前安装好依赖. yum install glibc.1686 yum -y install ...

  3. zabbix-proxy搭建

    环境: 因为公司需要监控远程客户机,但server端无法主动连接agent端,客户端可以连接公司ip 公司有固定ip,可以开放某个端口给zabbixserver,客户机agent端可以主动通过外网连接 ...

  4. 在线生成PDF的网站-HTML 转 PDF 在线

    http://pdf.df5d.com/   (服务器问题,演示暂停了,但是 下面介绍的组件还是可以使用的) 将前面用到的wkhtmltopdf用一个服务器程序集成在一起,接受一个URL参数,在生成一 ...

  5. node-glob的*匹配

    目录结构 src/js/libs/app.js src/js/index.js 测试脚本 var glob = require('glob') glob('', {}, function (err, ...

  6. copy-webpack-plugin最简使用示例

    拷贝文件的插件 加载插件 $ npm install copy-webpack-plugin --save-dev API new CopyWebpackPlugin(patterns: Array, ...

  7. 一道python面试题引发的血案

    这里说的是一道阿里校招的面试题:一行代码实现对列表a中的偶数位置的元素进行加3后求和? 今天去面试同样遇到了这个题目,这道题考察的是对python高阶函数map/filter的灵活运用(具体的使用方法 ...

  8. ES6与canvas实现鼠标小球跟随效果

    最近闲来无聊,看了下ES6的语法,结合canvas实现了动画特效--随着鼠标的移动,会有小球跟随且自动消失的动画. 首先,html部分,目前就一个canvas标签. <canvas id=&qu ...

  9. 洛谷 [P2420] 让我们异或吧

    某两点之间的路径上所有边权的异或值即dis1^dis2--^disn. 由于x^y^y=x,所以dfs预处理出每一点到根节点的异或值,对于每次询问,直接输出 disu^disv. #include & ...

  10. 济南清北学堂游记 Day 1.

    快住手!这根本不是暴力! 刷了一整天的题就是了..上午三道题的画风还算挺正常,估计是第一天,给点水题做做算了.. rqy大佬AK了上午的比赛! 当时我t2暴力写挂,还以为需要用啥奇怪的算法,后来发现, ...