Hbase 是一个分布式的、面向列的开源数据库,其实现是建立在google 的bigTable 理论之上,并基于hadoop HDFS文件系统。     Hbase不同于一般的关系型数据库(RDBMS)。是一种适用于非结构化数据存储的数据库,且Hbase是基于列的数据库。

     下面的内容基于我们已经安装好hadoop、hbase。
  • 一、hbase shell 介绍
     hbase shell是用户和hbase 交互的接口之一,当然还可以通过其它方式比如java api等
     下表列出了 hbase 基本命令操作:
      
操作 命令表达式 注意
创建表 create 'table_name, 'family1','family2','familyN'  
添加记录       put 'table_name', 'rowkey', 'family:column', 'value'  
查看记录 get 'table_name', 'rowkey'    查询单条记录,也是hbase 最常用的命令
查看表中的记录总数 count  'table_name' 这个命令并不快,且目前没有找到更快的方式统计行数
删除记录 delete 'table_name' ,'rowkey','family_name:column'
deleteall 'table_name','rowkey'
第一种方式删除一条记录单列的数据
第二种方式删除整条记录
 
删除一张表 1、disable 'table_name'   
2、drop 'table_name'
查看所有记录 scan "table_name" ,{LIMIT=>10} LIMIT=>10 只返回10条记录,否则将全部展示
 
利用上面基础命令可以完成基本的hbase 操作,下面几个shell 命令在后续的hbase 操作中可以起到很到的作用,且主要体现在建表的过程中,看下面几个create 属性
1、BLOOMFILTER  默认是NONE 是否使用布隆过虑 使用何种方式
     布隆过滤可以每列族单独启用。使用 HColumnDescriptor.setBloomFilterType(NONE | ROW | ROWCOL) 对列族单独启用布隆。 Default = NONE 没有布隆过滤。对 ROW,行键的哈希在每次插入行时将被添加到布隆。对 ROWCOL,行键 + 列族 + 列族修饰的哈希将在每次插入行时添加到布隆
   使用方法: create 'table',{BLOOMFILTER =>'ROW'} 
   启用布隆过滤可以节省必须读磁盘过程,可以有助于改进读取延迟 
2、VERSIONS 默认是3 这个参数的意思是数据保留三个 版本,如果我们认为我们的数据没有这么大的必要保留这么多,随时都在更新,而老版本的数据对我们毫无价值,那将此参数设为1 能节约2/3的空间
     使用方法: create 'table',{VERSIONS=>'2'}
3、COMPRESSION 默认值是NONE 即不使用压缩
     这个参数意思是该列族是否采用压缩,采用什么压缩算法
     使用方法: create 'table',{NAME=>'info',COMPRESSION=>'SNAPPY'} 
     我建议采用SNAPPY压缩算法,个压缩算法的比较网上比较多,我从网上摘抄一个表格作为参考,具体的snappy 的安装后续会以单独章节进行描述。
     这个表是Google几年前发布的一组测试数据,实际测试Snappy 和下表所列相差无几。
    HBase中,在Snappy发布之前(Google 2011年对外发布Snappy),采用的LZO算法,目标是达到尽可能快的压缩和解压速度,同时减少对CPU的消耗;
    在Snappy发布之后,建议采用Snappy算法(参考《HBase: The Definitive Guide》),具体可以根据实际情况对LZO和Snappy做过更详细的对比测试后再做选择。             
          
Algorithm % remaining Encoding Decoding
GZIP 13.4% 21 MB/s 118 MB/s
LZO 20.5% 135 MB/s 410 MB/s
Zippy/Snappy 22.2% 172 MB/s 409 MB/s
 
  
 
 
 
 
 
 
 
     如果建表之初没有 压缩,后来想要加入压缩算法,怎么办 hbase 有另外的一个命令alter
4、alter 
     使用方法:
     如 修改压缩算法      

  1. disable 'table'
  2. alter 'table',{NAME=>'info',COMPRESSION=>'snappy'}
  3. enable 'table'
     删除列族
  1. disable 'table'
  2. alter 'table',{NAME=>'info',METHOD=>'delete'}
  3. enable 'table'
     但是这样修改之后发现表数据还是那么大,并没有发生多大变化。怎么办
     major_compact 'table' 命令之后 才会做实际的操作。
 
