Java知识分享网 - 轻松学习从此开始!    

Java知识分享网

Java1234官方群25:java1234官方群25
Java1234官方群25:838462530
        

GIT视频教程(结合github,码云)免费领取

SpringBoot打造全栈在线教育平台实战课程

毕设代做论文包查重联系人QQ:1982956321毕设大神

66套java实战课程无套路领取

Java1234 VIP课程

领取微信扫码登录Java实现视频教程

Java1234至尊VIP(特价活动)
当前位置: 主页 > Java文档 > 大数据云计算 >

Flink基础讲义 PDF 下载


分享到:
时间:2020-08-22 09:50来源:http://www.java1234.com 作者:小锋  侵权举报
Flink基础讲义 PDF 下载
失效链接处理
Flink基础讲义 PDF 下载


本站整理下载:
提取码:q2pz 
 
 
相关截图:
 
主要内容:

第一章 Flink简介【了解】
1.1.Flink的引入
这几年大数据的飞速发展,出现了很多热门的开源社区,其中著名的有 Hadoop、Storm,以及后来的 Spark,他们都有着各自专注的应用场景。Spark 掀开了内存计算的先河,也以内存为赌注,赢得了内存计算的飞速发展。Spark 的火热或多或少的掩盖了其他分布式计算的系统身影。就像 Flink,也就在这个时候默默的发展着。
在国外一些社区,有很多人将大数据的计算引擎分成了 4 代,当然,也有很多人不会认同。我们先姑且这么认为和讨论。
首先第一代的计算引擎,无疑就是 Hadoop 承载的 MapReduce。这里大家应该都不会对 MapReduce 陌生,它将计算分为两个阶段,分别为 Map 和 Reduce。对于上层应用来说,就不得不想方设法去拆分算法,甚至于不得不在上层应用实现多个 Job 的串联,以完成一个完整的算法,例如迭代计算。
由于这样的弊端,催生了支持 DAG 框架的产生。因此,支持 DAG 的框架被划分为第二代计算引擎。如 Tez 以及更上层的 Oozie。这里我们不去细究各种 DAG 实现之间的区别,不过对于当时的 Tez 和 Oozie 来说,大多还是批处理的任务。
接下来就是以 Spark 为代表的第三代的计算引擎。第三代计算引擎的特点主要是 Job 内部的 DAG 支持(不跨越 Job),以及强调的实时计算。在这里,很多人也会认为第三代计算引擎也能够很好的运行批处理的 Job。
随着第三代计算引擎的出现,促进了上层应用快速发展,例如各种迭代计算的性能以及对流计算和 SQL 等的支持。Flink 的诞生就被归在了第四代。这应该主要表现在 Flink 对流计算的支持,以及更一步的实时性上面。当然 Flink 也可以支持 Batch 的任务,以及 DAG 的运算。
 
大数据的4代计算引擎 
第1代: Hadoop MapReduc批处理 Mapper、Reducer 2. 
第2代: DAG框架(Oozie 、Tez),Tez + MapReduce 批处理 1个Tez = MR(1) + MR(2) + ... + MR(n) 相比MR效率有所提升 
第3代: Spark 批处理、流处理、SQL高层API支持 自带DAG 内存迭代计算、性能较之前大幅提
第4代: Flink 批处理、流处理、SQL高层API支持 自带DAG 流式计算性能更高、可靠性更高
 
首先,我们可以通过下面的性能测试初步了解两个框架的性能区别,它们都可以基于内存计算框架进行实时计算,所以都拥有非常好的计算性能。经过测试,Flink计算性能上略好。
 
测试环境: 
1.CPU:7000个; 
2.内存:单机128GB; 
3.版本:Hadoop 2.3.0,Spark 1.4,Flink 0.9 
4.数据:800MB,8GB,8TB; 
5.算法:K-means:以空间中K个点为中心进行聚类,对最靠近它们的对象归类。通过迭代的方法,逐次更新各聚类中心的值,直至得到最好的聚类结果。 
6.迭代:K=10,3组数据 
 
 
Spark和Flink全部都运行在Hadoop YARN上,性能为Flink > Spark > Hadoop(MR),迭代次数越多越明显,性能上,Flink优于Spark和Hadoop最主要的原因是Flink支持增量迭代,具有对迭代自动优化的功能
 
Flink和spark的差异
 
SparkStreaming Flink
定义 弹性的分布式数据集,并非真正的实时计算 真正的流计算,就像storm一样;
但flink同时支持有限的数据流计算(批处理)
高容错 基于RDD和 checkpoint,比较沉重 checkpoint(快照),非常轻量级
内存管理 JVM相关操作暴露给用户 Flink在JVM中实现的是自己的内存管理
延时 中等100ms 低10ms
 
 
1.2.什么是Flink
Flink起源于Stratosphere项目,Stratosphere是在2010~2014年由3所地处柏林的大学和欧洲的一些其他的大学共同进行的研究项目,2014年4月Stratosphere的代码被复制并捐赠给了Apache软件基金会,参加这个孵化项目的初始成员是Stratosphere系统的核心开发人员,2014年12月,Flink一跃成为Apache软件基金会的顶级项目。
在德语中,Flink一词表示快速和灵巧,项目采用一只松鼠的彩色图案作为logo,这不仅是因为松鼠具有快速和灵巧的特点,还因为柏林的松鼠有一种迷人的红棕色,而Flink的松鼠logo拥有可爱的尾巴,尾巴的颜色与Apache软件基金会的logo颜色相呼应,也就是说,这是一只Apache风格的松鼠。
 
图 Flink Logo
Flink主页在其顶部展示了该项目的理念:“Apache Flink是为分布式、高性能、随时可用以及准确的流处理应用程序打造的开源流处理框架”。
Apache Flink是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算。Flink被设计在所有常见的集群环境中运行,以内存执行速度和任意规模来执行计算。
 
1.3.Flink流处理特性
1)支持高吞吐、低延迟、高性能的流处理
2)支持带有事件时间的窗口(Window)操作
3)支持有状态计算的Exactly-once语义
4)支持高度灵活的窗口(Window)操作,支持基于time、count、session,以及data-driven的窗口操作
5)支持具有背压功能的持续流模型
6)支持基于轻量级分布式快照(Snapshot)实现的容错
7)一个运行时同时支持Batch on Streaming处理和Streaming处理
8)Flink在JVM内部实现了自己的内存管理
9)支持迭代计算
10)支持程序自动优化:避免特定情况下Shuffle、排序等昂贵操作,中间结果有必要进行缓存

 

------分隔线----------------------------
锋哥公众号


锋哥微信


关注公众号
【Java资料站】
回复 666
获取 
66套java
从菜鸡到大神
项目实战课程