HBase是基于Hdfs的,因为hadoop的本地模式或者是单机模式没有hdfs功能的,所以单机版的HBase数据不能存储在Hdfs上,只能存在linux上,所以单机版的HBase不需要启动Hadoop,单机版Base中只有HMaster
HBase的
HBase:基于HDFS之上的NoSQL,存储单点故障
HBase HDFS
表 ---------> 目录
数据(HFile) ---------> 文件
逻辑存储结构:
namespace:命名空间,相当于是数据库,由表组成,默认的:default,
如果创建表的时候写的这样的语句create “student” ,“info”, “grade”那表示的是在default库中创建一个student表,它包含俩个
列族,一个叫“info”,一个叫“grade”
表:rowkey、列族
如果想创建自己的namespace不适用默认的namespace,那么创建的时候使用
create_namespace "mynamespace"
Hbase的目录结构
安装本地模式(也叫单机模式,也叫standlong)介绍:
1、首先解压安装包
tar -zxvf hbase-2.2.0-bin.tar.gz -C ../training/
2、然后配置HBase的环境变量
此处注意了,我环境变量配错了,本身是PATH 我写成了PAHT
3、修改配置文件
主要修改俩个文件
vim hbase-env.sh
hbase-site.xml
<!--HBase的数据存储的位置-->
<property>
<name>hbase.rootdir</name>
<value>file:///root/training/hbase-2.2.0/data</value>
</property>
<property>
<name>hbase.unsafe.stream.capability.enforce</name>
<value>false</value>
</property>
在配置hbase-site.xml的文件的时候我们先不配置hbase.unsage.stream.capability.enforce属性,我们启动hbase
然后可以正常启动之时有几个日志绑定重复的提醒,这个没有什么关系,
在我们执行hbase shell 命令行工具的时候虽然能正常进入,但是我们查看一下他的日志就发现他已经在报错了
有一个拒绝连接的异常,这个就是因为我们使用虚拟机hbase有个读写磁盘的方式出现的问题,我们只需把它屏蔽了就可以了,
<property>
<name>hbase.unsafe.stream.capability.enforce</name>
<value>false</value>
</property>
如果我们不配置这个,然后我执行一个create “student”,"info","grade"看会出现什么情况
最后这条语句也执行不了,也把hbase给搞挂掉了
然后我们直接把那个配置加上再启动看看
这个就是我们在hbase上配置的linux文件路径当做hbase存储列表
但是本地模式没有什么意义,即使开发和测试我们至少使用一个伪分布模式