news 2026/5/1 7:36:01

NoSQL和HBase

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
NoSQL和HBase

NoSQL 不只是 SQL

NoSQL的全名是“Not Only SQL”(不仅仅是 SQL)。

我们平时熟悉的MySQL / Excel 表格是关系型数据库,像严格的“网格座位表”,每一行每一列都必须固定。而NoSQL更灵活,可以存储各种各样格式的数据,不用死板的表格!

生活比喻
关系型数据库 = 学校里固定的座位表,每个人必须坐自己编号的位置,不能乱放书包。
NoSQL = 你的手账本/日记本,可以贴照片、画画、写文字,甚至夹电影票,完全随心所欲!

NoSQL 四大金刚(4种主要类型)

  • 文档型:像 JSON 文件,例如 MongoDB。存放“简历”一样灵活的文档。
  • 键值型:最简单的“绰号→本人”,例如 Redis。 超快查找。
  • 列族型:HBase 属于这一类! 下面会详细介绍 👇
  • 图类型:存储人和人之间的关系,比如社交网络好友推荐。

NoSQL 的优点(为什么需要它?)

  • 数据量巨大时也能飞快读写 (海量数据)
  • 可以随时增加新的字段,不用改动旧结构
  • 容易在多台机器上“分布式”运行,成本低
  • 很适合存储图片、评论、游戏数据、物联网信息等

HBase 列族数据库 · 大数据明星

HBase是 Apache 开源的一个NoSQL 列式存储数据库,它建立在 Hadoop(大数据技术家族)之上,可以存储几十亿行 × 几百万列的超大表格!

超级图书馆类比
普通图书馆(SQL):每本书要按编号放好,改位置很麻烦。
HBase 图书馆:有无数个书架,你可以按“读者ID+时间戳”快速找到任何一本书,还能存不同版本的笔记。特别适合存储互联网公司每天产生的海量日志、推荐数据!

HBase 核心特点

  • 列式家族存储:数据按“列族”分组,比如“个人信息”列族包含姓名、年龄,“成绩”列族包含数学、语文。不用的列不占用空间。
  • 水平扩展:加一台普通电脑就能存储更多数据,性能几乎线性增长。
  • 自动版本管理:每个单元格可以保存多个历史版本(像“时光机”)。
  • 强一致性:读到的永远是最新写入的数据,不会混乱。
  • 随机读写 + 范围扫描:可以精确查找某一行,也可以扫描一个范围的数据。

NoSQL vs 传统SQL:餐厅点菜对比

对比图

HBase 怎么工作的?(架构小漫画)

HBase 采用主从架构,主要有三个角色:

  • HMaster: 总管理员,负责分配数据到哪台机器,处理失败节点。
  • RegionServer: 工作小弟,负责真正的读写数据,每个 RegionServer 管理若干“Region”(数据分片)。
  • HDFS: 底层仓库,数据最终存在硬盘上,且自动复制多份保证安全。
工作流程图

现实生活里 HBase 用来做什么?

许多世界500强公司都在用 HBase 来存储海量数据:

  • 小米 / 快手:存储用户行为日志、推荐系统特征。
  • Facebook:消息系统和海量指标监控(早期消息组件用HBase)。
  • 阿里巴巴:存储商品交易记录、用户历史浏览等。
  • 电信运营商:话单查询、位置信息存储,一秒内查询上亿条数据。

NoSQL 与 HBase 的关系图

NoSQL 是一个大家族,HBase 是这个家族里特别能打的一位成员 ——列族数据库代表
就像 “水果”包含苹果、香蕉,而 HBase 就是那个“大榴莲” ,外表可能有点复杂,但内在无敌海量存储!

关系图

实验内容

在已安装好的Hadoop环境基础上,安装并配置HBase。

实验步骤

1.首先在Linux本地,新建/data/hbase1目录,用于存放所需文件。

mkdir -p /data/hbase1

切换目录到/data/hbase1下,使用wget命令,下载HBase所需安装包hbase-1.0.0-cdh5.4.5.tar.gz。

cd /data/hbase1 wget http://192.168.1.150:60000/allfiles/hbase1/hbase-1.0.0-cdh5
新建/切换(目录),下载安装包

2.将/data/hbase1目录下,HBase的安装包hbase-1.0.0-cdh5.4.5.tar.gz,解压缩到/apps目录下。

tar -xzvf /data/hbase1/hbase-1.0.0-cdh5.4.5.tar.gz -C /apps

再切换到/apps目录下,将/apps/hbase-1.0.0-cdh5.4.5/,重命名为hbase。

cd /apps mv /apps/hbase-1.0.0-cdh5.4.5/ /apps/hbase
解压并且重命名

3.添加HBase的环境变量。首先使用vim打开用户环境变量文件。

sudo vim ~/.bashrc

在环境变量文件末尾位置,追加HBase的bin目录路径相关配置,并保存退出。即下列内容:

#hbase export HBASE_HOME=/apps/hbase export PATH=$HBASE_HOME/bin:$PATH

执行source命令,使环境变量生效。

source ~/.bashrc

此时就可以调用HBase的bin目录下的脚本了。先来查看一下HBase的版本信息。

