HBase入门学习---安装与使用

1、前言

  HBase属于列式非关系型数据库(NoSQL),最早起源于Google发布的Bigtable,是由Powerset公司的Chad walters和Jim Kelleman在2006年末发起的。2007年7月,由Mike Cafarella提供代码,形成了一个基本可用的系统。

2、NoSQL

  NoSQL=Not Only SQL,不仅仅是SQL。NoSQL是一个通用术语,即非关系型数据库,它不是以SQL作为其主要访问语言。NoSQL数据库共分为4类,分别是键值(Key-Value)存储数据库、列存储数据库、文档型数据库和图形(Graph)数据库。

  • 键值(Key-Value)存储数据库
    键值存储数据库中的数据是以键值对格式进行存储的,类似于Java中的Map,其数据库中的表有一个特定的Key键和键所指向的Value值。Key-Value模型的优势在于简单且容易部署,可以将程序中的数据直接映射到数据库中,使程序中的数据和键值存储数据库中的数据存储方式很相近,比如Redis。
  • 列存储数据库
    列存储数据库与传统的关系型数据库不同,关系型数据库按照行进行存储,而列数据库是每一列单独存放,仅仅查询所需要的列,查询速度大幅提高。在HBase中,这些列是由列家族来安排的。
  • 文档型数据库
    文档型数据库和键值存储类似。该类型的数据模型是将内容按照某些特定的格式进行存储,如JSON格式和MongoDB就属于文档型数据库。
  • 图形(Graph)数据库
    图形数据库与关系型数据库和列式数据库不同,它是基于灵活的图形模型,并且可以扩展到多个服务器上。另外,由于NoSQL数据库并没有标准的查询语言(SQL),所以在进行数据库查询时需要制定数据模型,如Neo4j。
3、关系型数据库与非关系型数据库的区别
  • 成本:NoSQL数据库简单易部署,基本都是开源软件,不需要像使用Oracle那样花费大笔资金购买后使用,相比关系型数据库NoSQL价格便宜。
  • 查询速度:NoSQL数据库将数据存储于缓存中,关系型数据库将数据存储在硬盘中,自然查询速度远不及NoSQL数据库。
  • 存储数据格式:NoSQL的存储格式是key/value形式、文档形式、图片形式等,所以可以存储基础类型及对象或者集合等各种格式,而数据库则只支持基础类型。
  • 扩展性:关系型数据库有类似于JOIN这样的多表查询机制的限制导致扩展很艰难。
4、HBase概述

  HBase即HadoopDataBase,是一个基于HDFS和ZooKeeper的列式数据库,是一个高可靠性、高性能、面向列、可伸缩、实时读写的分布式数据库。HDFS是大型数据集分析处理的文件系统,具有高延迟的特点,它更倾向于读取整个数据集而不是某条记录,因此当处理低延迟的用户请求时,HBase是更好的选择,它能实现某条数据的快速定位,提供实时读写功能。
  HBase利用Hadoop HDFS作为其文件存储系统,利用基于YARN的MapReduce来处理HBase中的海量数据,利用ZooKeeper作为其分布式协同服务,主要用来存储非结构化和半结构化的松散数据,也就是列存储的NoSQL数据库。
在这里插入图片描述

HBase数据模型主要包括行键(Row Key)、列族、时间戳、单元格(Cell)和HLog(WAL log)。如下图所示:
在这里插入图片描述

5、HBase体系结构

