欢迎投稿

今日深度:

Hbase,

Hbase,


Hbase

概念特性 :HBASE是一个数据库----可以提供数据的实时随机读写

HBASE与mysql、oralce、db2、sqlserver等关系型数据库不同,它是一个NoSQL数据库(非关系型数据库)

1.Hbase的表模型与关系型数据库的表模型不同:

2.Hbase的表没有固定的字段定义;

3.Hbase的表中每行存储的都是一些key-value对

4.Hbase的表中有列族的划分,用户可以指定将哪些kv插入哪个列族

5.Hbase的表在物理存储上,是按照列族来分割的,不同列族的数据一定存储在不同的文件中

6.Hbase的表中的每一行都固定有一个行键,而且每一行的行键在表中不能重复

7.Hbase中的数据,包含行键,包含key,包含value,都是byte[ ]类型,hbase不负责为用户维护数据类型

8.HBASE对事务的支持很差

HBASE相比于其他nosql数据库(mongodb、redis、cassendra、hazelcast)的特点

Hbase的表数据存储在HDFS文件系统中,从而,hbase具备如下特性:存储容量可以线性扩展; 数据存储的安全性可靠性极高!

应用场景

HBASE是一个分布式系统

其中有一个管理角色:  HMaster(一般2台,一台active,一台backup)

其他的数据节点角色:  HRegionServer(很多台,看数据容量)

安装准备:

首先,要有一个HDFS集群,并正常运行; regionserver应该跟hdfs中的datanode在一起

其次,还需要一个zookeeper集群,并正常运行

然后,安装HBASE

角色分配如下:

Hdp01:  namenode  datanode  regionserver  hmaster  zookeeper

Hdp02:  datanode   regionserver  zookeeper

Hdp03:  datanode   regionserver  zookeeper

安装步骤

解压hbase安装包:tar -zxvf hbase-1.2.1-bin.tar.gz -C apps/

修改conf/hbase-env.sh

export JAVA_HOME=/root/apps/jdk

export HBASE_MANAGES_ZK=false

修改conf/hbase-site.xml

<configuration>

<!-- 指定hbase在HDFS上存储的路径 -->

        <property>

                <name>hbase.rootdir</name>

                <value>hdfs://master:9000/hbase</value>

        </property>

<!-- 指定hbase是分布式的 -->

        <property>

                <name>hbase.cluster.distributed</name>

                <value>true</value>

        </property>

<!-- 指定zk的地址,多个用“,”分割 -->

        <property>

                <name>hbase.zookeeper.quorum</name>

                <value>master:2181,slave:2181,slave:2181</value>

        </property>

</configuration>

 

修改 conf/regionservers

master

slave1

slave2

启动hbase集群

bin/start-hbase.sh

启动完后,还可以在集群中找任意一台机器启动一个备用的master

bin/hbase-daemon.sh start master

新启的这个master会处于backup状态

启动hbase的命令行客户端

bin/hbase shell

Hbase> list     // 查看表

Hbase> status   // 查看集群状态

Hbase> version  // 查看集群版本

浏览器查看hbase

master:16010

 

HBASE表模型

hbase的表模型跟mysql之类的关系型数据库的表模型差别巨大

hbase的表模型中有:行的概念;但没有字段的概念

行中存的都是key-value对,每行中的key-value对中的key可以是各种各样,每行中的key-value对的数量也可以是各种各样

 

hbase表模型的要点:

1、一个表,有表名

2、一个表可以分为多个列族(不同列族的数据会存储在不同文件中)

3、表中的每一行有一个“行键rowkey”,而且行键在表中不能重复

4表中的每一对kv数据称作一个cell

5、hbase可以对数据存储多个历史版本(历史版本数量可配置)

6、整张表由于数据量过大,会被横向切分成若干个region(用rowkey范围标识),不同region的数据也存储在不同文件中

7、hbase会对插入的数据按顺序存储:

要点一:首先会按行键排序

要点二:同一行里面的kv会按列族排序,再按k排序

 

