Hadoop和Spark的区别和联系

您所在的位置:网站首页 spark跟hadoop的区别 Hadoop和Spark的区别和联系

Hadoop和Spark的区别和联系

2024-07-10 21:07| 来源: 网络整理| 查看: 265

文章目录 大数据时代大数据的关键技术Hadoop:Spark:Hadoop VS Spark:Hadoop的缺点:Spark的优点:Spark和Hadoop数据处理对比图:Spark是否会取代Hadoop呢? Flink:Beam

大数据时代

我们现处于一个大数据的时代,信息呈现指数级的暴增,这里的信息主要是非结构化的数据。

结构化数据:运营数据、公司的经营数据、销售数据等可以在数据库中存储、管理的数据 非结构化数据:聊天记录、发送的邮件、视频、图片、文本等数据

随着科技的进步,这些非结构化的数据激增,我们可以利用这些大量数据进行统计、分析、挖掘出具有价值的信息,例如通过统计大量人群的购买记录,给用户推荐当前在看物品的相似物品;通过大量邮件信息的统计,可以过滤出垃圾邮件等等。

这些非结构化的数据,并不好处理。图像和视频需要图像处理和计算机视觉等技术,文本信息需要自然语言处理技术等等,这些技术大多都是以数据为驱动,通过大量数据去学习其中的规律以及模式。

大数据的特点:

数据量大(高达TB、PB的数据量)数据类型多(视频、图片、文本、语音等)实时性(要求实时快速的生成决策结果) 大数据的关键技术

大数据的技术有:

数据的采集数据的存储和管理数据的处理和分析数据的安全

其中关键技术为:

数据的存储和管理数据的处理和分析

对于大量数据的处理和分析,我们直接想到的方法有:

提高电脑的配置(增大磁盘、内存)由多个电脑协同工作,处理大数据

思路一的做法简单有效,但是成本过高,以及单机的性能是有限的,对于TB、PB的数据规模更是驾驭不了的, 思路二我们可以使用大量廉价的机器,来搭建一个巨大的集群,处理和分析数据,是一个有效且符合实际的做法

即分布式存储、分布式处理

代表性的大数据技术:

HadoopSparkFlinkBeam

我们以关键技术来分析不同生态的区别和优缺点:

Hadoop:

Hadoop不是单一的产品,而是一个完整的生态系统,如下图所示:

在这里插入图片描述

HDFS(分布式文件系统):海量分布式文件的存储,HDFS将文件分成不同的block块,存储在不同的机器上,在HDFS中,一份文件有多份分布在不同的机器上,因此某一机器挂掉,数据也不会完全丢失,具备很高的安全性。

YARN(资源调度和管理框架):提供资源调度和管理服务,即计算时所需的底层内存资源

MapReduce(分布式计算框架):MapReduce负责数据的处理和分析,其主要分为Map和Reduce两个阶段,在Map阶段,其将数据划分为很多块读入,然后将数据解析为方便计算的Key-Value形式,在Reduce阶段,数据按照Key的不同被再次划分到不同的机器,然后每台机器对数据进行聚合操作,最终得到用户想要的结果,如下图所示: 在这里插入图片描述

Hive(数据仓库):相当于编程接口,将SQl语句自动转化为对应MapReduce语句,来对HDFS中的数据进行分析处理

Pig(数据流处理):一般和HIve组合使用,Pig负责数据的清洗和转化,其可以通过Pig Latin的语言实现一个复杂的功能开发,只需要很少的代码就可以实现一个需要很多代码的MapReduce的实现。

Mahout(数据挖掘库):实现了常见的数据挖掘算法,如分类、聚类、回归等算法

Ambari(安装、部署、配置和管理工具):完成自动的安装配置等功能

Zookeeper(分布式协作服务):对管家的选取,以及系统整齐任意的调配

HBase(分布式数据库):用于实时处理中的分布式数据库

Flume(日志的采集):用于日志的采集分析

