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

news2024/11/26 14:42:00

文章总括图
总括图

数据存储

单机数据库时代

所有数据在单机都能存的下,数据处理的任务都是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.coloradmin.cn/o/48201.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

A Self-Attentive model for Knowledge Tracing论文笔记和代码解析

原文链接和代码链接A Self-Attentive model for Knowledge Tracing | Papers With Code motivation:传统方法面临着处理稀疏数据时不能很好地泛化的问题。 本文提出了一种基于自注意力机制的知识追踪模型 Self Attentive Knowledge Tracing (SAKT)。其本质是用 Tra…

【博学谷学习记录】超强总结,用心分享|架构师-Spring核心组件介绍

文章目录一、Bean组件二、Context组件一、Bean组件 Bean组件定义在Spring的org.springframework.beans包下,解决了以下几个问题: 这个包下的所有类主要解决了三件事: Bean的定义 Bean的创建 Bean的解析 Spring Bean的创建是典型的工厂模式…

centos7安装字体和中文字体

文章目录1.查看自己的操作系统2. 安装字体库3.安装更新字体命令4.查看中文字体5.新建目录6.拷贝 fonts.scale 和windows上的字体到chinese文件夹中.将字体文件放在chinese目录7.授权,该目录及其下所有文件需要有执行权限8.重新建立字体索引、更新缓存9.查看字体是否…

信号包络及其提取方法(Matlab)

信号包络及其提取方法 介绍信号包络,以及信号包络的提取方法。 一、信号包络 直观地从时域来讲,信号包络就是信号波形的轮廓。 本质上,信号包络是带通信号的基带部分。 一个实带通信号记为x(t),将它频谱的中心频点搬移到零频…

数据结构初阶--栈和队列(讲解+类模板实现)

栈的概念和结构 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)加粗样式的原则。 入…

debug - 用Procmon记录目标程序启动后的操作

文章目录debug - 用Procmon记录目标程序启动后的操作概述笔记备注ENDdebug - 用Procmon记录目标程序启动后的操作 概述 想看看 D:\Cadence\SPB_17.4\tools\bin\Capture.exe 开始页中的recent projects 从哪里读的. 想用Procmon记录Capture.exe启动后的动作, 再记录成文本日志…

【Spring】一文带你吃透AOP面向切面编程技术(上篇)

个人主页: 几分醉意的CSDN博客_传送门 文章目录💖AOP概念✨AOP作用✨AOP术语✨什么时候需要用AOP💖Aspectj框架介绍✨Aspectj的5个通知注解✨Aspectj切入点表达式✨前置通知Before💖投票传送门(欢迎伙伴们投票&#xf…

Nginx加载Lua脚本lua_shared_dict缓存

1、介绍 lua_shared_dict缓存是nginx为lua提供的一个多进程共享空间,为了避免多进程修改造成脏数据,lua_shared_dict修改数据是用锁来实现的。这样就会有qps访问瓶颈变小的问题。这是性能缺点。 2、使用 1)首先在nginx.conf里申请一块共享…

数据分享|PYTHON用决策树分类预测糖尿病和可视化实例

全文下载链接:http://tecdat.cn/?p23848在本文中,决策树是对例子进行分类的一种简单表示。它是一种有监督的机器学习技术,数据根据某个参数被连续分割。决策树分析可以帮助解决分类和回归问题(点击文末“阅读原文”获取完整代码数…

大一学生WEB前端静态网页——唯品会1页 包含hover效果

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材,DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 在线商城购物 | 水果商城 | 商城系统建设 | 多平台移动商城 | H5微商城购物商城项目 | HTML期末大学生网页设计作业,Web大学生网页 HTML&a…

SpringCloud:使用Nacos作为配置中心

目录 一、nacos配置中心简介 二、nacos配置实时更新及同一个微服务不同环境的差异化配置 准备工作 针对商品微服务实现实时更新(以商品微服务为例) 三、nacos同一个微服务不同环境的共享配置 同一个微服务修改配置才能访问不同环境 四、nacos不同微…

【JavaEE】MyBatis

文章目录1.MyBatis介绍2.MyBatis快速入门3.Mapper代理开发4.MyBatis核心配置文件5.配置文件完成增删改查5.1 查询5.2 添加/修改5.3 删除6.MyBatis参数传递7.注解完成增删改查1.MyBatis介绍 1.什么是MyBatis? MyBatis是一款优秀的 持久层框架,用于简化JDBC开发MyBat…

STC 51单片机46——看门狗测试

#include <reg52.h> sfr WDT_CONTR 0xE1; //声明WDT_CONTR void delay(void){ //改变延时长度&#xff0c;可以观测是否触发看门狗 unsigned char i,j,k; for(i0;i<255;i) for(j0;j<255;j) for(k0;k<255;k); } void…

图神经网络

前言 图与图的表示 图是由一些点和一些线构成的&#xff0c;能表示一些实体之间的关系&#xff0c;图中的点就是实体&#xff0c;线就是实体间的关系。如下图&#xff0c;v就是顶点&#xff0c;e是边&#xff0c;u是整张图。attrinbutes是信息的意思&#xff0c;每个点、每条…

MFC界面控件BCGControlBar v33.3 - 升级Ribbon Bar自定义功能

BCGControlBar库拥有500多个经过全面设计、测试和充分记录的MFC扩展类。 我们的组件可以轻松地集成到您的应用程序中&#xff0c;并为您节省数百个开发和调试时间。 该版本包含了增强的Ribbon自定义、新的日期/时间数字指示器、带有文本对齐的组控件、多行支持以及其他一些新功…

第二证券|12月A股投资方向来了!这些板块已先涨为敬

日前&#xff0c;我国银河、信达证券、中泰证券、安全证券等多家券商连续发布12月A股月度出资组合。全体上券商对后市持活跃情绪&#xff0c;以为当时商场处于震动磨底装备区间&#xff0c;商场动摇并不影响“暖冬行情”的延续&#xff0c;一些活跃的券商以为后市有望走出季度级…

R语言rcurl抓取问财财经搜索网页股票数据

问财财经搜索是同花顺旗下的服务之一,主要针对上市公司的公告、研报、即时新闻等提供搜索及参考资料。相对于其他股票软件来说&#xff0c;一个强大之处在于用自然语言就可以按你指定的条件进行筛选。而大部分现有的行情软件支持的都不是很好&#xff0c;写起来就费尽心思&…

Nginx加载Lua脚本链接mysql

1、nginx加载lua脚本方法可参我的这篇文章 Nginx安装Openresty加载Lua代码_IT东东歌的博客-CSDN博客 2、测试代码 官网 https://github.com/openresty/lua-resty-mysql local mysql require "resty.mysql" local db, err mysql:new() if not db then ngx.sa…

Django 第四章 模版系统详解(ORM数据模型-使用mysql数据库增删改查)

djiango模版系统&#xff1a; 用于自动渲染一个文本文件&#xff0c;一般用于HTML页面&#xff0c;模版引擎渲染的最终HTML内容返回给客户端浏览器 模版系统分成两部分 静态部分&#xff1a; 例如html css .js 动态部分 djiango 模版语言&#xff0c;类似于jinja语法变量定义&…

SpringCloud 组件Gateway服务网关【全局过滤器】

目录 1&#xff0c;全局过滤器 1.1&#xff1a;全局过滤器作用 1.2&#xff1a;自定义全局过滤器 1.3&#xff1a;过滤器执行顺序、 2&#xff1a;跨域问题 2.1&#xff1a;什么是跨域问题 2.2&#xff1a;示例跨域问题 2.3&#xff1a;解决跨域问题 1&#xff0c;全局…