一、简介
HBase是一种构建在HDFS之上的分布式、面向列的存储系统。在需要实时读写、随机访问超大规模数据集时,可以使用HBase。
尽管已经有许多数据存储和访问的策略和实现方法,但事实上大多数解决方案,特别是一些关系类型的,在构建时并没有考虑超大规模和分布式的特点。许多商家通过复制和分区的方法来扩充数据库使其突破单个节点的界限,但这些功能通常都是事后增加的,安装和维护都和复杂。同时,也会影响RDBMS的特定功能,例如联接、复杂的查询、触发器、视图和外键约束这些操作在大型的RDBMS上的代价相当高,甚至根本无法实现。
hbase的特点是:
大:一个表可以有上亿行,上百万列。
面向列:面向列表(簇)的存储和权限控制,列(簇)独立检索。
稀疏:对于为空(NULL)的列,并不占用存储空间,因此,表可以设计的非常稀疏。
无模式:每一行都有一个可以排序的主键和任意多的列,列可以根据需要动态增加,同一张表中不同的行可以有截然不同的列。
数据多版本:每个单元中的数据可以有多个版本,默认情况下,版本号自动分配,版本号就是单元格插入时的时间戳。
数据类型单一:HBase中的数据都是字符串,没有类型。
二、安装
1.先启动hadoop和zookeeper
2.下载hbase安装包
http://archive.cloudera.com/cdh5/cdh/5/
选择hbase1.2.0-cdh5.11.1即可
3.解压,修改hbase-env.sh
指定java的安装路径
export JAVA_HOME=/home/hadoop/app/jdk
由于hbase自带了ZK的jar包,如果用户需要使用自定义的zk,需要改为false(一般都用自己的zookeeper集群)
export HBASE_MANAGES_ZK=false
4.修改hbase-site.xml文件
——》指定临时目录的存放位置,和hadoop.tmp.dir相似
<property >
<name>hbase.tmp.dir</name>
<value>/home/hadoop/app/hbase/data/tmp</value>
</property>
——》指定hbase数据文件存储在hdfs上的路径,就是RegionServer的共享目录
<property >
<name>hbase.rootdir</name>
<value>hdfs://hadoop001:8020/hbase</value>
</property>
——》指定是否是分布式的,false就是单机,true就是分布式集群
<property >
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
——》指定zookeeper的地址实例
<property>
<name>hbase.zookeeper.quorum</name>
<value>hadoop001,hadoop002,hadoop003</value>
</property>
——》修改regionservers文件,指定从节点机器
hadoop002,hadoop003
5.启动
(注意不要再standby的namenode上启动)
bin/hbase-daemon.sh start master
bin/hbase-daemon.sh start regionserver
或者直接
bin/start-hbase.sh
6.可能遇到的问题
hbase启动错误org.apache.hadoop.hbase.TableExistsException: hbase:namespace
到zookeeper下,删除hbase节点,重启hbase即可