hbase官网:
hbase.apache.org/1.4/book.html#quickstart //复制到浏览器进行访问,可查看操作文档
Apache HBase – Apache HBase™ Home
hbase HA 搭建(服务器规划)
HMaster 192.168.58.200,192.168.58.201
RegionServer 192.168.58.201,192.168.58.202,192.168.58.203
hadoop与zookeeper环境搭建可参考下文章:
Hadoop HA-YARN-Zookeeper 搭建_房石阳明i的博客-CSDN博客
下载安装包后解压到指定目录:
linux>tar -zxvf hbase-1.2.0-cdh5.14.2.tar.gz -C /opt/install
修改hbase配置文件
linux>cd /opt/install/hbase/conf
linux>vi hbase-env.sh
export JAVA_HOME=/opt/install/jdk
export HBASE_MANAGES_ZK=false //“HBASE_MANAGES_ZK”,该项用于关闭HBase自带的Zookeeper组件用自己安装的
linux>vi hbase-site.xm //指定hdfs目录与zookeeper地址
#在<configuration>与</configuration>中间加如下内容
<property>
<name>hbase.rootdir</name>
<value>hdfs://mycluster/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>192.168.58.201,192.168.58.202,192.168.58.203</value>
</property>
linux>vi backup-masters //没有这个文件的话就自行创建
192.168.58.201
linux>vi regionservers //指定区域服务器
192.168.58.201
192.168.58.202
192.168.58.203
最后将hdfs配置文件放入hbase配置目录中
linux>cp /opt/install/hadoop/etc/hadoop/hdfs-site.xml /opt/install/hbase/conf/
修改环境变量
linux>vi /etc/profile
export HBASE_HOME=/opt/install/hbase
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin:$HBASE_HOME/bin
linux>source /etc/profile
下发hbase安装文件与环境变量配置文件,这里环境变量下发可以参考如下方式,我这边就不写了
linux>cp /opt/install
linux>scp -r hbase 192.168.58.201@`pwd`
linux>scp -r hbase 192.168.58.202@`pwd`
linux>scp -r hbase 192.168.58.203@`pwd`
启动hbase
linux>start-hbase.sh //在192.168.58.200上面启动后可jps查看进程
linux>jps //HMaster(192.168.58.200-201) HRegionServer(192.168.201-203)
hdfs上会自动创建目录
zookeeper可以查看hbase生成的目录
linux>/opt/install/zookeeper/bin/zkCli.sh
zk>ls /hbase
zk>get /hbase/master
查看hbase端口
linux>netstat -utnpl
网页输入IP:60010即可访问hbase的web页面
例:http://192.168.58.200:60010/
如果不能通过HbaseUI查看信息
端口60010打不开的情况,是因为HBase 1.0以后的版本,需要自己手动配置,在文件hbase-site.xml
linux>vi /opt/install/hbase/conf/hbase-site.xml
<property>
<name>hbase.master.info.port</name>
<value>60010</value>
</property>
进入hbase操作方法:
linux>hbase shell
hbase>help //查看帮助
HBase 数据模型:
-
ROW KEY
决定一行数据
按照字典顺序排序的
Row key只能存储64k的字节数据 -
Column Family列族 & qualifier列
HBase表中的每个列都归属于某个列族,列族必须作为表模式(schema)定义的一部分预先给出。如 create ‘test’, ‘course’;
列名以列族作为前缀,每个“列族”都可以有多个列成员(column);如course:math, course:english, 新的列族成员(列)可以随后按需、动态加入
权限控制、存储以及调优都是在列族层面进行的
HBase把同一列族里面的数据存储在同一目录下,由几个文件保存。 -
Cell单元格
- [ ] 由行和列的坐标交叉决定
- [ ] 单元格是有版本的
- [ ] 单元格的内容是未解析的字节数组
由{row key, column( =<family> +<qualifier>), version} 唯一确定的单元。
cell中的数据是没有类型的,全部是字节数组形式存贮。 -
Timestamp时间戳
- [ ] 在HBase每个cell存储单元对同一份数据有多个版本,根据唯一的时间戳来区分每个版本之间的差异,不同版本的数据按照时间倒序排序,最新的数据版本排在最前面
- [ ] 时间戳的类型是 64位整型
- [ ] 时间戳可以由HBase(在数据写入时自动)赋值,此时时间戳是精确到毫秒的当前系统时间
- [ ] 时间戳也可以由客户显式赋值,如果应用程序要避免数据版本冲突,就必须自己生成具有唯一性的时间戳 -
HLog(WAL log)
- [ ] HLog文件就是一个普通的Hadoop Sequence File,Sequence File 的Key是HLogKey对象,HLogKey中记录了写入数据的归属信息,除了table和region名字外,同时还包括 sequence number和timestamp,timestamp是” 写入时间”,sequence number的起始值为0,或者是最近一次存入文件系统中sequence number
- [ ] HLog SequeceFile的Value是HBase的KeyValue对象,即对应HFile中的KeyValu