分布式列式数据HBase介绍&HBase的安装、配置、启动关闭&使用&HBase Shell 常用命令

问题产生及解决:
HDFS存文件,MapReduce处理数据,处理数据中间会有传输延迟,所以要在HDFS和MapReduce中间创建一个数据库用来存数据,这个数据库就是HBase。
HBase是基于HDFS的数据库。

一、为什么学习HBase

需要实时随机访问超大规模数据集的场景
针对分布式计算而设计的NoSQL
与Hadoop紧密结合

二、HBase的简介

基于Google的BigTable论文的理论基础
基于列存储的NoSQL数据库 基于HDFS的分布式存储 本质上只有插入操作 高可靠性、可扩展性

三、HBase体系结构

Master/Slaves的主从服务器结构
HMaster服务器+多个HRegionServer服务器

Hbase体系结构解析:

四、HBase数据模型

典型的关系表存在的问题

如果现在新加一门课程,能够在不修改表结构的情况下去保存新的课程成绩吗? 如果某同学数学课程参加了补考,那么两次的考试成绩都能够保存下来吗? 如果某同学只考试了一门课程而其它课程都没有成绩,是否我们可以只保存有成绩的课程而节省存储空 间呢


HBase中的概念视图

用Excel表格来表示:

HBase特点

  1. 大:一个表可以有上百万行,上亿行
  2. 面向列:面向列(族)的储存和权限控制,列(族)独立检索
  3. 稀疏:对于为空(null)的列,并不占用储存空间,因此,表可以设计的非常稀疏
  4. 列储存
  5. 可伸缩
  6. 时间戳
  7. 不可修改数据

HBase与关系型数据库的比较
数据类型
HBase只有字符串类型

数据操作
HBase没有修改操作,表和表之间相互分离

存储模式
HBase基于列存储,关系型数据库基于行存储

数据维护
HBase的更新实际是插入新的数据

可伸缩性
HBase很容易靠增加硬件满足系统需要

五、HBase环境部署(下载安装配置)

1、软件下载
http://archive.cloudera.com/cdh5/cdh/5/hbase-1.2.0-cdh5.7.0.tar.gz
2、解压HBase到app目录下