5、TTL 默认是 2147483647 即:Integer.MAX_VALUE 值 大概是68年吧
     这个参数是说明该列族数据的 存活时间 也就是数据的生命周期 单位是s 默写文章写的单位是ms 是错误的。
     这个参数可以根据 具体的需求 对数据设定 存活时间,超过存过时间的数据将在表中不在显示,待下次major compact的时候再彻底删除数据
     为什么在下次major compact的时候删除数据,后面会具体介绍到。
     注意的是TTL设定之后 MIN_VERSIONS=>'0' 这样设置之后,TTL时间戳过期后,将全部彻底删除该family 下所有的数据,如果MIN_VERSIONS 不等于0 那将保留最新
     的MIN_VERSIONS个版本的数据,其它的全部删除,比如MIN_VERSIONS=>'1' 届时将保留一个最新版本的数据,其它版本的数据将不再保存。
6、describe 'table' 这个命令查看了create table 的各项参数 或者是默认值。
7、disable_all 'toplist.*' disable_all 支持正则表达式,并列出当前匹配的表的如下:

 toplist_a_total_1001

toplist_a_total_1002                                                                                                                                                
      toplist_a_total_1008                                                                                                                                                
      toplist_a_total_1009                                                                                                                                                
      toplist_a_total_1019                                                                                                                                  
      toplist_a_total_1035

...

     Disable the above 25 tables (y/n)? 并给出确认提示
8、drop_all 这个命令和disable_all的使用方式是一样的
9、hbase 表预分区 也就是手动分区

     默认情况下,在创建HBase表的时候会自动创建一个region分区,当导入数据的时候,所有的HBase客户端都向这一个region写数据,直到这个region足够大了才进行切分。一种可以加快批量写入速度的方法是通过预先创建一些空的regions,这样当数据写入HBase时,会按照region分区情况,在集群内做数据的负载均衡。
     使用方法:create 't1', 'f1', {NUMREGIONS => 15, SPLITALGO => 'HexStringSplit'}
     也可以使用 api的方式 
     hbase org.apache.hadoop.hbase.util.RegionSplitter test_table HexStringSplit -c 10 -f info  
     参数很容易看懂 test_table  是表名 HexStringSplit 是split 方式 -c 是分10个region -f 是family
     这样就可以将表预先分为10个区,减少数据达到storefile 大小的时候自动分区的时间消耗,并且还有以一个优势,就是合理设计rowkey 能让各个region 的并发请求 平均分配(趋于均匀) 使IO 效率达到最高,但是预分区需要将filesize 设置一个较大的值,设置哪个参数呢 hbase.hregion.max.filesize 这个值默认是10G 也就是说单个region 默认大小是10G
     这个值发生从0.90 到0.92到0.94.3 从 256M--1G--10G 这个根据自己的需求将这个值修改。
     但是如果MapReduce Input类型为TableInputFormat 使用hbase作为输入的时候,就要注意了,每个region一个map,如果数据小于10G 那只会启用一个map 造成很大的资源浪费,这时候可以考虑适当调小 该参数的值,或者采用预分配region 的方式,并将hbase.hregion.max.filesize 设为一个相对比较大的值,不容易达到的值比如1000G,检测如果达到这个值,再手动分配region。
 
 
转自:http://blog.csdn.net/zhouleilei/article/details/12654329
 

