本文主要是概述的讲解了Hbase入门相关的信息,包含Hbase的概念讲解、特性分析、原理分析、单机安装过程、基本命令操作,适合刚入门或者刚接触的小伙伴参考。文章后续会补充本篇文章的word文档的下载路径,提供下载参考使用。

一、Hbase概念:

  1. Hbase是一个开源的、分布式的、多版本的非关系型数据库。
  2. Hbase是基于Google的Bigtable的一个java版本,建立在HDF文件系统之上,具有高可靠性、高性能、列式存储、no-sql的近实时读写的数据库。

二、Hbase特性:

  1. Hbase和其他的关系型数据库一样,都是有表的概念,但是Hbase的表没有固定的字段定义。

  2. Hbase表中都有一个固定的行键Row Key,每一行的RowKey不能在表中重复,所以一般在存储数据时,行键用一些规定的字符拼接特定的hashcode来作为Row Key。默认按照RowKey升序排列。所以Hbase中的数据,可能不是按照我们自己想象的位置存储的。

  3. Hbase存储的数据类型是byte[],任何可以转化为字节数组的数据类型,比如:字符串、数字、复杂对象、图像都可以作为Hbase的值存储。所以Hbase不维护用户的数据类型。

  4. Hbase表中有列簇的划分,用户可以制定哪些key-value存在哪些列簇上。

  5. Hbase的列就是数据,也是索引,所以具有很高的读速度。
    简单了解Hbase及快速入手之入门教程_01

三、Hbase的内部原理:

简单了解Hbase及快速入手之入门教程_01
Client:

Hbase的客户端,比如后续的hbase shell命令行客户端,或java连接hbase写的API。

  1. Hbase中有两张有特殊的表:-ROOT-和.META.。
    1)、.META.中存放着从表中拆分出来的Region映射信息,一个.META.中可以有多个Region信息。

    2)、-ROOT-中存放着.META.的Region信息,一个-ROOT-只能有一个Region信息。

  2. 每一client访问用户数据的时候,都会先去访问zoopkeeper(zoopkeeper中记录着-ROOT-的localtion信息),然后再去访问-ROOT-,最后再去访问.META.,才能找到用户访问的数据的位置,期间会进行多次网络访问,所以client端会做cache缓存。

Zoopkeeper:

  1. Zoopkeeper做一个集群管理、故障转移的工作。下边管理多个Master,如果一个Master出现故障,就要选举另外一个正常的Master继续工作,但是需要保证有一个Master是正常工作的。
  2. 存储Region的寻址入口信息,记录-ROOT-在哪台服务器上以及位置信息。
  3. 监控HRegionServer的实时状态信息,上报给HMaster。

Master:

  1. 负责分配给他的RegionServer的负载均衡,并且为RegionServer分配Region。
  2. 发现故障的RegionServer时,重新分配其上的Region。
  3. HDFS上的垃圾回收。
  4. 处理删除、修改、增加列簇的表操作的请求。 5、当发现RegioneServer对其中的Region 在进行分裂之后,产生新的Region时,它来决定新产生的Region放在哪个RegioneServer上。

RegionServer:

  1. 管理Master分配给它的Region,负责拆分很大的Region,并处理对这些Region的I/O请求。

Region:

  1. Region是Hbase的分布式、负载均衡的最小单位,不同的Region是可以分布在不同的RegionServer上,但是同一个Region不会分布在不同的RegionServer上。
  2. Region是表在行方向上的分割,一般一个表只有一个Region。
  3. 当Region上的某个列簇很大的时候,就会拆分成两个Region.

Store:

  1. Hbase中的一个ColumnFamily就是一个Store,有多少个ColumnFamily就会有多少个Store,至少一个或者多个Store组成一个Region。
  2. 一个Store由一个MemStore和0个或者多个StoreFile组成。所以,Region的是否需要拆分,是根据Store的大小来决定的。

MemStore:

MemStore是一个缓存机制,数据首先会存放在MemStore中,当达到一定大小时(默认128M),才会将数据刷新到StoreFile文件中。所以数据刷新到文件中情况有以下几种:

  1. MemStore的大小达到默认值(128M)。
  2. RegionServer发生故障时,需要及时将数据保存下来。
  3. 人为的干涉去刷新MemStore。