hbase version
进入编辑

4.下面开始配置HBase。切换目录到/apps/hbase/conf目录下,并使用vim编辑hbase-env.sh文件。

cd /apps/hbase/conf vim hbase-env.sh

追加配置内容到hbase-env.sh中,并保存退出。

export JAVA_HOME=/apps/java export HBASE_MANAGES_ZK=true export HBASE_CLASSPATH=/apps/hbase/conf

很明显:

JAVA_HOME为java程序所在位置;

HBASE_MANAGES_ZK表示是否使用HBase自带的zookeeper环境;

HBASE_CLASSPATH指向hbase配置文件的路径。

配置

5.下面使用vim打开hbase-site.xml文件。

vim hbase-site.xml

在两个<configuration>之间添加如下内容,并保存退出。

<property> <name>hbase.master</name> <value>localhost</value> </property> <property> <name>hbase.rootdir</name> <value>hdfs://localhost:9000/hbase</value> </property> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <property> <name>hbase.zookeeper.quorum</name> <value>localhost</value> </property> <property> <name>hbase.zookeeper.property.dataDir</name> <value>/data/tmp/zookeeper-hbase</value> </property>

配置项说明:

hbase.master:HBase主节点地址。

hbase.rootdir:HBase文件所存储的位置。

hbase.cluster.distributed:HBase是否为分布式模式。

hbase.zookeeper.quorum:这里是配置ZooKeeper的服务器的地方。

hbase.zookeeper.property.dataDir:这里表示HBase在ZooKeeper上存储数据的位置。

注意:这里hbase.zookeeper.property.dataDir目录,需要提前创建。

sudo mkdir -p /data/tmp/zookeeper-hbase

将/data/tmp/zookeeper-hbase目录切换所属用户为zhangyu及用户组为zhangyu。

sudo chown -R zhangyu:zhangyu /data/tmp/zookeeper-hbase

6.使用vim编辑/apps/hbase/conf/regionservers文件,此文件存储了HBase集群节点的ip地址,目前只有一台节点,所以只需要填写localhost即可。

vim /apps/hbase/conf/regionservers

修改文件内容为:

localhost
修改内容为locaalhost

7.下面输入jps,查看当前进程,Hadoop进程是否已经启动。

jps

若未启动,则切换到/apps/hadoop/sbin目录下,启动Hadoop。

cd /apps/hadoop/sbin ./start-all.sh

当Hadoop相关进程启动后,进入HBase的bin目录下,启动HBase服务。

cd /apps/hbase/bin/ ./start-hbase.sh

8.输入jps,查看HBase相关进程是否存在。

jps

输出结果为:

可以看到HMaster、HRegionServer、HQuorumPeer进程都已启动。

为了进一步测试HBase安装,是否正常,进入HBase Shell接口。

hbase shell

注意:如果我们使用SecureCRT这样的远程访问工具,输错命令时,直接按Backspace键,是不能删除掉前面的文字的。在这里可以使用Ctrl键+Backspace键来删除前面输错的文字。

输入list的命令,查看当前有哪些HTable表。

list

创建一张表tb,表中含有一个列簇mycf。

create 'tb','mycf'

再次输入list,列出HBase中的表。

到此hbase的安装测试都已完毕!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 7:30:07

华硕笔记本终极性能优化指南:G-Helper三步释放硬件潜能

华硕笔记本终极性能优化指南&#xff1a;G-Helper三步释放硬件潜能 【免费下载链接】g-helper G-Helper is a fast, native tool for tuning performance, fans, GPU, battery, and RGB on any Asus laptop or handheld - ROG Zephyrus, Flow, Strix, TUF, Vivobook, Zenbook, …

作者头像 李华
网站建设 2026/5/1 7:29:40

液氮管廊智能监测关键技术【附代码】

✅ 博主简介&#xff1a;擅长数据搜集与处理、建模仿真、程序设计、仿真代码、论文写作与指导&#xff0c;毕业论文、期刊论文经验交流。 ✅ 如需沟通交流&#xff0c;扫描文章底部二维码。&#xff08;1&#xff09;基于规则推理与D-S证据融合的多元环境数据故障诊断算法&…

作者头像 李华
网站建设 2026/5/1 7:23:27

Swift测试代理技能:模块化与可复用的自动化测试架构实践

1. 项目概述&#xff1a;一个Swift测试代理技能的深度实践最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“Swift-Testing-Agent-Skill”。光看名字&#xff0c;你可能会觉得这又是一个关于Swift单元测试的库或者框架。但如果你像我一样&#xff0c;在iOS开发和自动化测试…

作者头像 李华
网站建设 2026/5/1 7:21:29

告别 AI “金鱼记忆”!OpenViking 如何让你的 Agent 过目不忘?

各位代码界的卷王、AI圈的探险家们&#xff01; &#x1f44b; 今天咱们要聊聊 OpenViking 里那个让 AI Agent 终于能“记住你是谁”的神奇系统&#xff01; &#x1f9e0; 一、先唠唠痛点&#xff1a;为什么你的 AI 助理总是记不住你&#xff1f; 想象一下这个场景&#xff1a…

作者头像 李华