大数据 | Hadoop、Hive、Spark的关系

news/2024/11/19 22:18:12/

文章总括图
总括图

数据存储

单机数据库时代

所有数据在单机都能存的下,数据处理的任务都是IO密集型,更谈不上分布式系统

一个典型的2U服务器可以插6块硬盘,每块硬盘4T,共24T原始容量,再加上一些数据包的可用冗余,再加上一些格式化的损失,保守估计一台服务器至少可以有10T以上的可用容量,再加上128G内存和两颗CPU,装入DBMS,稍微调优,单表处理10e条数据问题不大

多机数据库时代

当数据量变多时,单台机器无法满足容量需求,一个很常规的想法就是加机器,一台机器存不下就用10台乃至100台。

那么HDFS就诞生了,HDFS会统一管理100台机器上的存储空间,提供一个接口,让100台机器的存储空间看起来就像在一台机器上,让用户感觉到这是一个无限大的存储空间,然后再基于这个去写应用程序。

数据计算

数据分布式的存储于每台机器,每台机器都有自己的CPU和内存,如果能充分利用这些资源可以使数据计算更快完成。
但对于程序员来讲很难去操作100台机器,编写程序将一个计算任务分配到这些机器上,并让这些任务进行同步、机器容错等问题过于复杂,于是MapReduce就出现了。

MapReduce提供了一个任务并行的框架,通过他的API的抽象,让用户将并行程序分为两个阶段分别是:

  1. map阶段:将完整任务分成多份交给分布式设备分别完成
  2. reduce阶段:将分布式计算完成的任务结果进行聚合,输出最终结果

Spark与Mapreduce类似都是计算引擎,主要区别是Spark基于内存计算,MapReduce基于磁盘,因此Spark速度更快,在数据集不大、机器内存能完全装下的极端情况,Spark比MR快100倍,但正常情况下大约比MR快2-3倍。

Spark核心模块与Mapreduce使用上类似,都会提供一系列API,让开发者写数据处理程序,同时,Spark生态中也有SparkSQL实现MR的Hive的功能。此外,Spark中也有其他类型的抽象,如Spark Streaming实现流处理程序、MLlib实现机器学习相关程序、GraphX实现图处理程序。

数据查询

单机数据库时代用户使用SQL语句即可实现数据查询,而分布式数据库如果需要查询数据需要用户自己写程序,而且还是比较专业的分布式处理程序。其核心诉求是再Hadoop上写SQL,于是Hive出现了(Impala、Presto等也可实现SQL on Hadoop)

Hive是在Hadoop上进行结构化数据处理的解决方案,为了能让用户写SQL处理程序,那么程序就需要对数据进行结构化处理,Hive中的一个核心模块Metastore,就是用来存储这些结构化信息,比如一些“表”的信息,列的数量,表中每个列是什么样的数据结构。

Hive执行过程:

  1. 解析阶段(该阶段与单机数据库无异):Hive的执行引擎会把一条SQL语句进行语法分析,生成语法分析树;
  2. 执行阶段:Hive的执行引擎会把SQL语句翻译成Mapreduce程序进行执行,将结果进行加工返回给用户;

但是复杂性与灵活性是一对矛盾体,在实际应用是还需要根据场景来选择使用Hive还是直接写MR程序

参考资料:
强烈推荐B站视频,讲得非常通俗易懂:【大数据技术生态中,Hadoop、Hive、Spark是什么关系?| 通俗易懂科普向】 https://www.bilibili.com/video/BV1LU4y1e7Ve/?share_source=copy_web&vd_source=f193a6361a31cec8fe86dfc200c75753


http://www.ppmy.cn/news/786.html

相关文章

1.2 无监督学习和强化学习

1.2 无监督学习和强化学习无监督学习定义无监督学习与监督学习的区别相关概念流程图强化学习无监督学习 定义 无监督学习 (Unsupervised Learning)是指从无标注数据中学习预测模型的机器学习问题,其本质是学习数据中的统计规律或潜在结构。 无监督学习…

unity---Mesh网格编程(六)

目录 1.模型切割 2.代码 1.模型切割 如图,对3D模型的Mesh网格进行切割,会经过若干个三角面。而切割后,将会产生新的面来组成左右两边的物体。 要记录每个顶点与顶点下标,新的面要顺时针绘制, 2.代码 using System.…

云服务连续三年增长150%,网宿科技开拓新赛道

摘要:开拓云服务市场,网宿科技的打法。 提到网宿科技,很多人还停留在传统IT服务商的印象中。其实,网宿科技已经在一条新赛道加速前行,这就是云服务。 “借助亚马逊云科技的持续赋能,网宿科技积累了丰富的云…

【数据结构趣味多】时间复杂度和空间复杂度

算法效率分析分为两种:第一种是时间效率,第二种是空间效率。时间效率被称为时间复杂度,而空间效率被称作空间复杂度。 时间复杂度主要衡量的是一个算法的运行速度,而空间复杂度主要衡量一个算法所需要的额外空间, 在计…

React基础

文章目录1.简介1.1 react与vue1.1.1 相同点1.1.2 不同点1.1.3 函数式组件的特点(什么是函数式组件)a.幂等b.无副作用用:1.1.4 虚拟dom的作用1.1.5 vue当中template与render的关系:1.2 MVC、MVVM、MVP模式1.2.1 MVC1.2.2 MVVM1.2.3…

MySQL介绍与安装(超详细)

数据库介绍 数据库(database)简称DB,实际上就是一个文件集合,是一个存储数据的仓库,本质就是一个文件系统,数据库是按照特定的格式把数据存储起来,用户可以对存储的数据进行增删改查等操作。 数据库存储数据特点 ●…

Java处理数据成为树状结构

如题所示&#xff0c;项目中需要将部分数据处理成为树状结构&#xff0c;实现过程如下&#xff1a; 注&#xff1a;也可以使用sql达到该目的&#xff0c;但此处数据不多&#xff0c;故在代码中处理&#xff0c;主要是sql处理不是很会 // 获取需要封装的数据List<Data> d…

java(面向对象)的23种设计模式(11)——观察者模式

一、定义 观察者模式&#xff1a;指多个对象间存在一对多的依赖关系&#xff0c;当一个对象的状态发生改变时&#xff0c;所有依赖于它的对象都得到通知并被自动更新。 换种说法&#xff0c;定义两种对象&#xff0c;观察者和目标对象&#xff0c;多个观察者同时监听一个目标对…