具体描述
作为新一代的开源流处理器,Flink是众多大数据处理框架中一颗冉冉升起的新星。它以同一种技术支持流处理和批处理,并能同时满足高吞吐、低延迟和容错的需求。本书由Flink项目核心成员执笔,系统阐释Flink的适用场景、设计理念、功能、用途和性能优势。
- Flink的适用场景
- 流处理架构相较于批处理架构的优势
- Flink中的时间概念
- Flink的检查点机制
- Flink的性能优势
作者简介
作者介绍
埃伦·弗里德曼(Ellen Friedman)
解决方案咨询师,知名大数据相关技术布道师,在流处理架构和大数据处理框架等方面有多部著作。
科斯塔斯·宙马斯(Kostas Tzoumas)
Flink项目核心成员,data Artisans公司联合创始人兼首席执行官,在流处理和数据科学领域经验丰富。
译者介绍
王绍翾
阿里巴巴资深技术专家,Apache Flink Committer,淘宝花名“大沙”。毕业于北京大学信息科学技术学院,后取得加州大学圣地亚哥分校计算机工程博士学位。目前就职于阿里巴巴计算平台事业部,负责Flink SQL引擎及机器学习的相关开发。加入阿里巴巴之前,在Facebook开发分布式图存储系统TAO。曾多次拜访由Flink创始团队创办的公司data Artisans,并与其首席执行官科斯塔斯·宙马斯(本书作者之一)以及首席技术官斯蒂芬·尤恩有着广泛的合作。
目录信息
第1章 为何选择Flink 1
1.1 流处理欠佳的后果 2
1.1.1 零售业和市场营销 2
1.1.2 物联网 3
1.1.3 电信业 5
1.1.4 银行和金融业 5
1.2 连续事件处理的目标 6
1.3 流处理技术的演变 6
1.4 初探Flink 9
1.5 生产环境中的Flink 12
1.5.1 布衣格电信 13
1.5.2 其他案例 14
1.6 Flink的适用场景 15
第2章 流处理架构 17
2.1 传统架构与流处理架构 17
2.2 消息传输层和流处理层 18
2.3 消息传输层的理想功能 19
2.3.1 兼具高性能和持久性 20
2.3.2 将生产者和消费者解耦 20
2.4 支持微服务架构的流数据 21
2.4.1 数据流作为中心数据源 22
2.4.2 欺诈检测:流处理架构用例 22
2.4.3 给开发人员带来的灵活性 24
2.5 不限于实时应用程序 24
2.6 流的跨地域复制 26
第3章 Flink 的用途 29
3.1 不同类型的正确性 29
3.1.1 符合产生数据的自然规律 29
3.1.2 事件时间 31
3.1.3 发生故障后仍保持准确 32
3.1.4 及时给出所需结果 33
3.1.5 使开发和运维更轻松 33
3.2 分阶段采用Flink 34
第4章 对时间的处理 35
4.1 采用批处理架构和Lambda 架构计数 35
4.2 采用流处理架构计数 38
4.3 时间概念 40
4.4 窗口 41
4.4.1 时间窗口 41
4.4.2 计数窗口 43
4.4.3 会话窗口 43
4.4.4 触发器 44
4.4.5 窗口的实现 44
4.5 时空穿梭 44
4.6 水印 45
4.7 真实案例:爱立信公司的Kappa 架构 47
第5章 有状态的计算 49
5.1 一致性 50
5.2 检查点:保证exactly-once 51
5.3 保存点:状态版本控制 59
5.4 端到端的一致性和作为数据库的流处理器 62
5.5 Flink 的性能 65
5.5.1 Yahoo! Streaming Benchmark 65
5.5.2 变化1:使用Flink 状态 66
5.5.3 变化2:改进数据生成器并增加吞吐量 67
5.5.4 变化3:消除网络瓶颈 68
5.5.5 变化4:使用MapR Streams 69
5.5.6 变化5:增加key 基数 69
5.6 结论 71
第6章 批处理:一种特殊的流处理 73
6.1 批处理技术 75
6.2 案例研究:Flink 作为批处理器 76
附录 其他资源 79
关于作者 84
· · · · · · (收起)
读后感
大数据Flink视频教程下载 课程学习地址:http://www.xuetuwuyou.com/course/296 海量IT资源免费下载:http://down.xuetuwuyou.com 课程出自学途无忧网:http://www.xuetuwuyou.com 海量IT资源免费下载:http://down.xuetuwuyou.com/ 本课程将基于真实的电商分析系统构建,通过F...
基于Flink流处理的动态实时亿级全端用户数据统计分析系统(支持所有的终端统计) 课程学习地址:http://www.xuetuwuyou.com/course/310 课程出自学途无忧网:http://www.xuetuwuyou.com 讲师:友凡老师 本套案例是完全基于真实的产品进行开发和讲解的,同时对架构进行全面的升...
大数据Flink视频教程下载 课程学习地址:http://www.xuetuwuyou.com/course/296 海量IT资源免费下载:http://down.xuetuwuyou.com 课程出自学途无忧网:http://www.xuetuwuyou.com 海量IT资源免费下载:http://down.xuetuwuyou.com/ 本课程将基于真实的电商分析系统构建,通过F...
课程分享:https://www.douban.com/group/topic/129199378/ 本课程将基于真实的电商分析系统构建,通过Flink实现真正的实时分析,该系统会从无到有一步一步带大家实现,让大家在实操中快速掌握Flink技术。 课程所涵盖的知识点包括:Flink、Kafka、Flume、Sqoop、SpringMVC、Red...
基于Flink流处理的动态实时亿级全端用户数据统计分析系统(支持所有的终端统计) 课程学习地址:http://www.xuetuwuyou.com/course/310 课程出自学途无忧网:http://www.xuetuwuyou.com 讲师:友凡老师 本套案例是完全基于真实的产品进行开发和讲解的,同时对架构进行全面的升...
用户评价
这本《Flink基础教程》的包装设计确实是下了功夫的,封面采用了沉稳的深蓝色调,搭配简洁的银色字体,看上去就给人一种专业且可靠的感觉。不过,拿到手上翻阅了一下目录,我得说,它似乎更偏向于一个**“入门者的扫盲手册”**,对于那些已经对流处理框架有所了解,比如在Spark Streaming上摸爬滚打了一段时间,现在想深入探究Flink底层工作原理和高级特性的老手来说,可能略显单薄。我原本期待能看到关于状态管理在极端高并发场景下的性能调优细节,或者至少是对Exactly-Once语义在分布式快照过程中一些晦涩难懂的边界情况进行深入的源码级解析。但目前看来,它更多的是在搭建知识的基石,比如如何配置环境、如何编写第一个DataStream作业,以及对Time和Watermark概念的初步讲解。这对于零基础的读者无疑是极大的福音,保证了他们能够顺利起步,但对于寻求突破瓶颈、优化生产环境的关键性“秘籍”的资深工程师而言,可能需要搭配其他更具深度的参考资料一同研读,否则,光靠这本,要将生产环境中的延迟压到毫秒级可能还有相当长的路要走。 它的广度足够,但深度似乎还停留在“知道怎么做”的层面,而非“为什么这么做”的精髓所在。
这本书的语言风格呈现出一种**过于工整和模式化**的特点,几乎所有的概念解释都像是教科书式的定义复述,缺乏一种引导者将复杂概念“拆解”并“形象化”的叙述能力。比如,在解释“时间窗口”的概念时,它罗列了滚动窗口、滑动窗口和会话窗口的数学定义,然后便草草收场,但没有提供一个极具冲击力的业务场景(比如“一小时内用户活跃度的统计”或“连续点击行为的识别”)来帮助读者建立直观的联系。结果就是,读者可能会死记硬背这些定义,却无法在实际面对新的业务需求时,迅速判断出哪种窗口类型才是最优解。优秀的教程,应当像一位经验丰富的大师在耳边低语,用生动的比喻和实际的故障案例来强化记忆点。而这本书,更像是一份完备但略显冰冷的**API文档的叙事版本**,它告诉你“是什么”,却没能教会你“如何用得漂亮”。
我花了相当长的时间去对比市面上其他几本关于分布式计算的书籍,发现这本书在**社区生态和周边工具集成**这块的描述几乎是空白的。流处理的应用从来不是孤立存在的,它需要和数据源(如Kafka、Pulsar)、结果存储(如Elasticsearch、HBase)以及监控报警系统紧密配合。这本书似乎将重点完全放在了Flink自身的API和核心算子之上,这在教学上或许能保持主题的纯粹性,但在实际的项目落地中,却是致命的短板。例如,如何优雅地处理Kafka消费者的偏移量管理、如何在高可用集群中实现容错性的状态后端切换,乃至如何利用Flink SQL进行更复杂的跨数据源Join操作,这些在实际工程中耗费开发者大量精力的环节,书中几乎没有着墨。这种“脱离生产环境的理论灌输”,使得读者在看完理论后,面对真实的业务需求时,反而会产生一种“纸上谈兵”的无力感。毕竟,真正考验框架功力的,往往是那些在IO边界和外部依赖交互时产生的复杂问题。
从排版和代码示例的质量来看,这本书的编辑工作显得有些**疏忽大意**,这在技术书籍中是非常影响阅读体验的因素。大量的Scala或Java代码块似乎没有经过细致的排版校对,经常出现换行不当、括号缺失或者关键参数的拼写错误,这对于初学者来说简直是灾难性的——他们往往会花费大量时间去调试代码中本不应该存在的语法错误,从而极大地打击了学习的积极性。更令人费解的是,一些核心算子的参数说明部分,其描述的优先级顺序似乎与官方文档有细微的出入,这让人不禁怀疑译者或作者在整理资料时,是否采用了**过时的、非最新的API版本**进行讲解。在技术日新月异的今天,一本流处理教程如果不能紧跟社区的迭代步伐,那么它的“基础”价值也会随之迅速贬值。我希望看到的是清晰、可直接复制运行的示例,而不是需要我手动修复错误的“半成品”。
这本书在**性能监控和故障排查**这一至关重要的环节上处理得相当保守和模糊。在企业级应用中,作业的稳定运行比首次跑通复杂十倍。当我尝试查找如何有效地利用Flink自带的Metrics系统来监控背压(Backpressure)的指标,或者如何通过Checkpointing的耗时日志来定位是网络慢还是磁盘IO慢时,书中的内容几乎没有提供任何实用的指导。它只是泛泛地提到了“Checkpointing是保证容错的关键”,但对于如何配置Checkpointing的触发频率、如何选择合理的存储介质(如S3还是HDFS)、以及在监控面板上应该重点关注哪些阈值,却避而不谈。一个合格的“基础”教程,至少应该为读者描绘出一个清晰的生产环境健康检查路线图。目前看来,它更像是一个“开发环境下的Hello World指南”,对于那些需要在生产环境中承担运维责任的读者来说,这本书提供的安全网太薄,让人缺乏足够的信心将其投入到高可靠性的数据流水线中去。
过多的概念讲解,不如直接看官方文档
很多时候大家遇到的问题都是相似的,为解决这些问题,框架便应运而生。框架很多时候的确能很好的解决问题,也因此让人变得懒惰。 很多人在用过框架后会读源码以了解其原理,这值得鼓励但并不是最好的路径,这只是增多了对框架的理解而已。 遇到问题时先能思考和实践自己的方案,再看框架是如何解决的,通过对比,这才是增多了对问题的认识和解决方案的理解。
过多的概念讲解,不如直接看官方文档
简单概括,细节不足
真的写的挺简单的,。