Hadoop、Spark、Flink概要

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就是基于此背景诞生的资源统一管理平台。

你可能感兴趣的:(Hadoop、Spark、Flink概要)