hadoop hive hbase

公司报表是基于数仓开发的,分层是ods>dwd>dwm>dm,sqoop再同步到传统数据库,帆软展示,或tableau展示,这块涉及的是离线计算。

记录下大数据开发设计的概念:

1、hadoop:分布式计算(MapReduce)+分布式文件系统(HDFS),后者可以独立运行,前者可以选择性使用,也可以不使用

2、hive:数据仓库,仓库中的数据是被hdfs管理的数据文件,它支持类似sql语句的功能,你可以通过该语句完成分布式环境下的计算功能,hive会把语句转换成MapReduce,然后交给hadoop执行。这里的计算,仅限于查找和分析,而不是更新、增加和删除。它的优势是对历史数据进行处理,也即 离线计算,因为它的底层是MapReduce,MapReduce在实时计算上性能很差。它的做法是把数据文件加载进来作为一个hive表(或者外部表),让你觉得你的sql操作的是传统的表。

3、hbase:hbase的作用类似于数据库,传统数据库管理的是集中的本地数据文件,而hbase基于hdfs实现对分布式数据文件的管理,比如增删改查。也就是说,hbase只是利用hadoop的hdfs帮助其管理数据的持久化文件(HFile),它跟MapReduce没任何关系。hbase的优势在于实时计算,所有实时数据都直接存入hbase中,客户端通过API直接访问hbase,实现实时计算。由于它使用的是nosql,或者说是列式结构,从而提高了查找性能,使其能运用于大数据场景,这是它跟MapReduce的区别。

总结:

hadoop是hive和hbase的基础,hive依赖hadoop,而hbase仅依赖hadoop的hdfs模块。

hive适用于离线数据的分析,操作的是通用格式的(如通用的日志文件)、被hadoop管理的数据文件,它支持类sql,比编写MapReduce的java代码来的更加方便,它的定位是数据仓库,存储和分析历史数据

hbase适用于实时计算,采用列式结构的nosql,操作的是自己生成的特殊格式的HFile、被hadoop管理的数据文件,它的定位是数据库,或者叫DBMS

hive可以直接操作hdfs中的文件作为它的表的数据,也可以使用hbase数据库作为它的表
————————————————
参考资料:

1、https://blog.csdn.net/m0_67402125/article/details/126582077

2、谷歌三篇大数据相关的论文

===========

image

 

二、核心差异拆解

1. 数据处理模式:批处理 vs 实时随机访问

  • MapReduce:是 “一次性批处理” 模型 —— 启动一个 Job,全量扫描 HDFS 上的一批文件(比如 TB 级日志),通过 Map→Shuffle→Reduce 完成计算(如统计 PV/UV、日志分析),计算完成后 Job 结束,无 “数据存储” 能力。特点:延迟高(分钟 / 小时级)、吞吐量高,适合离线统计、数据清洗、ETL 等场景。举例:统计过去 30 天所有用户的消费总额,用 MapReduce 扫描全量订单文件计算。
  • HBase:是 “在线存储 / 访问” 模型 —— 数据以键值对(RowKey + 列族 + 列) 形式存储在 HDFS 上(封装为 HFile),并提供内存缓存(BlockCache)、行索引等,支持毫秒级的随机读写(按 RowKey 查、改、删)。特点:低延迟、高并发,适合需要实时响应的场景,不适合全量扫描(全表扫描性能差)。举例:查询某个用户当前的账户余额、实时写入物联网设备的秒级数据。

2. 数据存储形态:无状态计算 vs 有状态存储

  • MapReduce 本身不存储数据:它只是 “读取 HDFS 文件→计算→输出结果(到 HDFS/HBase 等)” 的过程,计算完成后,除了输出结果,没有任何数据留存。
  • HBase 本身是存储系统:它将数据结构化存储(列式存储),维护数据的版本、索引、分区(Region),支持事务(弱事务)、TTL(数据过期)等存储特性,数据长期驻留,可反复读写。

3. 对 HDFS 的依赖:直接操作 vs 封装抽象

  • MapReduce 直接对接 HDFS 的文件系统接口:用户需要明确指定 HDFS 路径(如 hdfs://node01:9000/logs/2025),处理的是 HDFS 上的原始文件(文本、SequenceFile 等),需要自己处理文件分片、数据解析。
  • HBase 基于 HDFS 构建,但对用户屏蔽了 HDFS 细节:用户只需要通过 RowKey 操作表,HBase 自动将数据分 Region、刷写 MemStore 到 HFile、管理副本和容错,用户完全不用关心 HDFS 的文件路径和格式。

4. 适用场景:离线批处理 vs 实时在线业务

MapReduce 适用场景HBase 适用场景
海量数据离线统计(如电商大盘分析) 实时查询(如订单详情、用户画像)
数据清洗 / ETL(如日志结构化处理) 高并发写入(如物联网数据、交易流水)
复杂计算(如排序、聚合、关联) 按主键快速读写(如用户 ID、设备 ID)
非实时、一次性任务 在线业务、低延迟响应

三、二者的关联(不是对立,而是互补)

  1. MapReduce 可作为 HBase 的 “数据导入 / 导出工具”:
     
    比如用 MapReduce 批量将 HDFS 上的历史日志导入 HBase,或从 HBase 导出数据到 HDFS 做进一步分析。
  2. HBase 可作为 MapReduce 的 “中间结果存储”:
     
    复杂批处理任务中,MapReduce 的中间结果可存入 HBase,供后续 Job 快速读取,避免重复扫描 HDFS。
  3. 混合使用场景:
     
    离线用 MapReduce 计算用户画像(批处理),在线用 HBase 存储画像结果,供推荐系统实时查询(随机读写)。

四、总结:核心区别一句话

  • MapReduce 是 **“计算工具”**,解决 “如何批量处理 HDFS 上的海量数据”;
  • HBase 是 **“存储系统”**,解决 “如何对海量数据做低延迟的随机读写”;
  • 二者都依赖 HDFS,但一个聚焦 “计算”,一个聚焦 “存储”,场景完全不同。

 

posted @ 2023-07-25 20:59  野鹤闲人  阅读(30)  评论(0)    收藏  举报