首页 > 其他分享 >Hadoop、Hive和Spark的关系

Hadoop、Hive和Spark的关系

时间:2023-04-05 19:22:12浏览次数:44  
标签:Hadoop Hive MapReduce 100 数据 Spark

大数据技术生态中,Hadoop、Hive、Spark是什么关系?| 通俗易懂科普向

Hadoop、Hive和Spark,都是大数据相关的系统和技术。

大数据也是数据管理系统的范畴。数据管理系统涉及两个方面的问题,一个是数据怎么存储?一个是数据怎么计算?

为了方便理解,我们需要从单机的时代来讲解。

在单机的数据管理系统时代,我们用一台服务器进行数据的存储和计算,计算任务都是IO密集型的,不是CPU密集型的。

随着信息时代的发展,大数据量爆发。我们用一台服务器没办法保存所有的数据,所以我们用多台服务器来保存数据。但这时候就涉及到一个问题,假如我们有100台服务器,怎么做到统一管理呢?就像我们没办法让一个老板直接对100个员工发号施令,必须要有一些经理的角色对这100个员工进行管理,让他们看起来是一个团队。

Hadoop生态当中,HDFS扮演着经理的角色,HDFS会统一管理这100台服务器的存储空间,对外提供一个接口。让这100台服务器的存储空间,像一台服务器的存储空间。让用户感觉这是一个无限大的存储空间,然后再基于这个去编写应用程序。

说完了数据存储,再说下数据计算。数据分布式的存储到不同服务器上,每台服务器上都有自己的CPU和内存。如果能充分的利用这些资源,让数据计算更快的完成,就变成了一个顺理成章的事情。但问题又来了?如果我们是程序员,如何编写程序操作这100台服务器协作完成了一个计算任务。比如任务怎么分配到这些机器上?这些任务之间怎么去做同步?如果在这过程中有一台机器掉链子了怎么办?这些都是很典型的并行编程问题。

为了解决这个问题,HDFS引入了一个模块,就是大名鼎鼎的MapReduce。MapReduce实际提供了一个任务并行的框架,通过它的API抽象。将并行程序划分成两个阶段,一个是map阶段,一个是reduce阶段。map阶段也就是说你有一个任务量很大的活,你找了100个帮手,把任务平均分成了100份,每个人做一份。reduce阶段也就是说,你等这100个帮手计算完任务之后,把结果汇总到你这里,然后再对结果进行一个集中的处理后输出一个最终结果。

到现在为止Hadoop里面有HDFS来处理存储,MapReduce来处理计算。看起来一切都很美好,但是科技总是有一些懒人来推动的。

技术的发展是为了更高效的处理数据,简化使用者的操作难度。

在单机数据库的时代,有些人可以使用sql来处理复杂的业务逻辑。sql是一个很伟大的发明,降低了数据处理门槛。

而大数据时代这些人发现不能写sql了,而是要编写MapReduce程序,而且还是一个特别专业的分布式处理程序。这就需要很强的计算机背景,而这批用户的核心需求是我能不能在Hadoop上也写sql,所以Hive就出现了。

Hive实际上是一个在Hadoop上处理结构化数据的一种解决方案。为了让用户使用SQL处理数据,那么数据就需要进行结构化的处理。毕竟SQL的S就是结构化处理的意思。如果不对数据进行结构化处理,那么我们要怎样去查询呢?Hive里面的一个核心模块metastore,它是用来存储这些结构化的信息。简单来说就是"表"的信息,包括都有什么字段、字段的数据结构。Hive的执行引擎会对SQL进行语法分析,分析成一个语法树。这个两个步骤和普通的数据库没有什么区别。区别主要在执行阶段,Hive执行引擎会将SQL翻译成MapReduce任务去执行,并对执行结果进行加工,返回给用户。这就是一个完整的HQL处理数据的流程。Hive的出现让大部分大数据开发工程师变成了sql boy/girl。

从工程的角度来看,效率和灵活性就是一对矛盾体。Hive的出现使大数据处理任务的开发效率提高了,但是在数据的表达力和灵活性上。肯定不如直接写MapReduce程序。所以这两个技术也不是相互替代的关系。需要根据实际的场景去选择。

