千家信息网

(第6.2篇)大数据发展背后的强力推手——HBase分布式存储系统

发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,本篇接着6.1 继续讲HBase。4. Hbase容错与恢复每个HRegionServer中都有一个HLog对象,HLog是一个实现Write Ahead Log的类,在每次用户操作写入MemStor
千家信息网最后更新 2025年12月02日(第6.2篇)大数据发展背后的强力推手——HBase分布式存储系统

本篇接着6.1 继续讲HBase。

4. Hbase容错与恢复

每个HRegionServer中都有一个HLog对象,HLog是一个实现Write Ahead Log的类,在每次用户操作写入MemStore的同时,也会写一份数据到HLog文件中(HLog文件格式见后续),HLog文件定期会滚动出新的,并删除旧的文件(已持久化到StoreFile中的数据)。当HRegionServer意外终止后,HMaster会通过Zookeeper感知到,HMaster首先会处理遗留的 HLog文件,将其中不同Region的Log数据进行拆分,分别放到相应region的目录下,然后再将失效的region重新分配,领取到这些region的HRegionServer在Load Region的过程中,会发现有历史HLog需要处理,因此会Replay HLog中的数据到MemStore中,然后flush到StoreFiles,完成数据恢复

Hbase容错性:

1) Master容错:Zookeeper重新选择一个新的Master

l Master过程中,数据读取仍照常进行;

l master过程中,region切分、负载均衡等无法进行;

2) RegionServer容错:定时向Zookeeper汇报心跳,如果一旦时间内未出现心跳,Master将该RegionServer上的Region重新分配到其他RegionServer上,失效服务器上"预写"日志由主服务器进行分割并派送给新的RegionServer

3) Zookeeper容错:Zookeeper是一个可靠地服务,一般配置3或5个Zookeeper实例

Region定位流程:

寻找RegionServer过程:ZooKeeper--> -ROOT-(单Region)--> .META.--> 用户表

1) -ROOT-

l 表包含.META.表所在的region列表,该表只会有一个Region

l Zookeeper中记录了-ROOT-表的location

2) .META.

l 表包含所有的用户空间region列表,以及RegionServer的服务器地址。

5. Hbase基础操作

1) 进入hbase shell console

$HBASE_HOME/bin/hbase shell

的管理

2) 查看有哪些表

list

3) 创建表

# 语法:create

, {NAME => , VERSIONS => }

# 例如:创建表t1,有两个family name:f1,f2,且版本数均为2

> create 't1',{NAME => 'f1', VERSIONS => 2},{NAME => 'f2', VERSIONS => 2}

4) 删除表

# 分两步:首先disable,然后drop

# 例如:删除表t1

> disable 't1'

> drop 't1'

5) 查看表的结构

# 语法:describe

# 例如:查看表t1的结构

> describe 't1'

6) 修改表结构

# 修改表结构必须先disable

# 语法:alter 't1', {NAME => 'f1'}, {NAME => 'f2', METHOD => 'delete'}

# 例如:修改表test1的cf的TTL为180天

> disable 'test1'

> alter 'test1',{NAME=>'body',TTL=>'15552000'},{NAME=>'meta', TTL=>'15552000'}

> enable 'test1'

权限管理:

1) 分配权限

# 语法 : grant

参数后面用逗号分隔

# 权限用五个字母表示: "RWXCA".

# READ('R'), WRITE('W'), EXEC('X'), CREATE('C'), ADMIN('A')

# 例如,给用户'test'分配对表t1有读写的权限,

> grant 'test','RW','t1'

2) 查看权限

# 语法:user_permission

# 例如,查看表t1的权限列表

> user_permission 't1'

3) 收回权限

# 与分配权限类似,语法:revoke

# 例如,收回test用户在表t1上的权限

> revoke 'test','t1'

表数据的增删改查:

1) 添加数据

# 语法:put

,,,,

# 例如:给表t1的添加一行记录:rowkey是rowkey001,family name:f1,column name:col1,value:value01,timestamp:系统默认

> put 't1','rowkey001','f1:col1','value01'

2) 查询数据--查询某记录

# 语法:get

,,[,....]

# 例如:查询表t1,rowkey001中的f1下的col1的值

> get 't1','rowkey001', 'f1:col1'

# 或者:

