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 
     使用方法:
     如 修改压缩算法      

  disable 'table'
  alter 'table',{NAME=>'info',COMPRESSION=>'snappy'}
  enable 'table'
     删除列族
     disable 'table'
     alter 'table',{NAME=>'info',METHOD=>'delete'}
     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. MySQL数据库之------DOS命令行的基本操作

    1.   进入D盘的如下路径: 按住   ctrl+shift  ,右键,选择在此处打开命令行窗口.出现图2.   图   1  图 2 2. .     3.   图 3  4.    图 4   ...

  2. try,catch,finally与return

    package com.zl.test; // try catch finally 内有returnpublic class Demo { public static void main(String ...

  3. 基于注解的SpringMVC简单介绍

    SpringMVC是一个基于DispatcherServlet的MVC框架,每一个请求最先访问的都是DispatcherServlet,DispatcherServlet负责转发每一个Request请 ...

  4. Android Sqlite数据库加密

    Android使用的是开源的SQLite数据库,数据库本身没有加密,加密思路通常有两个: 1. 对几个关键的字段使用加密算法,再存入数据库 2. 对整个数据库进行加密 SQLite数据库加密工具: 收 ...

  5. Git分布式版本管理工具基本使用方法

    一.Git简介 早先linux内核代码托管在BitKeeper,这个是商业的,但是免费给linux社区使用: linux社区有个人试图破解BitKeeper,被BitKeeper发现后不再免费提供使用 ...

  6. 合并果子 2004年NOIP全国联赛普及组

    时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆 ...

  7. pthread_cond_wait()函数的理解(摘录)

    /************pthread_cond_wait()的使用方法**********/pthread_mutex_lock(&qlock);    /*lock*/pthread_c ...

  8. C#导出Excel,并设置简单格式

    protected void ExportExcel(DataTable dt) { string fileName = “FileName”; Microsoft.Office.Interop.Ex ...

  9. 基于日志数据分析以防御CC攻击的想法

    1. What - 什么是CC攻击 CC攻击,即针对应用层HTTP协议的DDos攻击,攻击者在短时间内向目标服务器发送大量的HTTP请求,使得服务器会非常繁忙,资源消耗会增加:同时,如果请求中包含基于 ...

  10. 井间数据polarization analysis 相关概念

    1. 垂直分量上记录到的数据,无法记录SH波?这个有待考证,先记录于此~ 两点需要注意:1.层状介质中,P波和深度方向(Z轴)组成入射面;2.SH的定义为垂直于入射面的S波分量. 2.VSP的观测方式 ...