Sqoop(数据库ETL):完成Hadoop系统组件之间的联通,如从MySQL中导入数据到HDFS,从HDFS导入数据到MySQL中等等。

其两大核心组件是:

HDFS:分布式文件管理系统(数据存储)MapReduce:分布式计算框架(数据计算) Spark:

Spark也不是单一产品,而是一个丰富的生态系统,如下图: 在这里插入图片描述

Spark Core:主要用于批数据的处理Spark SQL:处理关系型数据,满足数据的查询和处理Spark Streaming:流计算,进行实时数据处理(数据依旧是批处理,伪实时,响应速度在秒级)MLlib:机器学习算法库GraphX:编写图计算程序 Hadoop VS Spark: Hadoop的缺点:

Hadoop的缺点,主要是指其中MapReduce(计算框架)的缺点,而不是HDFS(分布式存储系统)的缺点:

表达能力有限: 在这里插入图片描述 无论多么复杂的任务,MapReduce对其划分为Map和Reduce两个阶段,大大简化了任务的复杂度,但同时也降低了其表达能力,因为不是所有的任务都可以分为Map和Reduce两个阶段。

磁盘开销大: 在这里插入图片描述 Map阶段完成后,写入磁盘,再读取到Reduce中,有些任务是需要迭代的,这样会不断的进行磁盘的读取和写入,效率非常的底

延迟高:

读写磁盘,延迟高任务之间的衔接及IO开销(只有将所有的Map阶段执行完毕后,才能开始Reduce阶段) 在这里插入图片描述 Spark的优点:

表达能力强: Spark在继承Hadoop的优点后,对其缺点进行了改进,Spark的计算框架依然是MapReduce,但是不局限于MapReduce模式,其还包含:join、groupby、filter等等操作,操作类型更多,表达能力更强

Spark提供了内存计算,可以将中间结果存放到内存中,对于迭代运算效率更高

Spark基于DAG的任务调度执行机制(使得数据可以像流水线一样处理),要优于Hadoop MapReduce的迭代执行机制 在这里插入图片描述 在这里插入图片描述

Spark和Hadoop数据处理对比图:

在这里插入图片描述

Hadoop:迭代处理和查询处理时,每一轮都要经过磁盘的写入和读取

Spark:迭代处理和查询处理时,先将数据加载到内存中,再去迭代处理,不用去底层读取数据

Spark是否会取代Hadoop呢?

Spark比Hadoop优点这么多的,能否取代Hadoop呢?其实这种说法是很不严谨的,Spark和Hadoop就不是一个对等的关系,Hadoop有两大框架,HDFS和MapReduce,而Spark是对其中MapReduce框架的优化,只是一个单纯的计算框架,不具有存储能力。

在这里插入图片描述 即:Spark只是单纯的替代MapReduce(计算框架),而存储依然用的是HDFS(分布式文件系统)

HDFS + Spark 组合使用 Flink:

Flink是和Spark一样的生态系统,其基本功能和Spark相同,两者的区别如下: 在这里插入图片描述

底层的开发语言:Spark用Scala语言开发的,Flink用的Java语言开发的,Scala的开发效率好一些编程接口:Spark支持Scala、Java、Python、R语言;Flink支持Java、Scala、Python语言计算模型:Spark是基于RDD的批数据处理;Flink是基于流数据的处理优缺点:Spark流数据处理是在秒级别,Flink流数据处理在毫秒级别

在流数据处理时,Flink更快一些,即Flink的实时性更好;

Flink这么好的,但是却不愠不火,就是没有Spark的社区做得好,所以Spark的受众更多! 在这里插入图片描述

Beam

Hadoop、Spark、Flink各有各的编程方式,而Beam的提出,就是为了一统江山,使用谷歌提出的Beam编程接口,可以自动翻译成不同框架(Hadoop、Spark、Flink等)对应的开发语言,这样就可以避免换框架时还需要重新学习新框架的弊端。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3