最后再来说一下Spark,Spark经常用来和Hadoop进行对比,主要是和Hadoop的MapReduce对比。Spark本身也是一个计算框架,它和MapReduce的区别主要在于Spark是基于内存的计算,而MapReduce是基于磁盘的计算。所以Spark的卖点就是快。举一个极端的例子,如果数据集不是特别大,计算可以在服务器的内存中完成,那么Spark的计算速度比MapReduce快100倍,因为内存的读取速度比磁盘的读取速度快很多。一般会认为,Spark比MapReduce处理程序快2~3倍左右。Spark的核心模块和MapReduce在使用体验上有些类似的地方,他们都提供一系列API,让开发者去写数据的处理程序,并且在MapReduce上有和Hive类似的处理方案,让用户可以写SQL处理数据。在Spark生态里面有SparkSQL模块,让用户在Spark的API里面写SQL。

Spark作为计算引擎,还提供了其他的上层的抽象,帮助用户去写其他类型的数据处理程序。比如Spark提供了Streaming模块,让用户去写流处理的程序。提供MLlib模块,让用户去写机器学习的程序。以及图处理模块GraphX。

有的时候一个好的问题定义,会比一个解决方案更重要!

标签:Hadoop,Hive,MapReduce,100,数据,Spark
From: https://www.cnblogs.com/nananana/p/17290644.html

相关文章

  • [FAQ] Pytorch PytorchStreamReader failed reading zip archive
     比如:rm-rf~/.cache/huggingface  Link:https://www.cnblogs.com/farwish/p/17290240.html......
  • 大数据经典论文解读 - Spark
    SparkResilientDistributedDatasets:AFault-TolerantAbstractionforIn-MemoryClusterComputing可看作一个支持多轮迭代的MapReduce模型,但是引入了RDD这样的函数式对象的数据集概念。Spark的多轮迭代中无需反复读写磁盘,而是直接在内存中操作。RDD是什么,怎么优化......
  • 大数据云计算——hadoop的面试问题总结
    1.讲述HDFS上传⽂件和读⽂件的流程?HDFS上传流程,举例说明⼀个256M的⽂件上传过程(1)由客户端Client向NameNode节点发出请求;(2)NameNode向Client返回可以存数据的DataNode列表,遵循机架感应原则(把副本分别放在不同的机架,甚⾄不同的数据中⼼);(3)客户端⾸先根据返回的信息先将⽂......
  • A7--Spark部署
    一、版本信息  JDK1.8spark3.2.1二、安装部署1)上传解压缩文件tar-zxvfspark-3.2.1-bin-hadoop3.2.tgz 2)配置环境变量vim/etc/profile #SparkexportSPARK_HOME=/opt/spark-3.2.1exportPATH=$SPARK_HOME/b......
  • CDH+Hive部署
    CDH介绍:  CDH全称Cloudera’sDistributionIncludingApacheHadoop,是Cloudera公司提供的一个ApacheHadoop发行版。CDH将Hadoop与其他十几个关键的开源项目集成,并且加入了集群自动化安装、中心化管理、集群监控、报警等功能。Hive介绍:  Hive是基于Hadoop的一......
  • day07 sparksql 生成Physical Plan
     1.案例sqlselectA,Bfromtestdata2whereA>2 对应的执行计划:==AnalyzedLogicalPlan==Project[A#23,B#24]+-Filter(A#23>2)+-SubqueryAliastestdata2+-View(`testData2`,[a#23,b#24])+-SerializeFromObject[knownnotnull(a......
  • Hive 如何巧用分布函数percent_rank()剔除极值求均值
    场景描述前期写过一篇关于剔除订单极值求订单均值的案例,之前使用的是 dense_rank 函数对订单金额进行排序后,过滤掉最大值最小值后进行处理,最近工作刚好使用到分布函数percent_rank,想起来应该也可以用到这个场景;percent_rank()简介percent_rank()函数为分布函数,用于返回某个......
  • 004-spark local模式
    sparklocal模式 在window或者linux下都一样,都是启动一个节点,只能用于测试。1、下载Spark官方地址:http://spark.apache.org/downloads.html2、window7下解压,然后点击“”启动spark3、spark验证是否启动成功4、spark计算......
  • 005-spark standalone模式安装
    sparkstandalone模式不同于单节点本地模式,它有主从节点,分别为Master和workerSparkstandlone规划Master节点: 192.168.2.20Worker节点:192.168.2.20,192.168.2.33其中:地址和域名的映射关系为192.168.2.20mycluster192.168.2.33clo......
  • 012-01Spark On YARN 环境搭建
    1、Scala安装http://www.scala-lang.org/files/archive/scala-2.10.4.tgztar-zxvfscala-2.10.4.tgz-Capp/cd appln-sscala-2.10.4scala2、Spark安装tar-zxvf spark-1.4.0-bin-hadoop2.6.tgz-Cappln-sspark-1.4.0-bin-hadoop2.6spark#vimspark-......