Hadoop,Spark、Flink是目前重要的三大分布式计算系统
· Hadoop用于离线复杂大数据处理
·Spark 用于离线快速的大数据处理
·Flink 用于在线实时的大数据处理。
一、为什么需要分布式计算系统?
当前大数据的数据量已达PB级别(1PB=1024TB),可以说是庞大无比。同时数据还有结构化(如数字、符号等)、非结构化(如文本、图像、声音、视频等)之分,兼具大量、复杂的特点,使得如何又快又好又便宜得进行大数据的存储,管理和处理变成一个亟待解决的问题。
于是分布式计算作为一种低成本的方案被提出来了。原理就是把一组计算机通过网络相互连接组成分散系统,尽管分散系统内的单个计算机的计算能力不强,但是每个计算机只计算一部分数据,多台计算机同时计算,最后将这些计算结果合并得到最终的结果。就整个分散系统而言,处理数据的速度远高于单个计算机,且比集中式计算的大型机要划算的多。
二、为什么是Hadoop,Spark、Flink?
为什么是他们,这要从谷歌的三篇论文说起...
2003年到2004年间,Google发表了三篇技术论文,提出了一套分布式计算理论,分别是:
· 分布式计算框架 MapReduce
· 分布式文件系统 GFS(Google File System)
· 数据存储系统 BigTable
但由于Google没有开源,所以其他互联网公司根据Google三篇论文中提到的原理,对照MapReduce搭建了Hadoop ,对照GFS搭建了HDFS ,对照BigTable搭建了HBase.
即:
· 分布式计算框架 MapReduce → Hadoop
· 分布式文件系统 GFS(Google File System) → HDFS
· 数据存储系统 BigTable → HBase
而Spark分布式计算是在Hadoop分布式计算的基础上进行的一些架构上的改良。目前也是Hadoop生态圈的成员之一。
Spark与Hadoop最大的不同点在于,Hadoop用硬盘存储数据,而Spark用内存存储数据,所以Spark能提供超过Hadoop100倍的运算速度。但因为内存断电后会丢失数据,所以Spark不能用于处理需要长期保存的数据。
Flink是目前唯一同时支持高吞吐、低延迟、高性能的分布式流式数据处理框架。一般需要实时处理的场景都有他的身影,比如:实时智能推荐、实时复杂事件处理、实时欺诈检测、实时数仓与ETL、实时报表分析等
三、Hadoop生态圈
广义的Hadoop不再是单指一个分布式计算系统,而是一套生态系统。
那么,这套生态圈是如何产生的呢?
在有了Hadoop之类计算系统的基础上,人们希望用更友好的语言来做计算,于是产生了Hive、Pig、SparkSQL等。计算问题解决了,还能在什么地方进一步优化呢?于是人们想到给不同的任务分配资源,于是就有了Yarn、Oozie等。渐渐地,随着各种各样的工具出现,就慢慢演变成一个包含了文件系统、计算框架、调度系统的Hadoop大数据生态圈。
早期Hadoop生态圈示例 后期Hadoop生态圈示例(其中紫色Storm现已流行用Flink代替)附:一些其他的组件示意
Kafka:是一种高吞吐量的分布式发布订阅消息系统,它可以处理各大网站或者App中用户的动作流数据。用户行为数据是后续进行业务分析和优化的重要数据资产,这些数据通常以处理日志和日志聚合的方式解决。
Kafka集群上的消息是有时效性的,可以对发布上来的消息设置一个过期时间,不管有没有被消费,超过过期时间的消息都会被清空。例如,如果过期时间设置为一周,那么消息发布上来一周内,它们都是可以被消费的,如果过了过期时间,这条消息就会被丢弃以释放更多空间。
Oozie:是一个工作流调度系统,统一管理工作流的调度顺序、安排任务的执行时间等,用来管理Hadoop的任务。Oozie集成了Hadoop的MapReduce、Pig、Hive等协议以及Java、Shell脚本等任务,底层仍然是一个MapReduce程序。
ZooKeeper:是Hadoop和HBase的重要组件,是一个分布式开放的应用程序协调服务,主要为应用提供配置维护、域名服务、分布式同步、组服务等一致性服务。
YARN:Hadoop生态有很多工具,为了保证这些工具有序地运行在同一个集群上,需要有一个调度系统进行协调指挥,YARN就是基于此背景诞生的资源统一管理平台。
网友评论