在这里插入图片描述

  1. ZooKeeper组件
    该组件主要用于存储HBase的schema和Table元数据,它保障在任何时候,集群中只有一个Master,同时,ZooKeeper用来存贮所有Region的寻址入口,进行实时监控RegionServer的上线和下线信息,并且实时通知HMaster。

  2. 资源分配HMaster
    HMaster组件类似HDFS中的NameNode,它不存储数据,主要作用是为RegionServer分配Region,同时负责RegionServer的负载均衡,如果发现失效的RegionServer,它会重新分配上面的Region,HMaster组件还会管理用户对Table的增、删、改操作。

  3. HRegionServer(Region的处理)
    HRegionServer组件则类似HDFS中的DataNode。HRegionServer组件负责维护Region,处理对Region的I/O请求,同时,HRegionServer会负责切分在运行过程中变得过大的Region。

  4. 保持访问性能Client
    Client组件主要包含访问HBase的接口,同时维护Cache来加快对HBase的访问性能。

  5. 分布式存储和负载均衡最小单元Region
    Region是HBase中分布式存储和负载均衡的最小单元,HBase会自动把表水平划分成多个区域,也就是多个Region。每个Region会保存一个表里面某段连续的数据,每个表一开始只有一个Region,随着数据不断插入,Region会不断增大,当增大到一个阀值的时候,Region就会等分成两个新的Region,这个等分的过程又称之为裂变。当表中的行不断增多时,就会有越来越多的Region。这样一张完整的表被保存在多个RegionServer上。

  6. MemStore与StoreFile组件
    一个区域,也就是一个Region往往由多个Store组成,一个Store包括位于内存中的MemStore和位于磁盘的StoreFile。

6、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 -C ../servers/

3、设置环境变量

通过如下命令,

vim /etc/profile

添加该配置:

export HBASE_HOME=/export/servers/hbase-2.3.0
export PATH=:$HBASE_HOME/bin:$PATH

执行下面命令,让配置的环境变量生效:

source/etc/profile

4、修改配置文件

首先创建下面目录:

#在Hbase跟目录下
mkdir -p ./data/tmp
mkdir -p ./data/pids

然后修改hbase-env.sh文件,增加或修改如下配置:

export JAVA_HOME=/export/servers/jdk1.8.0_251
export HADOOP_HOME=/export/servers/hadoop-2.7.5
export HBASE_HOME=/export/servers/hbase-2.3.0
export HBASE_CLASSPATH=/export/servers/hadoop-2.7.5/etc/hadoop
export HBASE_PID_DIR=/export/servers/hbase-2.3.0/data/pids
export HBASE_MANAGES_ZK=false

其中,HBASE_MANAGES_ZK=false 是不启用HBase自带的Zookeeper集群。

最后,修改 hbase-site.xml文件

<!-- 存储目录 -->
<property>  
	 <name>hbase.rootdir</name>  
	<!--  <value>hdfs://node01:9000/hbase</value>  -->
	<value>/export/servers/hbase-2.3.0/data/rootdir</value>
 <description>The directory shared byregion servers.</description>  
</property>  

<!-- false是单机模式,true是分布式模式  -->
  <property>
    <name>hbase.cluster.distributed</name>
    <value>false</value>
  </property>
  <property>
    <name>hbase.tmp.dir</name>
    <value>/export/servers/hbase-2.3.0/data/tmp</value>
  </property>

5、启动Hbase

./bin/start-hbase.sh

在这里插入图片描述

启动成功后(需要等一会儿),然后访问:http://192.168.1.8:16010,出现如下界面,说明启动成功了。
在这里插入图片描述

7、HBase的简单使用

1、通过shell进入Hbase。命令:hbase shell。

[root@node01 hbase-2.3.0]# hbase shell
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/export/servers/hadoop-2.7.5/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/export/servers/hbase-2.3.0/lib/client-facing-thirdparty/slf4j-log4j12-1.7.30.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
HBase Shell
Use "help" to get list of supported commands.
Use "exit" to quit this interactive shell.
For Reference, please visit: http://hbase.apache.org/2.0/book.html#shell
Version 2.3.0, re0e1382705c59d3fb3ad8f5bff720a9dc7120fb8, Mon Jul  6 22:27:43 UTC 2020
Took 0.0012 seconds                                                                                                                                      
hbase(main):001:0> 

2、创建表

#新建一个用户表 t_user,添加两个列族 st1 和 st2
create 't_user','st1','st2'

在这里插入图片描述

3、添加数据

#添加 主键 、列 和值
put 't_user','1001','st1:age','18'
put 't_user','1001','st2:name','zhangsan'

在这里插入图片描述

4、查看表结构

describe 't_user'

在这里插入图片描述
5、查看表数据

scan 't_user'

在这里插入图片描述

6、查看表
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

姠惢荇者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值