(如果没有目录可以自己新建,也可以参照我的配置
Hadoop安装流程&使用CDH版的Hadoop搭建HDFS环境

[hadoop@hadoop000 ~]$cd software/
[hadoop@hadoop000 software]$ tar zxvf hbase-1.2.0-cdh5.7.0.tar.gz -C ~/app/ 
[hadoop@hadoop000 software]$ cd ../app/hbase-1.2.0-cdh5.7.0/

重要的目录

[hadoop@hadoop000 hbase-1.2.0-cdh5.7.0]$ tree -L 2


3、配置HBase

(1)hbase-env.sh

[hadoop@hadoop000 conf]$ vim hbase-env.sh
export JAVA_HOME=/usr/local/jdk1.8.0_251 
HBASE_MANAGES_ZK=false

(2)hbase-site.xml

<configuration>
<!-- hbase.rootdir指的是hbase的存储目录,它的值必须与core-site.xml中fs.defaultFS的值 保持一致-->
<property>
	<name>hbase.rootdir</name> 
	<value>hdfs://hadoop000:9000/hbase</value>
</property>
<!-- hbase运行模式:true表示分布式,false表示单机模式--> 
<property>
	<name>hbase.cluster.distributed</name>
	<value>true</value>
</property>
<!-- ZK节点的主机名和端口,如果有多个,使用逗号分隔--> 
<property>
	<name>hbase.zookeeper.quorum</name>
    <value>hadoop000:2181</value>
</property>
</configuration>

(3)regionservers
hadoop000是主机名

[hadoop@hadoop000 conf]$ vim regionservers
hadoop000

(4)导出HBase环境变量

[hadoop@hadoop000 conf]$ vim ~/.bash_profile 
hbase_home=/home/hadoop/app/hbase-1.2.0-cdh5.7.0 
export PATH=$PATH:$hbase_home/bin
export PATH
[hadoop@hadoop000 conf]$ source ~/.bash_profile 
[hadoop@hadoop000 conf]$ echo $hbase_home 
/home/hadoop/app/hbase-1.2.0-cdh5.7.0

六、hbase的启动

未启动之前查看jps:
[hadoop@hadoop000 ~]$ jps
8027 Jps

1.启动hadoop(dfs和yarn)

一起启动dfs和yarn:start-all.sh
分别启动也可以:
start-dfs.sh
start-yarn.sh
[hadoop@hadoop000 ~]$ jps  (6个节点)
8935 DataNode
9607 NodeManager
9496 ResourceManager
8745 NameNode
10314 Jps
9227 SecondaryNameNode

2.启动zookeeper
zookeeper的安装配置参考我的另一篇CSDN:

zkServer.sh start
[hadoop@hadoop000 ~]$ jps  (7个节点,多了QuorumPeerMain)
8935 DataNode
9607 NodeManager
9496 ResourceManager
8745 NameNode
12121 QuorumPeerMain
9227 SecondaryNameNode
12348 Jps

3.启动hbase

start-hbase.sh
[hadoop@hadoop000 ~]$ jps  (9个节点,多了HMaster和HRegionServer)
17009 HMaster
17188 HRegionServer
8935 DataNode
9607 NodeManager
9496 ResourceManager
8745 NameNode
12121 QuorumPeerMain
18042 Jps
9227 SecondaryNameNode


4.hbase浏览器模式 http://192.168.1.14:60010/

5. 关的时候倒着来:

关闭hbase:
stop-hbase.sh

关闭zk:
zkServer.sh stop

关闭dfs和yarn:
stop-all.sh

七、使用HBase

1.HDFS上HBase的文件
[hadoop@hadoop000 hbase-1.2.0-cdh5.7.0]$ hadoop dfs -ls /hbase


在浏览器查看内容如下:

2.HBase Shell

(1)HBase Shell帮助命令

[hadoop@hadoop000 hbase-1.2.0-cdh5.7.0]$ hbase


(2)启动HBase Shell

[hadoop@hadoop000 hbase-1.2.0-cdh5.7.0]$ hbase shell

3.HBase Shell 常用命令

(1)创建表——create

hbase(main):001:0> create 'scores','grade','course' 
0 row(s) in 2.8780 seconds
=> Hbase::Table - scores

(2)查询表——list

hbase(main):002:0> list
TABLE
scores
1 row(s) in 0.0570 seconds => ["scores"]

(3)查看表所有列族的详细信息——describe

hbase(main):003:0> describe 'scores'


(4)插入数据——put

hbase(main):004:0> put 'scores','tom','grade:','1' 
0 row(s) in 0.2000 seconds

hbase(main):005:0> put 'scores','tom','course:art','88' 
0 row(s) in 0.0490 seconds

hbase(main):006:0> put 'scores','tom','course:math','98' 
0 row(s) in 0.0150 seconds

hbase(main):007:0> put 'scores','jason','grade:','2' 
0 row(s) in 0.0180 seconds

hbase(main):008:0> put 'scores','jason','course:art','90' 
0 row(s) in 0.0150 seconds

hbase(main):009:0> put 'scores','jason','course:math','99' 
0 row(s) in 0.0080 seconds

(5)扫描表——scan

# 全表扫描
hbase(main):010:0> scan 'scores'
# 按列族扫描
hbase(main):012:0> scan 'scores',{COLUMNS=>'course'}
# 按列键扫描
hbase(main):015:0> scan 'scores',{COLUMNS=>'course:art'}



(6)获取数据——get

# 按行键获取所有单元
hbase(main):017:0> get 'scores','jason'
# 按行键获取指定列键的值
hbase(main):018:0> get 'scores','jason',{COLUMN=>'course:art'}


(7)删除数据——delete/deleteall

# delete只能删除一个单元
hbase(main):019:0> delete 'scores','jason','course:art'
# deleteall删除一行
hbase(main):021:0> deleteall 'scores','jason'


(8)修改表——alter
使用alter可以为表增加或者修改列族。

参数当中,列族名NAME必须提供,如果已存在则进行修改,否则增加一个新的列族。

# 修改已存在的列族
hbase(main):024:0> alter 'scores',NAME=>'course',VERSIONS => '5'

# 增加新的列族
hbase(main):026:0> alter 'scores',NAME=>'address',VERSIONS => '1'


(9)删除表
表的状态分为两种:DISABLED和ENABLE,分别表示是否可用状态。
注意:要删除表,必须先禁用该表。

#禁用表
hbase(main):029:0> disable 'scores'
#删除表
hbase(main):033:0> drop 'scores'

hadoop的几个网站:
50070
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值