hbase的表中能存储什么数据类型

hbase中只支持byte[]

此处的byte[] 包括了: rowkey,key,value,列族名,表名

 

HBASE表的物理存储结构

 

hbase命令行客户端操作

建表:

create 't_user_info','base_info','extra_info'

         表名      列族名   列族名

插入数据:

hbase(main):011:0> put 't_user_info','001','base_info:username','zhangsan'

0 row(s) in 0.2420 seconds

 

hbase(main):012:0> put 't_user_info','001','base_info:age','18'

0 row(s) in 0.0140 seconds

 

hbase(main):013:0> put 't_user_info','001','base_info:sex','female'

0 row(s) in 0.0070 seconds

 

hbase(main):014:0> put 't_user_info','001','extra_info:career','it'

0 row(s) in 0.0090 seconds

 

hbase(main):015:0> put 't_user_info','002','extra_info:career','actoress'

0 row(s) in 0.0090 seconds

 

hbase(main):016:0> put 't_user_info','002','base_info:username','liuyifei'

0 row(s) in 0.0060 seconds

查询数据方式一:scan 扫描

hbase(main):017:0> scan 't_user_info'

ROW                               COLUMN+CELL                                                                                    

 001                              column=base_info:age, timestamp=1496567924507, value=18                                        

 001                              column=base_info:sex, timestamp=1496567934669, value=female                                    

 001                              column=base_info:username, timestamp=1496567889554, value=zhangsan                              

 001                              column=extra_info:career, timestamp=1496567963992, value=it                                    

 002                              column=base_info:username, timestamp=1496568034187, value=liuyifei                              

 002                              column=extra_info:career, timestamp=1496568008631, value=actoress                              

2 row(s) in 0.0420 seconds

查询数据方式二:get 单行数据

hbase(main):020:0> get 't_user_info','001'

COLUMN                            CELL                                                                                            

 base_info:age                    timestamp=1496568160192, value=19                                                              

 base_info:sex                    timestamp=1496567934669, value=female                                                          

 base_info:username               timestamp=1496567889554, value=zhangsan                                                        

 extra_info:career                timestamp=1496567963992, value=it                                                              

4 row(s) in 0.0770 seconds

删除一个kv数据

hbase(main):021:0> delete 't_user_info','001','base_info:sex'

0 row(s) in 0.0390 seconds

 

删除整行数据

hbase(main):024:0> deleteall 't_user_info','001'

0 row(s) in 0.0090 seconds

 

hbase(main):025:0> get 't_user_info','001'

COLUMN                            CELL                                                                                            

0 row(s) in 0.0110 seconds

删除整个表:

hbase(main):028:0> disable 't_user_info'

0 row(s) in 2.3640 seconds

 

hbase(main):029:0> drop 't_user_info'

0 row(s) in 1.2950 seconds

 

hbase(main):030:0> list

TABLE                                                                                                                            

0 row(s) in 0.0130 seconds

 

=> []

 

Hbase重要特性--排序特性(行键)

插入到hbase中去的数据,hbase会自动排序存储:

排序规则:  首先看行键,然后看列族名,然后看列(key)名; 按字典顺序

HBASE客户端API操作

DDL操作

1、创建一个连接

Connection conn = ConnectionFactory.createConnection(conf);

2、拿到一个DDL操作器:表管理器admin

Admin admin = conn.getAdmin();

3、用表管理器的api去建表、删表、修改表定义

admin.createTable(HTableDescriptor descriptor);

 

hbase的表模型

hbase整体工作机制示意图

布隆过滤器示意图

各种数据库之间的差别

 

 

 

www.htsjk.Com true http://www.htsjk.com/hbase/37497.html NewsArticle Hbase, Hbase 概念特性  :HBASE是一个数据库----可以提供数据的实时随机读写 HBASE与mysql、oralce、db2、sqlserver等关系型数据库不同,它是一个NoSQL数据库(非关系型数据库) 1.Hbase的表模型与...
相关文章
    暂无相关文章
评论暂时关闭