StoreFile:

  1. StoreFile底层就是HFile,MemStore中数据的下一步就是保存在StoreFile。当StoreFile中的数据达到一定的阀值的时候,系统就会就StoreFile进行合并,合并时会对版本作合并和删除工作,形成更大的StoreFile。

HFile:

  1. HFile是HBase中的数据存储格式,是以Key-value的形式存储的二进制文件。Hbase通过HFile与HDFS的客户端打交道,并将数据保存在HDFS中的DataNode中。

HLog:

  1. HLog是负责HBase的日志记录工作,对HBase的任何操作都被HLog记录在HLog文件中,以备数据恢复使用。

    总结:可以发现,client访问HBase时,通过Zoopkeeper获取寻址信息,通过RegionServer进行数据操作,所以在没有 Region 分裂的情况,Master 宕机一段时间是可以忍受的。

四、Hbase单机安装:

1.Hbase安装需要对应的JDK,下边是Hbase官网推荐的JDK版本,JDK的安装可以参考我的另外一篇博客“linux环境部署”,里面有详细的安装步骤,包括jdk、mysql等:

简单了解Hbase及快速入手之入门教程_01

2.下载要使用的Hbase,解压安装:

(1)下载(wget
https://mirrors.tuna.tsinghua.edu.cn/apache/hbase/2.3.0/hbase-2.3.0-bin.tar.gz):
(2)解压(tar -zxvf ./hbase-2.3.0-bin.tar.gz),解压后会有一个hbase-2.3.0文件夹:
简单了解Hbase及快速入手之入门教程_01
(3)进入hbase-2.3.0文件夹后,找到conf/hbase-env.sh,在如下位置增加java环境的路径,打开export HBASE_MANAGES_ZK=true的注释,告诉Hbase我们使用内置的zookeeper:
简单了解Hbase及快速入手之入门教程_01
简单了解Hbase及快速入手之入门教程_01
(4)启动Hbase服务(./bin/start-hbase.sh)后,进入Hbase命令行客户端(./bin/hbase shell):
简单了解Hbase及快速入手之入门教程_01

五、HBase基本操作命令:

1.创建表(create ‘t_local_test’,
{NAME=>‘cf’,IN_MEMORY=>‘true’,TTL=>15552003} // TTL为数据有效期,单位秒):
简单了解Hbase及快速入手之入门教程_01
2.列出所有的表(list):
简单了解Hbase及快速入手之入门教程_01
3.删除表:
1)、先使用disbale 't_local_test’禁用表(使用enable 't_local_test’启用表):
2)、再使用drop 't_local_test’删除表:
简单了解Hbase及快速入手之入门教程_01
4.添加数据,如下,总共添加了两行数据:

  • put ‘t_local_test’,‘row1’,‘cf:a’,’{“name”:“lala”,“sex”:“男”}’
  • put ‘t_local_test’,‘row1’,‘cf:b’,’{“height”:“120”,“age”:" 12}’
  • put ‘t_local_test’,‘row2’,‘cf:a’,‘this is a text’

简单了解Hbase及快速入手之入门教程_01

5.查看数据:
1)、查看该表中的所有数据(scan ‘t_local_test’):
简单了解Hbase及快速入手之入门教程_01

2)、查看某一条数据:

  • get ‘t_local_test’,‘row1’ // 查看Row Key为row1的所有列
  • get ‘t_local_test’,‘row1’,‘cf:a’ // 查看Row Key为row1的列簇为a的数据
    简单了解Hbase及快速入手之入门教程_01

6.删除数据:

  • delete ‘t_local_test’,‘row1’,‘cf:a’ // 删除Row Key为row1的列簇为a的数据
  • deleteall ‘t_local_test’,‘row1’ // 删除Row Key为row1所有列簇的数据
    简单了解Hbase及快速入手之入门教程_01

7.查看表的详细信息,包括表的默认配置信息(describe ‘t_local_test’):
简单了解Hbase及快速入手之入门教程_01

相关文章: