HBase

大数据_HBase框架

一、HBase简介

HBase定义

HBase是一种分布式、可扩展、支持海量数据存储的NoSQL数据库。

HBase数据模型

逻辑上,HBase 的数据模型同关系型数据库很类似,数据存储在一-张表中,有行有列。但从HBase的底层物理存储结构(K-V) 来看,HBase 更像是一个multi-dimensional map。

①Name Space

命名空间,类似于关系型数据库的database概念,每个命名空间下有多个表。Hbase有两个自带的命名空间,分别是hbase和default,hbase中存放的是HBase内置的表,default表是用户默认使用的命名空间。

②Region

类似于关系型数据库的表概念。不同的是,HBase 定义表时只需要声明列族即可,不需要声明具体的列。这意味着,往HBase写入数据时,字段可以动态、按需指定。因此,和关系型数据库相比,HBase 能够轻松应对字段变更的场景。

③Row

HBase表中的每行数据都由一个RowKey和多个Column(列)组成,数据是按照RowKey的字典顺序存储的,并且查询数据时只能根据RowKey进行检索,所以RowKey的设计十分重要。

④Column

HBase中的每个列都由Column Family (列族)和Column Qualifier (列限定符)进行限定,例如info:name,info: age. 建表时,只需指明列族,而列限定符无需预先定义。

⑤Time Stamp

用于标识数据的不同版本(version) ,每条数据写入时,如果不指定时间戳,系统会自动为其加上该字段,其值为写入HBase的时间。

⑥Cell

由{rowkey, column Family: column Qualifier, time Stamp}唯一确定的单元。 cell 中的数据是没有类型的,全部是字节码形式存贮。

HBase逻辑结构

Hbase 基本架构

在这里插入图片描述
架构角色:
①Region Server
Region Server 为Region 的管理者,其实现类为HRegionServer,主要作用如下:
对于数据的操作: get, put, delete;
对于Region的操作: splitRegion、 compactRegion。
②Master
Master是所有Region Server 的管理者,其实现类为HMaster,主要作用如下:
对于表的操作: create, delete, alters
对于RegionServer的操作:分配regions到每个RegionServer ,监控每个RegionServer的状态,负载均衡和故障转移。
③Zookeeper
HBase通过Zookeeper来做master的高可用、RegionServer 的监控、元数据的入口以及集群配置的维护等工作。
④HDFS
HDFS为HBase提供最终的底层数据存储服务,同时为HBase提供高可用的支持。

Hbase 安装部署

1. 创建工作路径/usr/hbase,下载相应软件,解压至工作路径。

mkdir -p /usr/hbase

cd /usr/hbase

wget http://172.31.10.254:8000/bigdata/bigdata_tar/hbase-1.2.4-bin.tar.gz

tar -zxvf hbase-1.2.4-bin.tar.gz -C /usr/hbase

2. 进入hbase配置目录conf,修改配置文件hbase-env.sh,添加配置变量。

cd /usr/hbase/hbase-1.2.4/conf

vim hbase-env.sh

export HBASE_MANAGES_ZK=false
export JAVA_HOME=/usr/java/jdk1.8.0_171
export HBASE_CLASSPATH=/usr/hadoop/hadoop-2.7.3/etc/hadoop

#解释:一个分布式运行的Hbase依赖一个zookeeper集群。所有的节点和客户端都必须能够访问zookeeper。默认的情况下Hbase会管理一个zookeep集群,即Hbase默认自带一个zookeep集群。这个集群会随着Hbase的启动而启动。而在实际的商业项目中通常自己管理一个zookeeper集群更便于优化配置提高集群工作效率,但需要配置Hbase。需要修改conf/hbase-env.sh里面的HBASE_MANAGES_ZK 来切换。这个值默认是true的,作用是让Hbase启动的时候同时也启动zookeeper.在本实验中,我们采用独立运行zookeeper集群的方式,故将其属性值改为false

3. 配置conf/hbase-site.xml文件

<property>
  <name>hbase.rootdir</name>
  <value>hdfs://master:9000/hbase</value>
</property>
<property>
  <name>hbase.cluster.distributed</name>
  <value>true</value>
</property>
<property>
  <name>hbase.master</name>
  <value>hdfs://master:6000</value>
</property>
<property>
  <name>hbase.zookeeper.quorum</name>
  <value>master,slave1,slave2</value>
</property>
<property>
  <name>hbase.zookeeper.property.dataDir</name>
  <value>/usr/zookeeper/zookeeper-3.4.10</value>
</property>

