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

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的安装测试都已完毕!

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

相关文章:

  • 分块加载卡顿、内存泄漏频发,R 4.5新API中data.table::fread+arrow::open_dataset混合分块方案全解析
  • GHelper技术深度解析:华硕笔记本硬件控制开源工具的核心架构与优化策略
  • 小户型客厅小,窗帘怎么选不显拥挤、显空间大?
  • 如何用LibreVNA构建你的专业射频实验室:开源矢量网络分析仪终极指南
  • 别再被`Encountered unexpected token`搞懵了!一个MyBatis XML文件里的`database()`函数引发的jsqlparser解析血案
  • 2026年主流排插/插座品牌深度解析:从国民优选到国际标杆 - 品牌排行榜
  • PHP Swoole对接大模型长连接的7个致命陷阱:90%团队在第3步就崩溃了!
  • GKMLT通讯工具箱(WPF MVVM) - 05-WebAPI通讯
  • 告别报告堆砌:超自动化巡检的智能分析与洞察
  • 运维入门指南:从基础到实战
  • 【限时开源】PHP 9.0 AI Bot Starter Kit正式发布:内置JWT鉴权、对话上下文管理、Token自动节流——仅开放前2000名下载
  • 某40m简支t梁桥毕业设计计算书_secret
  • YOLO26-seg分割优化:红外小目标 | 注意力机制改进 | 并行化注意力设计(PPA)模块,红外小目标暴力涨点
  • 从水土流失到城市经济:手把手教你用SPSS搞定地理学中的回归与聚类分析(附实战数据集)
  • 你还在用Python写AI后端?PHP 9.0异步生态已全面超越:实测QPS 4,820 vs Python FastAPI 2,160(附JMeter完整报告)
  • 2026年邓州毛坯房装修公司推荐 - 品牌排行榜
  • R语言交互式教学从入门到爆火:7个即学即用Shiny+ggplot2教学案例,教师速抢!
  • Python在TVA系统中的核心意义(2)
  • 需求驱动测试(RBT)在软件工程中的实践与价值
  • 2026年必备:15款去AI痕迹降AI工具实测,高效降低AIGC率(含免费版) - 降AI实验室
  • Unity Mod Manager:5分钟掌握Unity游戏模组管理的终极秘籍
  • TVA在机器人核心零部件制造与检测中的体验分享(2)
  • CUDA与Triton下的矩阵乘法优化实战
  • 2026年论文AI率过高怎么办?降AI率必看技巧与工具收藏 - 降AI实验室
  • R 4.5低代码分析工具正式发布:3小时搭建可投产BI看板,你还在写100行dplyr代码?
  • 逆向工程师的“瑞士军刀”:用FART12脱壳系统搞定邦邦、爱加密与企业壳的真实体验
  • 微信电脑版冗余文件清理工具(附下载链接)
  • R 4.5大数据分块处理实战手册(仅限内部团队验证的5层缓冲架构)
  • VidEmo视频情感分析:基于情感树推理的深度模型
  • AD新手避坑指南:Unknown Pin报错别慌,三步排查搞定PCB封装匹配