栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

HBase

HBase

Hbase起源

2006年Google发布了一篇叫做BigTable:A Distributed Storage System for Structured Data的论文。BigTable是一个分布式存储系统,利用谷歌提出的MapReduce分布式并行计算模型来处理海量数据,使用谷歌分布式文件系统GFS作为底层数据存储,并采用Chubby提供协同服务管理,可以扩展到PB级别的数据和上千台机器,

特点:具备可扩展性、高性能和高可用性

存储结构

Hbase采用key-value的形式存储数据,最基本的存储单位是列(column)一个列或者多个列形成一行(row),若干行又组成了一张表(table)。

每行中的若干个列又可以被归类为一个列族(column family)。创建表的时候不需要指定列,但是需要指定列族。Hbase中的列是很灵活的,可以在插入数据的时候再去添加

如果插入数据的时候使用了以前已经存在的row key,那就会把之前的列值给更新掉。更新的时候,之前的值不会被覆盖,而是把新值也放到这个单元格中。

集群架构


一般Hbase集群有一个HMaster服务器和几个HRegionServer服务器。HMaster服务器负责维护表的结构信息,HRegionServer服务器负责存储数据

Store由两部分构成,一部分是MemStore,一部分是StoreFile。MemStore是内存缓冲区,StoreFile是HDFS上的文件。通常当MemStore的大小达到128M或者占用内存达到总内存的40%时会触发flush操作。

随着flush操作的执行,会产生越来越多的StoreFile文件。当StoreFile文件数量增长到3个后,会触发合并操作,将多个小的StoreFile合并成一个大的StoreFile。

StoreFile在完成Compact操作后,体积会越来越大。当单个StoreFile的大小超过10G后,会触发分裂操作,把当前Region分裂成2个Region。

为了保证恢复的效率,Hbase会限制HLog记录的日志数量,如果数量达到32的时候,就会触发强制flush操作。

HDFS组件

Hbase是由Client、Zookeeper、HMaster、HRegionServer和HDFS等几个组件组成
Client:包含了访问Hbase的接口,还有维护缓存加速Hbase的访问。
Zookeeper:实现HMaster的高可用;监控HRegionServer的状态;存储.meta.的地址。
HMaster:维护.meta.;为HRegionServer分配Region;维护集群的负载均衡。
HRegionServer:处理客户端的读写请求;管理HMaster分配的Region。
HDSF:为Hbase提供最终的底层数据存储服务。

启动节点
start-all.sh  开启节点
stop-all.sh   关闭节点
start-hbase.sh  开启hbase节点
stop-hbase.sh   关闭hbase节点
基础
Shell操作的第一步是启动Shell,使用以下命令
     hbase shell
要离开可以输入exit或者quit命令
exit;
使用create命令创建表
	create 'user', 'cf1'
这句话的意思是建立一个叫user的表,里边有一个叫做cf1的列族
使用list命令查看有哪些表
在Hbase Shell执行以下命令:
       list
输出结果:
TABLE                                                                                        
user                                                                                         
1 row(s)
Took 0.0890 seconds                                                                          
=> ["user"]
说明我们的Hbase中只有user一张表
使用describe命令来查看表属性
在Hbase Shell执行以下命令:
	describe 'user'
使用put命令来插入数据
在Hbase Shell执行以下命令:
	put 'user', 'rk0001', 'cf1:name', 'zhangsan'
这句话的意思就是
向user表插入一个单元格
这个单元格的row key为rk0001
这个单元格的列族是cf1
这个单元格的列名是name
这个单元格的数据值是zhangsan
使用scan来查看表数据
scan 'user'    查看user表里的内容
使用delete来删除单元格数据
	delete 'user', 'rk0002', 'cf1:age'
执行的结果就是user表中rk0002行的cf1:age单元格被删除了。
使用deleteall删除整行记录
deleteall 'user', 'rk0001'
这次一下就删除了整个rk0001记录。
使用disable来停用表
	disable 'user' 
	停用user表
	drop   'user'
	需要停用表之后才能删除表
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/673407.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号