[Essay] Apache Flink:十分可靠,一分不差
Apache Flink:十分可靠,一分不差
Apache Flink 的提出背景
我们先从较高的抽象层次上总结当前数据处理方面主要遇到的数据集类型(types of datasets)以及在处理数据时可供选择的处理模型(execution models),这两者经常被混淆,但实际上是不同的概念
数据集的类型
当前数据处理主要遇到的数据集类型可分为两大类,①Unbounded,无限的数据集,体现为快速持续到达的流式数据 ②Bounded,有限的数据集,通常不可改变,即不会发生更新的数据集
传统数据处理框架通常把现实世界的数据抽象为有限的数据集,或者说是批(batch)数据,但现实世界的数据实际上是无限的,下面是一些 Unbounded 数据集的例子
产生于终端用户与移动应用或 Web 应用交互的数据
物理传感器传输的实时测量数据
金融市场的实时数据
机器日志
数据处理模型的类型
主要也分为两类,①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:十分可靠,一分不差的更多相关文章
- Peeking into Apache Flink's Engine Room
http://flink.apache.org/news/2015/03/13/peeking-into-Apache-Flinks-Engine-Room.html Join Processin ...
- 新一代大数据处理引擎 Apache Flink
https://www.ibm.com/developerworks/cn/opensource/os-cn-apache-flink/index.html 大数据计算引擎的发展 这几年大数据的飞速发 ...
- Apache Flink 流处理实例
维基百科在 IRC 频道上记录 Wiki 被修改的日志,我们可以通过监听这个 IRC 频道,来实时监控给定时间窗口内的修改事件.Apache Flink 作为流计算引擎,非常适合处理流数据,并且,类似 ...
- Apache Flink:特性、概念、组件栈、架构及原理分析
2016-04-30 22:24:39 Yanjun Apache Flink是一个面向分布式数据流处理和批量数据处理的开源计算平台,它能够基于同一个Flink运行时(Flink Runtim ...
- Apache Flink 漫谈系列 - JOIN 算子
聊什么 在<Apache Flink 漫谈系列 - SQL概览>中我们介绍了JOIN算子的语义和基本的使用方式,介绍过程中大家发现Apache Flink在语法语义上是遵循ANSI-SQL ...
- 终于等到你!阿里正式向 Apache Flink 贡献 Blink 源码
摘要: 如同我们去年12月在 Flink Forward China 峰会所约,阿里巴巴内部 Flink 版本 Blink 将于 2019 年 1 月底正式开源.今天,我们终于等到了这一刻. 阿里妹导 ...
- 深入理解Apache Flink
Apache Flink(下简称Flink)项目是大数据处理领域最近冉冉升起的一颗新星,其不同于其他大数据项目的诸多特性吸引了越来越多人的关注.本文将深入分析Flink的一些关键技术与特性,希望能够帮 ...
- 什么是Apache Flink
大数据计算引擎的发展 这几年大数据的飞速发展,出现了很多热门的开源社区,其中著名的有 Hadoop.Storm,以及后来的 Spark,他们都有着各自专注的应用场景.Spark 掀开了内存计算的先河, ...
- Kafka设计解析(二十)Apache Flink Kafka consumer
转载自 huxihx,原文链接 Apache Flink Kafka consumer Flink提供了Kafka connector用于消费/生产Apache Kafka topic的数据.Flin ...
随机推荐
- [搬运] .NET Core 2.1中改进的堆栈信息
原文 : Stacktrace improvements in .NET Core 2.1 作者 : Ben Adams 译者 : 张很水 . NET Core 2.1 现在具有可读的异步堆栈信息!使 ...
- Python 正则表达式 (python网络爬虫)
昨天 2018 年 01 月 31 日,农历腊月十五日.20:00 左右,152 年一遇的月全食.血月.蓝月将今晚呈现空中,虽然没有看到蓝月亮,血月.月全食也是勉强可以了,还是可以想像一下一瓶蓝月亮洗 ...
- PHP 运行 php-fpm 报错
报错如下: [27-Aug-2017 18:34:23] WARNING: Nothing matches the include pattern '/usr/local/php/etc/php- ...
- libev学习笔记
转 libev的使用--结合Socket编程 作者:cxy450019566 之前自己学过一些libev编程的基础,这次写压测刚好用上了,才算真正动手写了些东西,在这里做一些总结.写这篇文章是为了用浅 ...
- jQuery Validate验证框架与 jQuery ajaxSubmit的联合使用
jQuery Validate验证框架自定义验证 第一步导入导入js库 <script src="<%=basePath%>static/js/jquery.js" ...
- jQuery的Nicescroll滚动条插件使用方法
Nicescroll滚动条插件是一个非常强大的基于jQuery的滚动条插件,不需要增加额外的css,几乎全浏览器兼容.ie6+,实现只需要一段代码,侵入性非常小,样式可完全自定义,支持触摸事件,可在触 ...
- Java Cookie和Session
*/ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...
- centos下在php.ini设置时区
错误: PHP Warning: Unknown: It is not safe to rely on the system's timezone settings. You are *require ...
- C# 值类型,引用类型区别
值类型/引用类型 作为所有类型的基类,System.Object提供了一组方法,这些方法在所有类型中都能找到,其中包含toString方法及clone等方法. 引用类型和值类型都继承自System.O ...
- Spring 当 @PathVariable 遇上 【. # /】等特殊字符
@PathVariable注解应该不是新鲜东西了Spring3.0就开始有了 URL中通过加占位符把参数传向后台 举个栗子,如下比较要说的内容比较简单就大概齐的写一下 画面侧 $.ajax({ typ ...