Hbase的安装部署
1、前提条件
1)hadoop环境 启动相关的Hadoop进程
2)zookeeper环境 启动zookeeper
2、安装Hbase
解压tar -zxf hbase-0.98.6-cdh5.3.6.tar.gz -C /opt/modules/cdh
##配置hbase-env.sh
export HBASE_MANAGES_ZK=false //124行
export JAVA_HOME=/opt/modules/jdk1.7.0_67 //29行
##配置hbase-site.xml
<property>
<name>hbase.rootdir</name>
<value>hdfs://[hostname]:8020/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>[hostname]</value>
</property>
#### regionservers文件配置
[hostname]
3、启动Hbase
在${HOME_Hbase}目录下:
方式一:单独启动
bin/hbase-daemon.sh start master
bin/hbase-daemon.sh start regionserver
方式二:同时启动
bin/start-hbase.sh
停止时将start对应修改为stop即可
解决hbase shell中无法退格的问题:
xshell :
文件-属性-终端-键盘-两个都选择ASCII 127
CRT:
选项-会话选项-仿真-终端-选择linux
选项-会话选项-映射键--勾选上
基本语法
在${HOME_Hbase}目录下:
$ bin/hbase version //查看hbase的版本
$ bin/hbase shell //连接Hbase
连接hbase之后,Hbase的常用命令
如何创建命名空间:
> create_namespace '命名空间名' //创建命名空间
两种创建表的方式:
>create ‘命名空间:表名’,’列簇名1’,’列簇名2’,’.........’ //创建表格(默认版本数为1)
查看表结构
>desc ‘命名空间:表名’
>create '命名空间:表名’,{NAME=>'列簇名',VERSIONS=>版本个数},{.......} //创建表格(自定义版本数)
查看表结构
scan 扫描表
> scan '命名空间:表名' 扫描全表
> scan '命名空间:表名' ,{COLUMNS => '列簇:列名'} 扫描该表的该列簇下的所有数据
> scan '命名空间:表名' ,{COLUMNS => '列簇:列名'} 扫描该表的该列簇下该列名的所有数据
> scan '命名空间:表名' ,{COLUMNS => ['列簇:列名','列簇:列名' ]} 扫描多列数据
> scan '命名空间:表名' ,{COLUMNS => ‘列簇’,STARTROW=>'rowkey值'} 指定扫描的起始rowkey
> scan '命名空间:表名' ,{COLUMNS => ‘列簇’,STARTROW=>'rowkey值',STOPROW=>'rowkey值’} 给定扫描数据rowkey的范围,默认是左闭右开
> scan '命名空间:表名' ,{LIMIT=>n} 只扫描设定n(正整数)条数据
> scan '命名空间:表名' ,{COLUMNS => '列簇:列名', LIMIT=>n} 组合使用
get 获取数据
get获取的某条数据
scan获取的是一个范围内的数据
> get '命名空间:表名' ,'rowkey值' 获取某条数据的cell
> get '命名空间:表名' ,'rowkey值', {COLUMN => '列簇:列名'} 获取某条数据某个列的cell
>get '命名空间:表名', 'rowkey值', ['列簇:列名', '列簇:列名'] 获取指定列的cell
删除数据
删除命令并不是立即从hdfs上删除数据,删除命令只是对对应的这些cell打上了‘删除’标签
打上‘删除’标签的cell不能直接scan或get获取数据
在hbase进行大合并机制时才会彻底从hbase中删除
> delete '命名空间:表名','rowkey值' ,'列簇:列名' 删除某个cell内的所有的版本
> deleteall '命名空间:表名', 'rowkey值', '列簇:列名' 也看可以删除某条数据的某个cell所有版本
> deleteall '命名空间:表名', 'rowkey值' 删除整条数据
> truncate 'xxx' 清空一张表
version 版本
优点:版本就是保存了value值的多个历史记录,客户端可以根据需求获取历史记录
创建表时默认的版本数是1个 ,多个版本时scan或get时默认显示最新版本
>create '命名空间:表名’,{NAME=>'列簇名',VERSIONS=>版本个数},{.......} //创建表格(自定义版本数)
添加数据
>Put ‘命名空间:表名’,’rowkey值’,’列簇:列名’,’cell值’
> scan '命名空间:表名' 默认显示最新的值
> scan '命名空间:表名' , { VERSIONS=> n} 指定显示最新的n个cell的版本
> get '命名空间:表名',’rowkey值’',{COLUMN =>'列簇:列名', TIMESTAMP=>时间戳} //获取指定版本的cell的值
删除表
> disable '命名空间:表名' 先禁用
> drop '命名空间:表名' 再删除
> count '命名空间:表名' 计算某张表有多少行数据