HBase Shell操作的更多相关文章

  1. 大数据技术之_11_HBase学习_01_HBase 简介+HBase 安装+HBase Shell 操作+HBase 数据结构+HBase 原理

    第1章 HBase 简介1.1 什么是 HBase1.2 HBase 特点1.3 HBase 架构1.3 HBase 中的角色1.3.1 HMaster1.3.2 RegionServer1.3.3 ...

  2. HBase ——Shell操作

    HBase --Shell操作 Q:你觉得HBase是什么? A:一种结构化的分布式数据存储系统,它基于列来存储数据. 基于HBase,可以实现以廉价PC机器集群存储海量数据的分布式数据库的解决方案. ...

  3. 云计算与大数据实验:Hbase shell操作用户表

    [实验目的] 1)了解hbase服务 2)学会hbase shell命令操作用户表 [实验原理] HBase是一个分布式的.面向列的开源数据库,它利用Hadoop HDFS作为其文件存储系统,利用Ha ...

  4. 云计算与大数据实验:Hbase shell操作成绩表

    [实验目的] 1)了解hbase服务 2)学会hbase shell命令操作成绩表 [实验原理] HBase是一个分布式的.面向列的开源数据库,它利用Hadoop HDFS作为其文件存储系统,利用Ha ...

  5. HBase基础之常用过滤器hbase shell操作(转)

    创建表 create 'test1', 'lf', 'sf' lf: column family of LONG values (binary value)-- sf: column family o ...

  6. HBase基础之常用过滤器hbase shell操作

    创建表 create 'test1', 'lf', 'sf' lf: column family of LONG values (binary value) -- sf: column family ...

  7. Hbase shell 操作记录

    查看hbase版本 hbase(main):002:0> version 2.1.0-cdh6.2.0, rUnknown, Wed Mar 13 23:39:58 PDT 2019 Took ...

  8. Hbase Shell命令详解+API操作

    HBase Shell 操作 3.1 基本操作1.进入 HBase 客户端命令行,在hbase-2.1.3目录下 bin/hbase shell 2.查看帮助命令 hbase(main):001:0& ...

  9. Hbase框架原理及相关的知识点理解、Hbase访问MapReduce、Hbase访问Java API、Hbase shell及Hbase性能优化总结

    转自:http://blog.csdn.net/zhongwen7710/article/details/39577431 本blog的内容包含: 第一部分:Hbase框架原理理解 第二部分:Hbas ...

随机推荐

  1. eclipse 配置c++

    安装mingw一直安装不成功 用TDM-GCC方便多了 附链接http://tdm-gcc.tdragon.net/

  2. iOS 9正式版开始推送 升级机型非常广泛

    北京时间今日零时,苹果正式推送了iOS9,对于iPhone和iPad来说这一版系统升级都有很多重要改进,而升级的机型也非常宽泛,甚至连2011年的iPad 2与iPhone 4s都获得了支持,所以广大 ...

  3. 动态生成元素动作绑定,jquery 1.9如何实现

    1.7后增加了 live()1.9后被移除了 网上说可以用 on() 代替 可以实际在动态生成元素上绑定动作,没效果,求解绝方法(用低版本的jQuery这种方法,求别说..) 答: 之前有老兄回答过类 ...

  4. 使用游戏引擎photon打造一款特殊的远程控制软件

    前言 本文主要是介绍photon引擎的一些基本用法,以及使用游戏引擎开发远控的优势 0x1 有一段时候对做游戏的unity开发有些兴趣,在找游戏服务端引擎的时候,突然发现了这款歪果人开发的游戏引擎ph ...

  5. Arcgis 图层编辑器“粘贴”功能菜单灰色不能使用的问题与解决办法

    本人由win7系统更换为win10系统,平常使用的arcgis10.2升级使用10.3版本,相应的VS2012也升级使用2013版本,但是在安装了之后发现"Editor"编辑工具中 ...

  6. python小知识点

    问题:求列表中每个元素的元素次方之和>>> a=[1,2,3,4]>>> k=len(a)第一种解法#    s=0#    for x in a:#        ...

  7. js封装包

    (function () { //check the class name , it will be replaced when existed if (window.IQCBase) { //ret ...

  8. 关于Windows2008服务器设置MIME后仍然无法播放MP4的解决方法

    最近遇到了一个非常邪门的故障,重新安装了Windows2008服务器后 Mp4无法正常播放: 整个互联网中关于设置MP4的方法基本都是教你如何在IIS中设置MIME 本文讨论的不是如何教你设置MIME ...

  9. SQL JOIN的用法

    背景:(血的教训) 非常感谢能够有幸的去活力世纪面试,面试官非常的祥和,虽然最后没能够去成,但是非常的感谢,是他让我明白了自己还有很多需要去学习,每一次的面试不是为了去证明自己有多强,能拿多少的工资, ...

  10. 浅谈Java中的hashcode方法

    哈希表这个数据结构想必大多数人都不陌生,而且在很多地方都会利用到hash表来提高查找效率.在Java的Object类中有一个方法: 1 public native int hashCode(); 根据 ...