1、前言
对hbase的操作使用最多的两种查询方式一个是shell命令,在项目开发中临时查
询经常使用,还一个是Hbase Java API的使用,代码开发过程中常用。重用shell命令
2、命令详解
Hbase集群正常配置后,进入到hbase安装目录,执行bin/hbase shell命令
* status
服务器状态查询,显示有几个节点,宕机了几台节点,集群平均负载情况等信息
* version
查询hbase版本
* 新建表
create 'member' ,{NAME => 'f1',VERSIONS => 1,COMPRESSION => 'LZO', TTL => '6000'}
NAME :列族名称
version:数据保存的版本个数
COMPRESSION :使用的压缩方法,要提前配置好,通常有LZO,SNAPPY等
TTL:数据保存周期,单位秒
* 查询表
describe 'member'
NAME:列名
DATA_BLOCK_ENCODING:是HBase 0.94版本引入的特性,可以将重复的row/family/qualifier/进行压缩,减少block的空间占用,提高内存使用率,可以通过http://zjushch.iteye.com/blog/1585066了解更多
BLOOMFILTER:提高随机读的性能
REPLICATION_SCOPE:hbase-0.90.0的一个重要改进是引入了replication机制,使它的数据完整性得到了进一步的保障
VERSIONS:数据保存版本,默认是3 这个参数的意思是数据保留三个 版本,如果我们认为我们的数据没有这么大的必要保留这么多,随时都在更新,而老版本的数据对我们毫无价值,那将此参数设为1 能节约2/3的空间
COMPRESSION:存储压缩方法,采用压缩可以大大节约空间
MIN_VERSIONS:最小版本数
TTL:数据保存周期,单位秒
KEEP_DELETED_CELLS:涉及到hbase的删除机制,
BLOCK_SIZE:block大小,了解region的组成原理
IN_MEMORY:是否进入缓存
BLOCK_CACHE:HBase上Regionserver的内存分为两个部分,一部分作为Memstore,主要用来写;另外一部分作为BlockCache,主要用于读
* 插入一条记录:
put '表名','row key','列族名:列名','值'
put'member','18070148938','f1:c1','24'
* 更新记录(记录只保存一个版本),
插入相同的rowkey可直接覆盖,实现更新功能
put 'member','18070148938','f1:c1','25'
* 查询记录
scan '表名',{STARTROW=>‘起始rowkey’,STOPROW=>'结束rowkey'}
scan查询:scan 'member',{STARTROW=>'18070148938',STOPROW=>'18070148940'}
get查询:get 'member','18070148938'
* 删除记录
delete 'member','18070148947','f1:c1'
*删除列族
disable 'member'
alter 'member',{NAME=>'f1',METHOD=>'delete'}
*删除表
disable 'member'
drop 'member'
* 列出所有表 :list
* 查询表是否存在:exsists '表名'
* 判断表是否enable:is_enabled '表名'
*清空表
truncate 'member'
*批量导数据
mapred.job.queue.name:指明提交队列
生成HFile:
bin/hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -D mapred.job.queue.name=hadoop -Dimporttsv.bulk.output=/tmp/hac/wide_t85908 -Dimporttsv.columns=HBASE_ROW_KEY,f:c01,f:c02,f:c03,f:c04,f:c05,f:c06,f:c07,f:c08,f:c09 wide_t85908 /tmp/wide_t85908
bulkload导数据:
bin/hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles /tmp/hac/wide_t85908 wide_t85908
本文为Anmy老师原创,感兴趣的欢迎转载
格言:码代码的同时,努力成为一个知识的传播者。
QQ: 1726076126,加时请注明:CSDN