【大数据】Hadoop知识学习(5)-hbase

一、Hbase架构

在HBase中,表被分割成区域,并由区域服务器提供服务。区域被列族垂直分为“Stores”。Stores被保存在HDFS文件。下面显示的是HBase的结构。
注意:术语“store”是用于区域来解释存储结构。
在这里插入图片描述

HBase有三个主要组成部分:客户端库,主服务器和区域服务器。区域服务器可以按要求添加或删除。
主服务器
分配区域给区域服务器并在Apache ZooKeeper的帮助下完成这个任务。
处理跨区域的服务器区域的负载均衡。它卸载繁忙的服务器和转移区域较少占用的服务器。
通过判定负载均衡以维护集群的状态。
负责模式变化和其他元数据操作,如创建表和列。
区域
区域只不过是表被拆分,并分布在区域服务器。
区域服务器
与客户端进行通信并处理数据相关的操作。
句柄读写的所有地区的请求。
由以下的区域大小的阈值决定的区域的大小。
需要深入探讨区域服务器:包含区域和存储,如下图所示:
在这里插入图片描述

存储包含内存存储和HFiles。memstore就像一个高速缓存。在这里开始进入了HBase存储。数据被传送并保存在Hfiles作为块并且memstore刷新。
Zookeeper
Zookeeper管理是一个开源项目,提供服务,如维护配置信息,命名,提供分布式同步等
Zookeeper代表不同区域的服务器短暂节点。主服务器使用这些节点来发现可用的服务器。
除了可用性,该节点也用于追踪服务器故障或网络分区。
客户端通过与zookeeper区域服务器进行通信。
在模拟和独立模式,HBase由zookeeper来管理。

二、HBase Shell

HBase Shell
HBase包含可以与HBase进行通信的Shell。 HBase使用Hadoop文件系统来存储数据。它拥有一个主服务器和区域服务器。数据存储将在区域(表)的形式。这些区域被分割并存储在区域服务器。
主服务器管理这些区域服务器,所有这些任务发生在HDFS。下面给出的是一些由HBase Shell支持的命令。
通用命令
status: 提供HBase的状态,例如,服务器的数量。
version: 提供正在使用HBase版本。
table_help: 表引用命令提供帮助。
whoami: 提供有关用户的信息。
数据定义语言
create: 创建一个表。create ‘




在这里插入图片描述

list: 列出HBase的所有表。
disable: 禁用表。disable ‘emp’
is_disabled: 验证表是否被禁用。is_disabled ‘emp’
disable_all:此命令用于禁用所有匹配给定正则表达式的表。
如:disable_all ‘r.*’
enable: 启用一个表。 enable ‘emp’
is_enabled: 验证表是否已启用。is_enabled ‘emp’
describe: 提供了一个表的描述。describe ‘emp’
alter: 改变一个表。
改变列家族单元的最大数目。
alter ‘emp’, NAME => ‘personal data’, VERSIONS => 5
设置表为只读
alter ‘emp’
从emp表中删除“MAX_FILESIZE”
alter ‘t1’, METHOD => ‘table_att_unset’, NAME => ‘MAX_FILESIZE’
删除列族的语法
alter ‘ table name ’, ‘delete’ => ‘ column family ’
exists: 验证表是否存在。exists ‘emp’
drop: 从HBase中删除表。
用drop命令可以删除表。在删除一个表之前必须先将其禁用。
disable ‘emp’
drop ‘emp’
drop_all: 丢弃在命令中给出匹配“regex”的表。
exit:退出hbase shell
Java Admin API: 在此之前所有的上述命令,Java提供了一个通过API编程来管理实现DDL功能。在这个org.apache.hadoop.hbase.client包中有HBaseAdmin和HTableDescriptor 这两个重要的类提供DDL功能。
数据操纵语言
put: 把指定列在指定的行中单元格的值在一个特定的表。
put ‘emp’,‘1’,‘personal data:name’,‘raju’
put ‘emp’,‘1’,‘personal data:city’,‘hyderabad’
put ‘emp’,‘1’,‘professional data:designation’,‘manager’
put ‘emp’,‘1’,‘professional data:salary’,‘50000’

put ‘emp’,‘2’,‘personal data:name’,‘ravi’
put ‘emp’,‘2’,‘personal data:city’,‘chennai’
put ‘emp’,‘2’,‘professional data:designation’,‘sr.engineer’
put ‘emp’,‘2’,‘professional data:salary’,‘30000’

put ‘emp’,‘3’,‘personal data:name’,‘rajesh’
put ‘emp’,‘3’,‘personal data:city’,‘delhi’
put ‘emp’,‘3’,‘professional data:designation’,‘jr.engineer’
put ‘emp’,‘3’,‘professional data:salary’,‘25000’
#修改,可以使用put命令更新现有的单元格值
put ‘emp’,‘1’,‘personal data:city’,‘Delhi’
get: 取行或单元格的内容。
给定row_key:get ’emp’,’1’
指定列get ‘emp’,‘1’,{COLUMN=>‘personal data:name’}
delete: 删除表中的单元格值。
delete ‘emp’, ‘1’, ‘personal data:city’
deleteall: 删除给定行的所有单元格。
deleteall ‘emp’,‘1’
scan: 扫描并返回表数据。
scan ‘emp’
count: 计数并返回表中的行的数目。
count ‘emp’
truncate: 禁用,删除和重新创建一个指定的表。
此命令将禁止删除并重新创建一个表。truncate 的语法如下:
hbase> truncate ‘table name’
下面给出是 truncate 命令的例子。在这里,我们已经截断了emp表。
hbase(main):011:0> truncate ‘emp’
Truncating ‘one’ table (it may take a while):

  • Disabling table…
  • Truncating table…
    0 row(s) in 1.5950 seconds
    截断表之后,使用scan 命令来验证。会得到表的行数为零。
    hbase(main):017:0> scan ‘emp’
    ROW COLUMN+CELL
    0 row(s) in 0.3110 seconds
    不可恢复
    Java client API: 在此之前所有上述命令,Java提供了一个客户端API来实现DML功能,CRUD(创建检索更新删除)操作更多的是通过编程,在org.apache.hadoop.hbase.client包下。 在此包HTable 的 Put和Get是重要的类。

三、HBase Admin API

HBase是用Java编写的,因此它提供Java API和HBase通信。 Java API是与HBase通信的最快方法。下面给出的是引用Java API管理,涵盖用于管理表的任务。
HBaseAdmin类
HBaseAdmin是一个类表示管理。这个类属于org.apache.hadoop.hbase.client包。使用这个类,可以执行管理员任务。使用Connection.getAdmin()方法来获取管理员的实例。
在这里插入图片描述

Descriptor类
这个类包含一个HBase表,如详细信息:
所有列族的描述,
如果表是目录表,
如果表是只读的,
存储的最大尺寸,
当区域分割发生,
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值