简介
Hadoop database 的简称,也就是基于Hadoop面向列的分布式数据表数据库,是一种NoSQL数据库,主要适用于海量明细数据(十亿、百亿)的随机实时查询,如日志明细、交易清单、轨迹行为
为查询而生,通过阻止节点内所有机器的内存,提供超大的内存Hash表
HBase与Hive的区别
Hive数据仓库,能够通过SQL来计算和处理HDFS上的结构化数据,适用于离线的批量数据计算
Hbase数据库,主要用于查询,用于海量明细数据的随机查询
Hive是高延迟、结构化和面向分析的,HBase是低延迟、非结构化和面向编程的。Hive数据仓库在hadoop上是高延迟的。
两者之间的关系
通过ETL工具将数据源抽取到HDFS存储;
通过Hive清洗、处理和计算原始数据,当然目前来说用spark更加方便;
清洗处理后的结果,如果是面向海量数据随机查询场景的可存入HBase;
数据应用从HBase查询数据;
下载安装
下载地址:http://archive.apache.org/dist/hbase/
我这里个人的
链接:https://pan.baidu.com/s/1t9N5jnqYqQ-eGDyHag6gkA
提取码:98hj
解压
tar -zxvf hbase-1.2.0-cdh5.15.1.tar.gz
进入到hbase的conf目录下修改文件
export JAVA_HOME=/root/app/jdk1.8.0_231
export HADOOP_HOME=/root/app/hadoop-2.6.0-cdh5.15.1
export HBASE_HOME=/root/app/hbase-1.2.0-cdh5.15.1
export HBASE_MANAGERS_ZK=true
注意对应自己的目录哦
修改hbase-site.xml文件
<!-- hbase存放数据目录 -->
<property>
<name>hbase.rootdir</name>
<value>file:///data/soft/hbase/hbase</value>
</property>
<!-- ZooKeeper数据文件路径 -->
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/data/soft/hbase/zookeeper</value>
</property>
<property>
<name>hbase.unsafe.stream.capability.enforce</name>
<value>false</value>
<description>
Controls whether HBase will check for stream capabilities (hflush/hsync).
Disable this if you intend to run on LocalFileSystem, denoted by a rootdir
with the 'file://' scheme, but be mindful of the NOTE below.
WARNING: Setting this to false blinds you to potential data loss and
inconsistent system state in the event of process and/or node failures. If
HBase is complaining of an inability to use hsync or hflush it's most
likely not a false positive.
</description>
</property>
先启动HDFS,再启动hbase
hbase的bin目录下的./ 命令
使用 jps 命令能查看到HMaster 即是成功了
或者浏览器访问ip加:60010也可以查看是否成功
HBase的使用
再使用 ./hbase shell 命令即可进入编写数据
HBase里面的数据存储格式与数据库不同,大概如下图
HBase以表的形式存储数据。表有行和列组成。列划分为若干个列族(row family)
RowKey
记录的主键,和数据库一样
Column Family
列族:表中每一个列都属于列族,有点类似于姓,列名都是属于列族作为前缀,显示形式是 列族名:列名。创建表时必须指明
创建表
语法为 create ‘表名’,‘列族名’
create 'student','info'
查看表
语法为
describe ‘表名’
describe 'student'
插入数据
语法为
put ‘表名’,‘id(也就是行键)’,‘列族(也就是你一开始创建表后面跟的值):列名’,‘值’
put 'student','1','info:name','aa'
其实可以将表看作一个类,然后表后面的就是对象;插件数据时对象跟的就是属性,然后设置属性的值(这样个人觉得容易理解)
下面我们来查看一下刚刚插入的表数据值
scan 'student'
更新数据,也就是修改数据
语法为
put ‘表名’,‘行键值’,‘列族名:列名’,‘修改后的值’
put 'student','1','info:name','bb'
修改后再查看表
scan 'student'
删除数据
语法为
delete ‘表名’,‘行键值’
delete 'student','1'
再就是统计,我们先给student添加两条数据
put 'student','1','info:name','aa'
put 'student','2','info:name','bb'
再使用count
count 'student'
可以看到统计出了两条数据删除表,在删除表之前需要设置表为disable,要不就会报错
设置disable
disable 'student'
删除表
drop 'student'