什么是HBase?它和Hive有什么区别?

一、HBase 是干什么的

1. 先对比 Hive,区分两者定位

Hive:离线大数据仓库,存日志、订单批量数据,只能做批量统计查询,不能实时根据某一条 ID 快速查数据;

HBase:分布式实时 NoSQL 数据库,底层依然跑 HDFS 存数据,依赖 ZooKeeper 做集群协调 / 主节点选举,主打单行毫秒级实时读写。

例子:

整个校园百万学生的一卡通数据:

  1. Hive:每月导出全部消费日志,统计全校人均消费、食堂营收(批量离线分析)
  2. HBase:学生刷完卡立刻写入,输入学号就能1 毫秒查出该学生全部刷卡记录(实时单点查询)

2. HBase 三大核心作用

海量存储:底层依托 HDFS,存十亿、百亿条数据无压力;

实时读写:按主键单行极速查、改、删,适合实时业务;

分布式高可用:依赖 ZK 自动切换 HMaster 主节点,主节点宕机集群不瘫痪。

二、案例演示

示例表设计:card_info 一卡通消费表

行键 rowkey:学号(001/002...,唯一主键,快速检索)

列族 1:base 基础信息(姓名、班级)

列族 2:pay 消费记录(消费窗口、金额、时间)

步骤 1:三台全部启动 HBase

hadoop1执行主启动命令,一键全集群启动

bash 复制代码
start-hbase.sh

三台分别用jps验证进程

bash 复制代码
jps

hadoop1:多出 HMaster + HRegionServer

hadoop2/hadoop3:只有 HRegionServer

底层原理(关联 ZK)

HBase 启动时自动连接 ZK,注册 HMaster 为主控制器,所有 RegionServer 向 ZK 上报心跳。ZooKeeper 负责 HBase 主节点选举,这也是安装 HBase 前必须装好 ZK 的根本原因。

步骤 2:进入 HBase Shell 交互控制台

bash 复制代码
hbase shell

步骤 3:建表

创建一卡通表,两个列族base、pay

bash 复制代码
create 'card_info','base','pay'

向 ZK 写入这条表的元数据:表名、列族、分片规则;

HMaster 分配数据分片(Region)给三台 RegionServer;

HDFS 自动创建专属存储目录 /hbase/data/default/card_info,未来所有数据存在这里。

步骤 4:插入多条测试数据

bash 复制代码
# 学号001,基础信息

put 'card_info','001','base:name','John'

put 'card_info','001','base:class','2301'

# 001消费记录

put 'card_info','001','pay:shop','water'

put 'card_info','001','pay:money','6'

put 'card_info','001','pay:time','12:18'



# 学号002数据

put 'card_info','002','base:name','Marry'

put 'card_info','002','pay:money','15'

|-------------|---------------|------------|------------|
| Row Key | Timestamp | Column Family ||
| Row Key | Timestamp | base | pay |
| 001 | t5 | | time=12:18 |
| 001 | t4 | | money=6 |
| 001 | t3 | | shop=water |
| 001 | t2 | Class=2301 | |
| 001 | t1 | name=John | |
| 002 | t6 | | money=15 |
| 002 | t5 | name=Marry | |

put 语法格式

put '表名','行键rowkey','列族:列名','值'

底层存储逻辑

数据不会存在 HBase 软件本身,直接持久化到 HDFS 分布式块中,ZK 只记录表结构、分片位置。

步骤 5:实时单行查

bash 复制代码
# 只查学号001全部信息,毫秒返回

get 'card_info','001'

对比:

如果用 Hive 查:百万条日志全扫描,跑 MapReduce,几十秒出结果;

HBase:按学号 rowkey 精准定位分片,毫秒拿到数据,实时业务必备。

步骤 6:全表扫描

bash 复制代码
# 查看所有表

list

# 打印card_info全表数据

scan 'card_info'

步骤 7:删除单条消费记录、删除整行、删除表

bash 复制代码
# 删除001的消费金额字段

delete 'card_info','001','pay:money'

# 删除学号002整行所有数据

deleteall 'card_info','002'

# 禁用表后才能删除

disable 'card_info'

drop 'card_info'

步骤 8:去 HDFS 看真实数据

bash 复制代码
hdfs dfs -ls /hbase/data/default/

现象:能看到card_info文件夹,表真实数据全部在 HDFS,HBase 只是读写中间件,和 Hive 逻辑统一。

三、区分 Hive & HBase

相关推荐
小羊没烦恼!1 天前
微服务化的基石——持续集成
java·大数据·word·powerpoint·.net
一隅论数智1 天前
给AI一张“业务概念地图“:本体如何从哲学走向企业智能
大数据·人工智能·经验分享·笔记·学习·学习方法·政务
卷毛迷你猪1 天前
快速实验篇(A11)数据集成与多维分析:从单实验产出到跨实验宽表
hive·hadoop
尧炎科技1 天前
防潮抗变形,就选纯品梅花全桉多层板
大数据
这个DBA有点耶1 天前
MVCC深入:Read View、版本链与快照读——InnoDB并发控制的内核
数据库·mysql·架构
DBA_G1 天前
从地面到云霄:GBase数据库在民航三大场景的落地实践
数据库
程序员大阳1 天前
副队长大数据教程(5)--集群情况下虚拟机网络配置
大数据·集群·nat·网路
自由能燃气设备1 天前
商用全预混低氮冷凝锅炉免费方案vs付费方案对比+选型避坑指南
大数据·数据库·人工智能
科创致远1 天前
科创致远 ESOP 系统核心效能与实战价值展示
大数据·数据库·人工智能·精益工程
嘉立创FPC苗工1 天前
FPC与机器人的双向赋能,解锁智能装备进化新势能
大数据·人工智能·制造·fpc·电路板