当前位置: 首页 > news >正文

大数据技生态中Hadoop、Spark、Hive、HDFS之间的区别

Hadoop、Spark、Hive三者都是大数据相关的系统和技术,也属于数据管理系统的范畴,常见的问题无非就两个:1、数据怎么存;2、数据怎么算。为了方便理解这些技术,从单机时代来说,所有的数据都在一套服务器上,数据处理的任务都是IO密集型,也不是CPU密集型的,更谈不上分布式系统。在信息爆炸的时代,传统的单服务器已无法满足海量数据的存储和计算。问题在于如果有100台机器统一存储数据,该如何做管理呢?就好比老板直接对100个员工发号施令,肯定需要一些经理的角色帮助他管理这100个同事,让他们更像是一个团队在协作共事。

数据存储

在Hadoop平台上HDFS扮演这样一个经理的角色,HDFS会同意去管理这100个服务器的存储空间,提供相应的接口,让这一百台机器的存储空间看起来像在一台机器上。

数据计算

每一台机器都拥有自己的CPU内存,如果充分利用到这些资源让数据计算更快的完成就变成一个顺利成章的事情。在实现一个计算任务时,任务该怎么分配到这些机器上,任务之间如何做同步,出现某一台机器掉链子的情况怎么处理,这些都是典型的并行编码的复杂性。 为了解决这些问题,HDFS通过引入MapReduce解决这些问题,MapReduce模块实际上提供了一个任务并行的框架,通过对API的抽象,把并行的程序分为两个阶段:map阶段、reduce阶段。 假设有一个任务量很大的活,需要100个人,把它平均分成100份,每人做一份,这个过程就是map阶段。reduce阶段是指:等100个任务完成,然后再把结果汇总到一起,形成最终结果。

过去&现在SQL的使用区别

不得不说SQL是一个伟大的发明。用户可以通过SQl语言去做数据处理, SQL中的S就是结构化处理的意思,这里有个前提数据是结构化的。Hive中有一个核心模块metastore,它的作用主要是用来存储这些结构化的信息。Hive中引擎会将SQL语句进行语法分析,生成语法树,这些步骤实际上和普通数据库没有区别,区别主要在执行阶段,Hive引擎会把SQl语句翻译成MapReduce的任务去执行,再把执行的结果进行加工返回给用户。 SQL的出现使得大数据处理任务的开发效率提高了,但是在数据处理的表达力和灵活性上不如直接写MapReduce程序,因此两个技术不是相互替代的关系,根据使用场景需要自行选择。

Spark VS Hadoop

Spark本身也是一个计算框架,和Hadoop经常被拿来做对比,准确来说是和Hadoop里面的MapReduce做对比。和MapReduce不同的是Spark是基于内存的计算,MapReduce是基于磁盘的计算。举个极端的例子,如果数据量不大,并且机器内存可以装得下的话,Spark会比MapReduce快100倍。毕竟是基于内存而不是基于磁盘。但是一般来说,默认会认为前者比后者快2~3倍。作为计算引擎,Spark还提供了比如说可以让用户去写流处理的streaming的模块、支持机器学习的MLib模块,以及支持图处理的GraphX

http://www.jsqmd.com/news/799226/

相关文章:

  • 【深度解析】Hermes Agent + Ion UI:从自治代理到 Agentic OS 的桌面 AI 自动化实践
  • DeepSeek V4 API实战:从零搭建AI编程助手全流程
  • 自适应联邦学习优化自监督语音模型微调
  • UNet3+凭什么比UNet++更轻量又好用?深入对比参数量与设计思想
  • 基于多品牌定制化视频监控软件
  • DPDK LPM路由查找性能调优全记录:我是如何把查找速度再提升30%的
  • 【2024最严审核季】ElevenLabs Independent计划通过率骤降41%?用真实数据还原:技术文档完整性、域名可信度、流量真实性三重权重模型
  • 双端/欲望之尾 欲望の尾 Tail of Desire Ver1.01 一款由Bluebone制作组倾力打造的日式RPG神作,
  • 氛围工程:提升团队效能与代码质量的无形引擎
  • Vue3聊天项目深度优化:如何用V3Scroll和V3Layer提升仿QQ界面的交互体验与性能?
  • 应对2026检测新规:论文AI率太高怎么办?3款实测工具与避坑经验
  • 终极免费散热优化指南:3步掌握Windows风扇智能控制
  • 2026届必备的AI科研方案推荐榜单
  • Android Binder通信实战:从一次PING请求看IPCThreadState与驱动的完整对话
  • 从无人机飞控到机械臂抓取:姿态表示(欧拉角/四元数)选型避坑指南与Matlab仿真验证
  • A股突破4200点:是行情新起点,还是短期拐点?
  • 蛟龙二班(偷懒,只写代码!)
  • 多模态AI编程实践:基于视觉理解的代码生成工具架构与实现
  • AArch64内存模型:Device内存类型与访问优化
  • 流水线ADC电容失配数字校准算法【附代码】
  • 图像修复Mask数据集深度对比:NVIDIA官方版 vs. Quick Draw民间版,你该用哪个?
  • 自组织智能体:未来能自动生长、组合与退役的系统
  • AI开发环境革命:great.sh如何用智能编排重塑开发者工作流
  • 别傻点一万次!手把手教你用Cheat Engine(CE)快速搞定BugKu逆向题‘不好用的ce’
  • 基于LSP的AI编码助手语义增强:@plaited/development-skills实战指南
  • 别再拷贝exe到NXBIN了!用批处理文件搞定NX二次开发外部exe的环境变量配置(附VS2015/NX12示例)
  • HarmonyOS 6.1 全栈实战录 - 06 状态定力:PersistenceV2 深度进阶与集合类型持久化实战
  • 2026上海APP开发口碑实力排行:优选名单与技术路径深度测评
  • 别再乱写Service层了!用COLA 4.0给你的SpringBoot项目做个清晰的结构体检
  • 怎么在phpMyAdmin中实现动态毛玻璃背景效果_CSS3特效应用.txt