什么是HBASE?
HBASE是一个数据库----可以提供数据的实时随机读写
HBASE与mysql、oralce、db2、sqlserver等关系型数据库不同,它是一个NoSQL数据库(非关系型数据库)
1.Hbase的表模型与关系型数据库的表模型不同:
2.Hbase的表没有固定的字段定义;
3. Hbase的表中每行存储的都是一些key-value对
4. Hbase的表中有列族的划分,用户可以指定将哪些kv插入哪个列族
5. Hbase的表在物理存储上,是按照列族来分割的,不同列族的数据一定存储在不同的文件中
6. Hbase的表中的每一行都固定有一个行键,而且每一行的行键在表中不能重复
7. Hbase中的数据,包含行键,包含key,包含value,都是byte[ ]类型,hbase不负责为用户维护数据类型
8. HBASE对事务的支持很差
应用场景案例
安装HBASE
HBASE是一个分布式系统
其中有一个管理角色: HMaster(一般2台,一台active,一台backup)
其他的数据节点角色: HRegionServer(很多台,看数据容量)
1.安装准备
首先,要有一个HDFS集群,并正常运行; regionserver应该跟hdfs中的datanode在一起 其次,还需要一个zookeeper集群,并正常运行
然后,安装HBASE 角色分配如下:
Hadoop01: namenode datanode regionserver hmaster zookeeper
Hadoop02: datanode regionserver zookeeper
Hadoop03: datanode regionserver zookeeper
2.安装hbase
解压hbase安装包
修改hbase-env.sh
export JAVA_HOME=/root/apps/jdk1.7.0_67
export HBASE_MANAGES_ZK=false
修改hbase-site.xml
<configuration>
<!-- 指定hbase在HDFS上存储的路径 -->
<property>
<name>hbase.rootdir</name>
<value>hdfs://hadooap01:9000/hbase</value>
</property>
<!-- 指定hbase是分布式的 -->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!-- 指定zk的地址,多个用“,”分割 -->
<property>
<name>hbase.zookeeper.quorum</name>
<value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value>
</property>
</configuration>
修改 regionservers
hadoop01
hadoop02
hadoop03
3. 启动hbase集群
bin/start-hbase.sh
启动完后,还可以在集群中找任意一台机器启动一个备用的master
bin/hbase-daemon.sh start master
新启的这个master会处于backup状态
4. 启动hbase的命令行客户端
bin/hbase shell
Hbase> list // 查看表
Hbase> status // 查看集群状态
Hbase> version // 查看集群版本