Hbase详解(下)

来源:互联网 发布:mac截图怎么保存 编辑:程序博客网 时间:2024/06/06 06:38
接上片
http://blog.csdn.net/a_eternal/article/details/77450189


列族


在关系型数据库中没有列族的概念,在HBase中,列族是一行中一个或多个列的集合,就是一行数据的一部分。列族需要在表创建时就定义好,并且不能修改的太频繁,数量也不能太多,在以前的HBase实现中有少量已知的缺陷,导致列族的数量最多只能使用几十个。列族中的列的数量是没有限制的。


如图所示列族中可以包含多个列,一个表中的某个列的定位方式就成为了meta:size这种方式。我们就称之为列限定符,说白了,列限定符即指一个列族中的某个列。

单元格



一个单元格是行、列族和列限定符的结合,也就是说,通过这三个值(也称之为坐标)来唯一确定一个单元格。其中包含值和创建这个值的时间(即时间戳)。单元格中的值与关系型数据库不同的是,其如果没有值的话,就为空,什么也不写,也不占用底层物理存储。关系型数据中则需要存储null



时间戳就是写入某个单元格中的数据时候的具体时间(从197011日开始到当前系统时间的一个毫秒值),用来表示一个单元格中的数据的新旧。

数据模型




逻辑模型:有序映射的映射集合


存储模型列式存储


物理模型:面向列族


HBase增删改查内部流程

HBase写流程和更新流程




HBase读流程

.


HBase删流程



HBase shell

详见HBaseShell常用命令.docx文档

HBase java api

使用eclipse开发Hbase程序

先将Hbase 安装目录下的lib目录中的所有jar包导入到项目中

 

只需创建普通的java应用程序即可需要在项目中创建conf目录并将hbase-site.Xml文件放进其中(此时hbase-site.xml文件中hbase.rootdir配置项的值应为hdfs://master:8020/hbase的形式,这种方式不影响使用HDFSHA,但是不能直接配置成HDFS中的HA的方式)。再通过Configure Build Pathconf目录添加为ClassFloder即可

 

同时还需要在Windows中配置hosts文件,以方便访问Hbase服务器。

具体语法

详见代码和HBase JAVA API.docx文档

HBaseHAbackupMaster

HBaseHAHDFSHA类似,也是通过多Master程序来实现的,其中有一个Master为主提供服务的Master剩下的master对活跃的Master进行备份,习惯称之为backupMaster,也称之为slave类型的Master。主masterslave类型的master之间不需要通过其他额外的方式进行数据共享。当主Mater挂掉时会自动切换到slave类型的Master上(需要几秒钟时间)。(HBaseHA机制可以在HBasemaster已有数据时进行操作

实现方式

habseconf目录里添加backup-masters文件其中填入需要作为Master的机器即可,在本例中,其内容如下(其中每个主机名占一行):

master

slave1

 

注意实际操作发现在master机器上的conf目录下创建此文件即可无需在所有机器上都添加此文件同样的启动时需要在master机器上启动Hbase程序。

 

如果不配置此文件,Hbase本身也是支持多Master的,只需要在多台机器上启动master即可。启动命令如下:

# sh hbase-daemon.sh start master

检测方式

master机器上正常启动Hbase即可,启动后在slave1机器上通过jps命令可以看到slave1机器上也开启了master进程

 

启动命令:

# sh start-hbase.sh

 

正常启动的web信息

Ø Master机器上的web界面如下图所示:


Ø Slave1机器上的web界面如下图所示


杀死slave1上的master进程后的web信息

使用如下两种方式皆可杀死slave1机器上的Hbase master进程

 

1. 直接杀死进程

Kill -9 master进程的端口号


 

1. 使用hbase自带的命令关闭master进程

sh hbase-deamon.sh stop master


[0-2)  包前不包后

64K



原创粉丝点击