1.1 大数据时代
1.1.1 第三次信息化浪潮
第三次信息化浪潮
1.1.2 信息科技为大数据时代提供技术支撑
存储设备容量不断增加
CPU处理能力大幅提升
网络带宽不断增加
1.1.3 数据产生方式的变革促成大数据时代的来临
1.2 大数据概念
1.2.1 数据量大
根据IDC作出的估测,数据一直都在以每年50%的速度增长,也就是说每两年就增长一倍(大数据摩尔定律)
人类在最近两年产生的数据量相当于之前产生的全部数据量
预计到2020年,全球将总共拥有35ZB的数据量,相较于2010年,数据量将增长近30倍
1.2.2 数据类型繁多
大数据是由结构化和非结构化数据组成的
10%的结构化数据,存储在数据库中
90%的非结构化数据,它们与人类信息密切相关
科学研究
基因组、LHC 加速器、地球、与空间探测
企业应用
Email、文档、文件、应用日志、交易记录
Web 1.0数据
文本、图像、视频
Web 2.0数据
查询日志/点击流、Twitter/ Blog / SNS、Wiki
1.2.3 处理速度快
从数据的生成到消耗,时间窗口非常小,可用于生成决策的时间非常少
1秒定律:这一点也是和传统的数据挖掘技术有着本质的不同
1.2.4 价值密度低
价值密度低,商业价值高
以视频为例,连续不间断监控过程中,可能有用的数据仅仅有一两秒,但是具有很高的商业价值
1.3 大数据的影响
图灵奖获得者、著名数据库专家Jim Gray 博士观察并总结人类自古以来,在科学研究上,先后历经了实验、理论、计算和数据四种范式
在思维方式方面,大数据完全颠覆了传统的思维方式
全样而非抽样
效率而非精确
相关而非因果
1.4 大数据关键技术
大数据技术的不同层面及其功能
两大核心技术
1.5 大数据计算模式
1.6 代表性大数据技术
1.6.1 Hadoop
Hadoop—MapReduce
MapReduce将复杂的、运行于大规模集群上的并行计算过程高度地抽象到了两个函数:Map和Reduce
编程容易,不需要掌握分布式并行编程细节,也可以很容易把自己的程序运行在分布式系统上,完成海量数据的计算
MapReduce采用“分而治之”策略,一个存储在分布式文件系统中的大规模数据集,会被切分成许多独立的分片(split),这些分片可以被多个Map任务并行处理。
Hadoop—YARN
YARN的目标就是实现“一个集群多个框架”,为什么?
一个企业当中同时存在各种不同的业务应用场景,需要采用不同的计算框架
MapReduce实现离线批处理
使用Impala实现实时交互式查询分析
使用Storm实现流式数据实时分析
使用Spark实现迭代计算
这些产品通常来自不同的开发团队,具有各自的资源调度管理机制
为了避免不同类型应用之间互相干扰,企业就需要把内部的服务器拆分成多个集群,分别安装运行不同的计算框架,即“一个框架一个集群”
导致问题
集群资源利用率低
数据无法共享
维护代价高
YARN的目标就是实现“一个集群多个框架”,即在一个集群上部署一个统一的资源调度管理框架YARN,在YARN之上可以部署其他各种计算框架
由YARN为这些计算框架提供统一的资源调度管理服务,并且能够根据各种计算框架的负载需求,调整各自占用的资源,实现集群资源共享和资源弹性收缩
可以实现一个集群上的不同应用负载混搭,有效提高了集群的利用率
不同计算框架可以共享底层存储,避免了数据集跨集群移动
1.6.2 Spark
Hadoop与Spark的对比
Hadoop存在如下一些缺点:表达能力有限
磁盘IO开销大
延迟高
任务之间的衔接涉及IO开销
在前一个任务执行完成之前,其他任务就无法开始,难以胜任复杂、多阶段的计算任务。
Hadoop与Spark的对比
Spark在借鉴Hadoop MapReduce优点的同时,很好地解决了MapReduce所面临的问题
相比于Hadoop MapReduce,Spark主要具有如下优点:
Spark的计算模式也属于MapReduce,但不局限于Map和Reduce操作,还提供了多种数据集操作类型,编程模型比Hadoop MapReduce更灵活
Spark提供了内存计算,可将中间结果放到内存中,对于迭代运算效率更高
Spark基于DAG的任务调度执行机制,要优于Hadoop MapReduce的迭代执行机制
1.6.3 Flink
性能对比
首先它们都可以基于内存计算框架进行实时计算,所以都拥有非常好的计算性能。经过测试,Flink计算性能上略好。
Spark和Flink全部都运行在Hadoop YARN上,性能为Flink > Spark > Hadoop(MR),迭代次数越多越明显,性能上,Flink优于Spark和Hadoop最主要的原因是Flink支持增量迭代,具有对迭代自动优化的功能。
流式计算比较
它们都支持流式计算,Flink是一行一行处理,而Spark是基于数据片集合(RDD)进行小批量处理,所以Spark在流式处理方面,不可避免增加一些延时。Flink的流式计算跟Storm性能差不多,支持毫秒级计算,而Spark则只能支持秒级计算。
SQL支持
都支持SQL,Spark对SQL的支持比Flink支持的范围要大一些,另外Spark支持对SQL的优化,而Flink支持主要是对API级的优化。
1.6.4 Beam
后语
厂长写博客目的初衷很简单,希望大家在学习的过程中少走弯路,多学一些东西,对自己有帮助的留下你的赞赞?或者关注➕都是对我最大的支持,你的关注和点赞给厂长每天更文的动力。
对文章其中一部分不理解,都可以评论区回复我,我们来一起讨论,共同学习,一起进步!
微信(z613500)或者 qq(1016942589) 详细交流。