Hadoop,Hive和Spark大数据框架的联系和区别

        Hadoop,Hive和Spark是大数据相关工作中最常用的三种框架。

1 Hadoop

        hadoop是一个分布式计算框架,是大数据处理的基石,大多其他框架都是以hadoop为基础。Hadoop主要包括两个方面,分别是分布式存储框架(HDFS)和分布式计算框架(Mapreduce)。

1.1 HDFS分布式存储

        HDFS全称为 hadoop distributed filesystem。HDFS本质上也是一个文件系统,可以看作由多个普通的文件系统组成的一个联机版的文件系统。它将一个大文件划分为小的文件库存储在各个各个机器上(DataNode),形成了多机存储,将这些小文件的元数据信息交给一个统一的管理者(NameNode)来管理。和普通文件系统不同的是HDFS所划分的文件块更大(128M),并且通过冗余的方式来保证可靠性。

        存下数据之后,就开始考虑怎么处理数据。虽然HDFS可以为你整体管理不同机器上的数据,但是这些数据太大了。如果单机处理时间不可想象,所以需要多机处理,那么就面临着一个问题,怎么分配工作?这就是Mapreduce的诞生的原因。

1.2 MapReduce

        MapReduce的设计,采用了很简化的计算模型,只有Map和Reduce两个计算过程(中间用Shuffle串联),用这个模型,已经可以处理大数据领域很大一部分问题了。那什么是Map(映射),什么是Reduce(规约)?

        考虑如果你要统计一个巨大的文本文件存储在类似HDFS上,你想要知道这个文本里各个词的出现频率。你启动了一个MapReduce程序。

Map阶段:

        几百台机器同时读取这个文件的各个部分,分别把各自读到的部分分别统计出词频,产生类似(hello, 12100次),(world,15214次)等等这样的Pair(我这里把Map和Combine放在一起说以便简化);这几百台机器各自都产生了如上的集合,然后又有几百台机器启动Reduce处理。

Reduce阶段:

        Reducer机器A将从Mapper机器收到所有以A开头的统计结果,机器B将收到B开头的词汇统计结果(当然实际上不会真的以字母开头做依据,而是用函数产生Hash值以避免数据串化。因为类似X开头的词肯定比其他要少得多,而你不希望数据处理各个机器的工作量相差悬殊)。然后这些Reducer将再次汇总:(hello,12100)+(hello,12311)+(hello,345881)= (hello,370292)。每个Reducer都如上处理,你就得到了整个文件的词频结果。

2 Spark

        Map+Reduce的简单模型很黄很暴力,虽然好用,但是很笨重。第二代的Tez和Spark除了内存Cache之类的新feature,本质上来说,是让Map/Reduce模型更通用,让Map和Reduce之间的界限更模糊,数据交换更灵活,更少的磁盘读写,以便更方便地描述复杂算法,取得更高的吞吐量。

        Spark是基于内存计算的大数据并行计算框架。**Spark基于内存计算,**提高了在大数据环境下数据处理的实时性,同时保证了高容错性和高可伸缩性,允许用户将Spark部署在大量廉价硬件之上,形成集群。

        总之,Spark的思想与MapReduce相同,但是是基于内存计算,速度更快。

3 Hive

        有了MapReduce,Tez和Spark之后,程序员发现,MapReduce的程序写起来真麻烦,他们希望简化这个过程。于是就有了Hive。

        Hive基于hadoop的数据仓库工作,可以将结构性的数据映射成一张数据库表,Hive用的是SQL。将SQL语言翻译成MapReduce程序,丢给计算引擎去计算,这样大家只需要用更简单更直观的语言去写程序了。总之就是简化MapReduce的编程过程。

那么接下来有以下问题:
        Hive的数据从哪里来,什么样数据应该存到Hive?又被送往哪里去处理?存到Hive有什么优势?

(1) Hive的数据从哪里来,什么样的数据适合存到Hive?

        其实不用纠结这个问题,数据来源有很多很多,比如业务数据经过初步处理(数据清洗、结构化)后存入Hive,为以后的报表分析、实时计算做好数据准备。也就是说,具有业务意义的,需要长期保存供后续处理和使用的都可以存入Hive中。这也体现出Hive作为数据仓库的一样,既为仓库,也就是储备,以备不时之需。

(2) Hive的数据被送到哪里去?

        一般来说从Hive中取到数据后,经过处理会落入到关系数据库或者其他类型的数据库中作为实时查询;或者作为Spark的数据输入,来做进一步的批量计算或者实时计算,最后输出到数据库或者其他地方。

(3) 存到Hive有什么优势?

        Hive既然作为数据仓库,即说明它可以存大量的文件,实时也确实这样,因为它是基于Hadoop的嘛,Hadoop本身就是适合存大数据的分布式文件系统嘛。Hive支持HQL的类似SQL的方式查询和分析数据,也是因为它是基于Hadoop的,将HQL转化为MR来执行,所以从编写程序的角度来说,HQL肯定是比直接写MR程序要容易的多的,实际上在开发时大多数也是用的HQL,而很少直接去写MR.