> get 't1','rowkey001', {COLUMN=>'f1:col1'}

# 查询表t1,rowke002中的f1下的所有列值

hbase(main)> get 't1','rowkey001'

3) 查询数据--扫描表

# 语法:scan

, {COLUMNS => [ ,.... ], LIMIT => num}

# 另外,还可以添加STARTROW、TIMERANGE和FITLER等高级功能

# 例如:扫描表t1的前5条数据

> scan 't1',{LIMIT=>5}

4) 查询表中的数据行数

# 语法:count

, {INTERVAL => intervalNum, CACHE => cacheNum}

# INTERVAL设置多少行显示一次及对应的rowkey,默认1000;CACHE每次去取的缓存区大小,默认是10,调整该参数可提高查询速度

# 例如,查询表t1中的行数,每100条显示一次,缓存区为500

> count 't1', {INTERVAL => 100, CACHE => 500}

5) 删除数据--删除行中的某个列

# 语法:delete

, , , ,必须指定列名

# 例如:删除表t1,rowkey001中的f1:col1的数据

> delete 't1','rowkey001','f1:col1'

6) 删除数据--删除行

# 语法:deleteall

, , , ,可以不指定列名,删除整行数据

# 例如:删除表t1,rowk001的数据

> deleteall 't1','rowkey001'

7) 删除数据--删除中的所有数据

# 语法: truncate

# 其具体过程是:disable table -> drop table -> create table

# 例如:删除表t1的所有数据

> truncate 't1'

Region管理:

1) 移动Region

# 语法:move 'encodeRegionName', 'ServerName'

# encodeRegionName指的regioName后面的编码,ServerName指的是master-status的Region Servers列表

# 示例

>move '4343995a58be8e5bbc739', 'db-41.xxx.xxx.org,60020,139'

2) 开启/关闭region

# 语法:balance_switch true|false

hbase(main)> balance_switch

3) 手动split

# 语法:split 'regionName', 'splitKey'

4) 手动触发major compaction

#语法:

#Compact all regions in a table:

> major_compact 't1'

#Compact an entire region:

> major_compact 'r1'

#Compact a single column family within a region:

> major_compact 'r1', 'c1'

#Compact a single column family within a table:

> major_compact 't1', 'c1'



此时你已经学会了安装hadoop集群,了解了HDFS文件系统,MapReduce计算框架和Zookeeper协作服务(Zookeeper数据模型、访问控制、应用场景),今天学完了HBase,下一篇我们介绍hadoop的数据库工具--Hive。



如何用4个月学会Hadoop开发并找到年薪25万工作?

免费分享一套17年最新Hadoop大数据教程100Hadoop大数据必会面试题

因为链接经常被和谐,需要的朋友请加微信 ganshiyun666 来获取最新下载链接,注明"51CTO"


教程已帮助300+人成功转型Hadoop开发,90%起薪超过20K,工资比之前翻了一倍。

百度Hadoop核心架构师亲自录制

内容包括0基础入门、Hadoop生态系统、真实商业项目实战3大部分。其中商业案例可以让你接触真实的生产环境,训练自己的开发能力。


数据 语法 权限 查询 文件 用户 过程 容错 分配 服务 查询表 结构 系统 服务器 开发 管理 参数 商业 基础 手动 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 h2数据库能用吗 军用计算机网络安全体系结构 浦东新区综合软件开发使用方法 宁夏银行 软件开发 薪资 生物与网络技术的融合 计算机网络技术实训内容报告 网站开发专业包括软件开发吗 数据库树状结构图 机架式服务器维修电话 网络技术专业全民 一般软件系统连接不同的数据库 纺织软件开发重庆 大兴回收二手服务器平台 网络技术专业高一学什么 怎么在两个电脑之间做数据库 梦幻西游东海湾服务器人多吗 服务器电脑有什么用 笔记本电脑怎样进入网络安全模式 如何创建要附加的数据库文件 软件开发万元笔记本推荐 服务器关闭自动安装程序 数据库删除多个分区数据 全国人口失联数据库 参加网络安全大赛 户政网络安全应急演练的通知 世纪互联服务器租用 日照软件开发有哪些公司 学网络安全在美国一个月多少钱 小程序云数据库维护 数据库主键外键怎么设置6
0