一、hbase简介
Hbase:是谷歌三篇论文的bigtable的实现
官网:http://hbase.apache.org/
Hbase:hadoop的database;
非关系型数据库;NoSql;Redis,memcache,mongodb,Hbase
HBase :Hadoop Database
是一个高可靠性、高性能、面向列、可伸缩、实时读写的分布式数据库
利用HadoopHDFS作为其文件存储系统,利用HadoopMapReduce来处理HBase中的海量数据,利用Zookeeper作为其分布式协同服务
主要用来存储非结构化和半结构化的松散数据(列存 NoSQL 数据库)
1.结构化数据:列是固定的,值也不能瞎填写;(mysql表,列是固定的,列有类型的)
2.非结构化数据:列是不固定的,内容随便填写;
3.半结构数据:木有硬性的规定,写文档也会注意格式,如果格式不对,也不报错
4.ETL(Extract抽取-Transform转换-Load加载 ):数据清洗,就是把非结构化数 据变成结构化数据;
核心包括三部分:
1.Rowkey:键
2.列族,列:值
3.时间戳:版本
4.按照rowkey字典(ASCII)顺序存储,基于rowkey的高效检索,同时继承hdfs的吞吐能力;
hbase和mysql的区别
Hbase | mysql |
---|---|
namespace | 数据库 |
表 | 表 |
列族(一群列) | 列是固定的 |
记录 | 记录 |
二、hbase的配置流程
1.data下创建hbase文件
2.将压缩包传入hbase
3.tar -zxvf hbase 将压缩包解压,并删除安装包
4.进入conf目录中打开hbase-env.sh 添加javahome 路径
whereis javac 可以帮你找到jdk路径
7.修改conf目录下的 hbase-site.xml文件
并修改rootdir data文件存放路径
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- hadoop的数据存储位置 -->
<property>
<name>hbase.rootdir</name>
<!--
file:///:本地文件
http://http协议
-->
<value>file:///data/hbase/data</value>
</property>
<!--
zookeeper的目录
hbase必须得有一个zookeepr;
hbase自带了一个zookeeper
-->
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/data/hbase/zookeeper</value>
</property>
<!--
hbase自带的一个安全机制
-->
<property>
<name>hbase.unsafe.stream.capability.enforce</name>
<value>false</value>
</property>
</configuration>
8.启动服务器
bin/start-hbase.sh
9.启动客户端
bin/hbase shell
10.访问网页
http://node7-3:16010/master-status
11.退出HBASE外壳
quit 这样会停止界面,但是hbase还是在后台运行
12.关闭服务
bin/stop-hbase.sh stop
三、hbase的相关操作
namespace:命名空间
1.帮助命令: help
help 'create_namespace'
2.创建一个命名空间
create_namespace 'mydata'
3.列出所有的namespace
list_namespace
4.描述namespace
describe_namespace 'mydata'
5.删除namespace
drop_namespace 'mydata'
6.查看状态:status
三、表操作
1.创建表 :create
create ' mydata : psn1 ', 'cf'
(命名空间下) (表名字) (列族)
create 'psn1','cf'
2.查询表 :List
list ' namespace : .*' 查看namespace下面所有的表
list 'mydata : .*'
list_namespace_table 'mydata' 查看mydata下所有的表
3.禁用表 :disable
disable 'mydata:psn1'
4.删除表 :drop 要先禁用表后再删除表
drop 'mydata:psn1'
四、记录的crud(增删改查)
1.增加,放入数据 :put
put 'mydata:psn1','key01','cf','tes t'
put 'mydata:psn1','key01','cf:name', 'zhangsan'
put 'mydata:psn1','key01','cf:age','48'
这些数据的键是一样的所以算是一条记录
有几个键就有几条记录
2.修改: 需要键一样,列族和列都要一样
原来:put 'mydata:psn1','key01','cf:name','zhangsan '
修改时:put 'mydata:psn1','key01','cf:name','fufulinlin'
删除:delet
delete 'mydata:psn1','key01','cf'
将mydata下的psn1这个表里的 key01的数据全部删除
deleteall 'mydata:psn1','key01'
3.查 询 :scan
scan 'mydata:psn1'
scan 'mydata:psn1',{STARTROW => 'key02' , LIMIT => 2}
(这个输入的是键) (限制)
4.禁用 :disable
disable 'mydata:psn1'
5.删除 :drop 要先禁用表后再删除表
drop 'mydata:psn1'
6.获取一条记录 get
Get 表名 , 键,取出键对应的所有列
get 'mydata:psn1','key01'
取其中一个列的属性
get 'mydata:psn1','key01',{COLUMNS=>'cf:name'}
(列)
7.截断表 truncate
truncate 'mydata:psn1'
8.溢写操作
flush 'mydata:psn1'
执行后会溢写在磁盘中,溢写会自动进行