4 Hadoop,Spark和Hive三者联系

  • hadoop:一个大脑加一个口袋构成一个单体,大脑负责计算数据,口袋负责存储数据。多个单体构成集群。

  • hive:使用HiveQL语句,将其转化成MapReduce任务,让多个大脑同时计算存储在多个口袋里的数据。

  • spark:多个更聪明的大脑组成的集群,计算存储在hadoop集群上的数据。计算速度很快,可以进行实时的应用。

  • 5
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: HadoopHiveSpark都是大数据框架,但它们的作用和特点有所不同。 Hadoop是一个分布式计算框架,用于存储和处理大规模数据集。它包括HDFS(Hadoop分布式文件系统)和MapReduce计算模型。Hadoop适用于批处理任务,可以处理大量的数据,但处理速度较慢。 Hive是一个基于Hadoop的数据仓库工具,它提供了类似于SQL的查询语言,可以将结构化数据映射到Hadoop上。Hive适用于数据分析和查询,可以将数据转换为易于理解的格式,但处理速度较慢。 Spark是一个快速、通用、分布式计算引擎,可以处理大规模数据集。它支持多种编程语言,包括Java、Scala和Python等。Spark适用于实时数据处理和机器学习等任务,处理速度较快。 因此,HadoopHiveSpark都是大数据框架,但它们的作用和特点有所不同,可以根据具体的需求选择合适的框架。 ### 回答2: HadoopHiveSpark都是大数据处理中常用的框架,它们的联系区别如下: 联系: 1. 都是开源软件,由Apache基金会进行维护和开发。 2. 都是针对大数据处理的,能够处理海量的数据。 3. 都能在云端和本地部署运行,可以运行于各种操作系统。 4. 都提供了分布式计算和存储功能,支持并行计算。 区别: 1. Hadoop主要用于分布式存储和批处理,是一个计算框架,可以通过MapReduce计算模型来执行任务,支持大数据文件的分割和分布式存储。 2. Hive则是基于Hadoop的数据仓库软件,提供了类SQL语言(HiveQL)查询工具,可以将结构化数据映射到Hadoop中进行处理。 3. Spark是一种计算引擎,用于处理数据的实时流式计算,提供了并行处理和内存计算功能,不需要像Hadoop一样将数据写入磁盘,因此,在速度上比HadoopHive更快。 因此,Hadoop主要用于数据处理和存储,Hive主要用于数据查询和分析,而Spark则是一种更为快速的数据处理框架。当然,在实际的大数据处理应用中,通常综合使用这些框架来处理不同的场景下的数据需求。 ### 回答3: HadoopHiveSpark 都是大数据处理的框架,但是他们有着不同的设计思想和应用场景。下面分别介绍它们的联系区别联系Hadoop 是一个采用 MapReduce 编程模型的分布式计算框架,其核心是 HDFS(Hadoop Distributed File System),主要用于实现大规模数据的存储和计算。 Hive 是一个采用类 SQL 语言 HQL(Hive Query Language)的数据仓库工具,其底层数据存储在 HDFS 上,可以通过类 SQL 语句查询数据。 Spark 也是一个分布式计算框架,但是其采用的是基于内存的计算模型,具有快速、高效的特点,常用于机器学习等复杂计算场景。 区别: 1. 编程模型:Hadoop 采用的是 MapReduce 编程模型,而 Hive 支持 SQL 类型的数据处理,而 Spark 采用更为高级的 RDD(Resilient Distributed Dataset)编程模型和运算符。 2. 计算效率:Hadoop大数据处理上表现出优秀的可扩展性,但是处理速度相对较慢。Hive 的数据处理速度相对较快,但是也比较受到数据格式和数据规模的影响。Spark 采用的是基于内存的计算模型,具有快速、高效的特点,但是需要大量的内存资源。 3. 适用场景:Hadoop 适用于大数据存储和计算,对于一些复杂的分布式计算场景比较适合。Hive 适用于针对大规模数据的类 SQL 查询。Spark 适用于速度要求较高的复杂计算场景,如机器学习、数据挖掘等。 4. 开发难易度:Hadoop 开发难度较大,需要自己编写 MapReduce 代码,相对复杂。Hive 容易上手,类似于 SQL 查询,方便用户进行数据分析。Spark 相对于 Hadoop 来说开发难易度有所降低,但是相对于 Hive 来说难度会大一些。 总之,HadoopHiveSpark 各有所长,针对不同的应用场景可以进行选择。在现实的大数据处理任务中,通常会综合考虑各种因素的影响,选择合适的框架以达到更好的效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Weiyaner

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值