Hbase安装与概述##
1. hbase的概述
HBASE是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBASE技术可在廉价PC Server上搭建起大规模结构化存储集群,HBASE利用Hadoop HDFS作为其文件存储系统,HBASE利用Hadoop MapReduce来处理HBASE中的海量数据,HBASE利用通过zookeeper协调查找数据,访问速度快。
- HBase 依赖于 HDFS 做底层的数据存储
- HBase 依赖于 MapReduce 做数据计算
- HBase 依赖于 ZooKeeper 做服务协调
2. hbase安装
- 上传安装包到指定文件夹,解压tar –zxvf hbase-0.99.2-bin.tar.gz,重命名为 hbase
- 修改环境变量:
export HBASE_HOME=/home/hadoop/hbase
export PATH=$PATH:$HBASE_HOME/bin
刷新环境变量
source /etc/profile
- 修改配置文件
1.hbase-env.sh
export JAVA_HOME=/usr/jdk //jdk安装目录
export HBASE_CLASSPATH=/home/hadoop/hadoop/conf //hadoop配置文件的位置
export HBASE_MANAGES_ZK=true #如果使用独立安装的zookeeper这个地方就是false
2. hbase-site.xml
<configuration>
<property>
<name>hbase.master</name> #hbasemaster的主机和端口
<value>master1:60000</value>
</property>
<property>
<name>hbase.master.maxclockskew</name> #时间同步允许的时间差
<value>180000</value>
</property>
<property>
<name>hbase.rootdir</name>
<value>hdfs:// master:9000/hbase</value>#hbase共享目录,持久化hbase数据
</property>
<property>
<name>hbase.cluster.distributed</name> #是否分布式运行,false即为单机
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>#zookeeper地址
<value>slave1:2181, slave2:2181,slave3:2181</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>#zookeeper配置信息快照的位置
<value>/home/hadoop/hbase/tmp/zookeeper</value>
</property>
</configuration>
3. Regionservers //是从机器的域名
slave1
slave2
slave3
-
把hadoop的hdfs-site.xml和core-site.xml 放到hbase/conf下
-
发送到其他机器 scp –r /home/hadoop/hbase hadoop@slave1:/home/hadoop
-
配置高可用:在 HBASE_HOME/conf 下创建一个backup-masters文件,内容指定一个节点为备用的HMaster 备用节点,当主HMater挂了后会启动别用的HMaster
-
集群时间同步:HBase 集群对于时间的同步要求的比 HDFS 严格,所以,集群启动之前千万记住要进行 时间同步,要求相差不要超过 几十秒:
同步时间命令: date -s “2018-10-25 17:21:00” 再次启动Hbase集群 -
启动start-hbase.sh ,jps查看 HMaster,HRegionServer
3. hbase数据模型
-
Row Key: row key是用来检索记录的主键,Hbase使用Rowkey来唯一的区分某一行的数据
访问HBASE table中的行有三种方式:
1.通过单个row key访问
2.通过row key的range(正则)
3.全表扫描 -
Columns Family: 列簇,HBASE表中的每个列都归属于某个列族。列族是表的schema的一部分,必须在使用表之前定义。列名都以列族作为前缀。例如 courses:history,courses:math都属于courses 这个列族。
-
Cell: 由{row key, columnFamily, version} 唯一确定的单元。cell中的数据是没有类型的,全部是字节码形式存贮。
-
Time Stamp: HBASE中通过rowkey和columns确定的为一个存贮单元称为cell。每个cell都保存着同一份数据的多个版本。版本通过时间戳来索引。HBASE 中通过rowkey和columns确定的为一个存贮单元称为cell。每个 cell都保存着同一份数据的多个版本。版本通过时间戳来索引。用户可以针对每个列族进行设置.
4. hbase命令
1.hbase提供了一个shell的终端给用户交互
hbase shell
执行删除操作时,需要使用组合键:Ctrl+Back Space同时按下,只按Back Space不会删除的。
2.退出执行命令
quit
3.help 获取帮助
help :获取所有命令提示
help "dml" :获取一组命令的提示
help "put" :获取一个单独命令的提示帮助
4.创建表格 create '表名', '列族名1','列族名2','列族名N'
create 't1', {NAME => 'f1'}, {NAME => 'f2'}, {NAME => 'f3'}
5.查看所有表
list
6.查看表的详细信息desc + '表名'
7.删除表 先要屏蔽该表,才能对该表进行删除,
第一步 disable ‘表名’ ,
第二步 drop '表名'
disable 'table'
delete 'table'
8.描述表 describe ‘表名’ describe 'table'
9.添加记录 put ‘表名’, ‘rowKey’, ‘列族 : 列‘ , '值'
put 'table','id','column_famaly1:age','20'
put 'table','id','column_famaly1:name','tanggao'
put 'table','id','column_famaly1:sex','boy'
10.获取数据 get '表名','rowkey','列族' get '表名','rowkey','列族:列’
get 'table','id'
get 'table','id','column_famaly1'
get 'table','id','column_famaly1:name'
11.查看所有记录 scan "表名"
scan 'table'
12.删除记录
delete ‘表名’ ,‘行名’ , ‘列族:列'
deleteall '表名','rowkey'
delete 'table','id','column_famaly1:age'
13.清空表 truncate '表名'
truncate 'table'
14. 添加列族
alter 'myHbase', NAME => 'myInfo'
15. 删除一个列簇
alter 'myHbase', NAME => 'myCard', METHOD => 'delete'
alter 'myHbase', 'delete' => 'myCard'