#解释:要想运行完全分布式模式,加一个属性 hbase.cluster.distributed 设置为 true 然后把 hbase.rootdir 设置为HDFS的NameNode的位置;
hbase.rootdir:这个目录是region server的共享目录,用来持久化Hbase。URL需要是’完全正确’的,还要包含文件系统的scheme;
hbase.cluster.distributed :Hbase的运行模式。false是单机模式,true是分布式模式。若为false,Hbase和Zookeeper会运行在同一个JVM里面。在hbase-site.xml配置zookeeper,当Hbase管理zookeeper的时候,你可以通过修改zoo.cfg来配置zookeeper,对于zookeepr的配置,你至少要在 hbase-site.xml中列出zookeepr的ensemble servers,具体的字段是 hbase.zookeeper.quorum.在这里列出Zookeeper集群的地址列表,用逗号分割。
hbase.zookeeper.property.clientPort:ZooKeeper的zoo.conf中的配置,客户端连接的端口。
hbase.zookeeper.property.dataDir:ZooKeeper的zoo.conf中的配置。对于独立的Zookeeper,要指明Zookeeper的host和端口。需要在 hbase-site.xml中设置

4. 配置conf/regionservers,添加子节点

在这里列出了希望运行的全部 HRegionServer,一行写一个host (就Hadoop里面的slaver 一样)。列在这里的server会随着集群的启动而启动,集群的停止而停止。

5. hadoop配置文件拷入hbase的目录下(当前目录为/usr/hbase/hbase-1.2.4/conf)

cp /usr/hadoop/hadoop-2.7.3/etc/hadoop/hdfs-site.xml .

cp /usr/hadoop/hadoop-2.7.3/etc/hadoop/core-site.xml .

6. 分发hbase到子节点

scp -r /usr/hbase root@slave1:/usr/
scp -r /usr/hbase root@slave2:/usr/

7. 配置环境变量(三台机器)

vim /etc/profile

#配置环境变量 Hbase
# set hbase environment
export HBASE_HOME=/usr/hbase/hbase-1.2.4
export PATH=$PATH:$HBASE_HOME/bin

8. 生效环境变量

source /etc/profile

9. 运行和测试,在master上执行(保证hadoop和zookeeper已开启)

启动Hadoop

[atguigu@hadoop102 hadoop-3.1.3]1$ sbin/start-dfs.sh
[atguigu@hadoop103 hadoop-3.1.3]$ sbin/start-yarn.shk

启动zookeeper

开启服务:bin/zkServer.sh start
查看状态:bin/zkServer.sh status

开启Hbase

bin/start-hbase.sh

查看进程HMaster,说明hbase开启成功

jps

在这里插入图片描述

Hbase Shell 操作

基本操作

注:192.168.187.198:16010,

ip + 16010端口号 ,查看Hbase Web网页

注:Hbase客户端命令行输入的内容,须Ctrl + Backspace 健才可删除
注:如果在命令后不小心加了;

需要连续输入两个单引号解除

在这里插入图片描述

1.进入Hbase客户端命令行。
hbase shell
2.查看帮助命令。
 help
3. 列出当前表
列出(查询)表:list 
列举出符合正则表达式规则的表:list 'abc.*'  
列出出指定名称空间下的表:list 'ns:.*'

表的操作

1.创建表
 create 'student','info'2: create 'sun' ,'info1','info2'  表名sun,2
2.插入数据到表
put 'student','1001', 'info:sex','male' 
put 'student','1001', 'info:age', '18'
put 'student','1002', 'info:name','Janna'
3. 扫描查看表数据
scan 'student'
scan 'student',{STARTROW => '1001'}
4. 查看表结构
describe 'student'
5. 更改指定字段的数据
put 'student','1001','info:name','Nick'
put 'student','1001','info:age','100'
6. 查看“指定行”或“指定列族:列” 的数据
get 'student','1001'
get 'student','1001','info:name'
7. 统计表数据行数
count 'studunt'
8. 删除数据
删除某rowkey的全部数据 
deleteall 'studunt','1001'
删除某rowkey的某一列数据
delete 'student','1002','info:sex'
9. 清空数据
truncate 'student'
10. 删除表
首先需要让该表为disable状态
disable 'student'
然后才能drop这个表
drop 'student'
#提示
如果直接drop表,会报错:ERROR: Table student is enabled. Disable it first.
11. 变更表信息
将info列族中的数据存放3个版本
alter 'student',{NAME=>'info',VERSIONS=>3}

 get 'student','1001',{COLUMN=>'info:name',VERSIONS=>3}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值