Apache HBase Shell是JRuby的IRB,并在此基础上加入了HBase特有的命令。

JRuby是用Java实现的Ruby解释器。通过JRuby,你可以在JVM上直接运行Ruby程序,调用Java的类库。

IRB即interactive ruby,交互式Ruby。

运行HBase Shell:$ ./bin/hbase shell

例如,我使用CDH搭建的Hadoop集群,并且安装了HBase;登录后,在集群上直接使用命令:hbase shell

输入命令:help ,然后回车,可以看到对各种命令的简单描述。

输入命令:help "COMMAND" 可看具体信息。

例:help "move"

常用命令举例:

1) 查看表结构

desc '表名'

2)执行大合并

major_compact '表名'

3)列出Region

list_regions '表名'

看的不是很清晰,取一条:

SERVER_NAME:

bg87.cnki.com,16020,1539856447742

REGION_NAME:CNKI_Search201702,1412*1487792102000#1170222153901497888|4170222193201735373$,1539880666725.bbe3ff87712f654cb29a05243229effe.

START_KEY:1412*1487792102000#1170222153901497888|4170222193201735373$

END_KEY:

358*1487455399000#1161229194701353797|5170218220001766105$

SIZE:957

REQ:4705

LOCALITY:1.0

还可以有选择性的输出信息,例如只输出服务器名称,起始键

list_regions 'testtable', {}, ['SERVER_NAME', 'start_key','end_key']

4)移动Region

move 'ENCODED_REGIONNAME', 'SERVER_NAME'

找到ENCODED_REGIONNAME:

从REGION_NAME中找,上例中倒数第二个句点后的一段就是,即bbe3ff87712f654cb29a05243229effe

例:

move '8a5e97bcb910be18cf6f9e07f59816c6','bg84.cnki.com,16020,1539856459310'

5)修改表结构

例:将表CNKI_Search201701的COMPRESSION都改为snappy

alter 'CNKI_Search201701',{NAME => 'im', COMPRESSION => 'snappy'}, {NAME => 'fw', COMPRESSION => 'snappy'},{NAME => 'wf', COMPRESSION => 'snappy'}

6)列出所有表:

list

7) 查询表行数

count '表名'

1使用Ruby编写脚本

在HBase的bin目录下可以找到以rb为后缀的脚本文件,为了运行这个脚本,可以使用命令

$ ./bin/hbase org.jruby.Main PATH_TO_SCRIPT

PATH_TO_SCRIPT是脚本路径。

让我看看bin目录下的ruby脚本。

其实切换到bin目录下,使用下面的命令也是可以的。

$ hbase-jruby SCRIPT

例如,$ hbase-jruby get-active-master.rb

让我们看看hbase-jruby这个文件里有啥:

看,它其实封装了org.jruby.Main。

2以非交互模式运行Shell

非交互模式会捕获HBase Shell命令退出的状态(成功或失败),如果使用普通模式,那么HBase Shell总是返回它自己的执行状态,大多数时候返回代表成功的数字0。

使用-n或--non-interactive选项开启非交互模式。

不过我使用CDH安装的HBase长时间无法返回。

3操作系统脚本中的HBase Shell

你可以在操作系统脚本中使用HBase Shell,比如Bash shell,这种大多数Linux和Unix默认的交互式命令接口。以下准则使用Bash语法,但可以调整,使其可同C样式的shell一起使用,例如csh或tcsh,而且经过调整后,还可以和Microsoft Windows 脚本解释器一起使用。

注意:以这种方式生成 HBase Shell 命令的速度很慢,所以要注意何时将HBase 操作与操作系统命令行相结合是合适的。

例,将命令传递给HBase Shell

使用echo命令和|(管道)操作,以非交互模式将命令传递给HBase Shell。务必要转义HBase命令中的字符,否则shell将会解释这些字符。

$ echo "describe 'test1'" | ./hbase shell -n

如果想抑制所有输出,使用下面的命令:

$ echo "describe 'test'" | ./hbase shell -n > /dev/null 2>&1

例,检查脚本命令执行结果

由于脚本没有设计成交互式执行,所以需要一种方法来检查命令是否执行成功。成功执行的命令返回0,失败的命令返回非零值。Bash将命令的返回值存储在一个名为 $? 的特殊环境变量中。因为每次shell执行任何命令时都会为该变量重新赋值,所以应该将结果存储在另一个脚本定义的变量中。

不过,我们还应注意,成功执行的脚本返回值一定是0,但返回值非零不一定代表失败。因为RPC(远程过程调用)命令是无状态的,所以有可能是客户端连接断开了,或者受其他是他事件的影响。最好的办法就是,检查执行结果,比如,你创建了一张表,但shell返回了一个非零值,那么你查下这个表是否已经存在了。

下面的这个脚本展示了一种存储返回值的方法并根据返回值做出决定。

4从命令文件读取HBase Shell命令

在txt文本中写HBase Shell命令,一行一个命令,例如:

例,引导HBase Shell执行命令

将命令文件的路径作为传递给hbase shell的唯一参数,如果脚本中不包含exit命令,则会返回提示符。无法以编程方式检查每个单独的命令是否成功。

5传递VM选项给Shell

使用HBASE_SHELL_OPTS环境变量将VM选项传递给HBase Shell 。在你的环境中进行设置HBASE_SHELL_OPTS,例如通过编辑 〜/ .bashrc,或将其设置为启动HBase Shell 的命令的一部分。下面的示例设置了几个与垃圾回收相关的变量,仅用于VM运行HBase Shell的时候。可以将命令写成一行,如果命令很长的话,也可以使用字符将命令分隔为多行。

6重写配置文件启动HBase Shell

像hbase-2.0.5/hbase-2.1.3/hbase-2.2.0/hbase-1.4.10/hbase-1.5.0这几个版本的HBase,通过传递带有-D前缀的键值对,可以传递或重写hbase-*.xml中的配置项,

7 Shell技巧

表变量

HBase 0.95增加了面向对象jruby风格的表引用Shell,以前所有的HBase Shell命令都是面向过程风格的,它总是把表名当做参数传递给命令。HBase 0.95引入了将表看做jruby变量这一特性,表引用可以用于数据读写操作,如put, scan, get,禁用表,删表,描述表等。

HBase 0.95之前,你会这样写命令:

从HBase 0.95版本开始,你会这样写命令,就是讲一个表赋给一个变量:

如果一个表已经创建了,可以使用get_table方法将其赋给一个变量

list命令也被扩展了,它能将表名集合拼接成字符串返回。可以使用jruby根据表名来操作表。list_snapshots命令与此相似。

irbrc文件

在主目录下创建一个irbrc文件,添加自定义项,比较有用的是,记录历史命令。然后可以跨Shell调用。

如果不想将每个表达式的结果打印到stderr,可以这样做,例如list命令返回的表集合。

日志数据的时间戳

从HBase日志文件中,将08/08/16 20:56:29,这种格式的日期转换为时间戳

再转成日期形式

Shell查询配置

在Shell中设置配置

使用HBase Shell预分裂表

使用HBase Shell的create命令创建表时,可使用各种选项预先拆分表。

最简单的方法是在创建表格时指定一个分割点数组。请注意,当将字符串直接量指定为分割点时,将根据字符串所代表的字节形式创建分割点。所以将“10”指定分割点,实际上指定“x3130”为分割点。

分割点集合将定义n+1个区域,其中n是分割点的数量。最低的区域包含了所有第一个分隔点之前的所有可能最低的键值,但不包含第一个分割点;下一个区域将包含从第一个分割点开始的键值,但不包括下一个分割点键值。以此类推,直到最后一个分割点。最后一个区域将从最后一个分割点开始直到最后的所有可能的最大键值。

在上面的例子中,将使用列族 "f" 创建表 "t1",预先拆分为四个区域。注意,第一个区域将包含从“x00”到“x30”(因为“x31”是“1”的 ASCII 码)的所有键值。

可以使用文件传递分割点。下面的例子中,从本地文件系统的文件中读取分割点。文件中,一行指定一个分割点键值。

其他选项是根据所需的区域数量和分割算法自动分割。HBase提供基于均匀拆分或十六进制密钥的分割键值范围算法,也可以提供自己的拆分算法来细分键值范围。

HBase Shell实际是Ruby环境,可以使用Ruby脚本写分割算法。

请注意,HBase Shell中的truncate命令在删除并重建具有默认选项的表时会将任何预分割都丢弃。如果需要truncate预分割的表,删除并重建表的时候,必须显式地指定自定义分割选项。

调试

可以设置调试开关,以便可以输出更多信息。例如想看到更多的异常栈追踪信息,那么使用下面的命令:

hbase> debug

设置日志级别为DEBUG,使用下面的命令:

$ ./bin/hbase shell -d

Count命令

使用count查询表大小时,指定正确的CACHE会查的更快

hbase> count '', CACHE => 1000

上面,一次拉取1000行。行数越多设置CACHE越小,默认一次取一行。


英文官方文档见:http://hbase.apache.org/book.html#shell

cdh界面 hue 配置hbase_海量数据存储技术之HBase:使用HBase Shell操纵HBase相关推荐

  1. 论大数据时代下的海量数据存储技术

    高清.长周期呈现海量存储需求 高清已经在安防行业全面铺开应用.除了带给用户能够看得更清的良好视觉感受外,对存储容量的需求亦成几何式增长.例如: 前端IPC有130W到500W像素,码流也从有2Mbps ...

  2. 大数据时代下的海量数据存储技术有哪些?

    高清.长周期呈现海量存储需求 高清已经在安防行业全面铺开应用.除了带给用户能够看得更清的良好视觉感受外,对存储容量的需求亦成几何式增长.例如:前端IPC有130W到500W像素,码流也从有2Mbps到 ...

  3. 海量数据存储技术与解决方案

    海量数据存储难点 :数据量过大,数据中什么情况都可能存在:软硬件要求高,系统资源占用率高:要求很高的处理方法和技巧. 海量数据存储处理经验 : 一.选用优秀的数据库工具     现在的数据库工具厂家比 ...

  4. c# 访问hbase_大数据技术 windows下C#通过Thrift操作HBase

    本篇教程探讨了大数据技术 windows下C#通过Thrift操作HBase,希望阅读本篇文章以后大家有所收获,帮助大家对大数据技术的理解更加深入. < 1.到apache官网下载Thrift源 ...

  5. c# 访问hbase_大数据技术之C#通过Thrift连接查询HBase主要方法总结

    本篇文章探讨了大数据技术之C#通过Thrift连接查询HBase主要方法总结,希望阅读本篇文章以后大家有所收获,帮助大家对相关内容的理解更加深入. 1.get(byte[] tableName,byt ...

  6. 【大数据存储技术】在线测试:第四章 HBase基础

      参考链接: Hbase总结(六)hbase37个笔试题_mr_chenping的技术博客_51CTO博客 Nosql分布式数据库复习题带答案 - 百度文库 NoSQL复习题 - 百度文库

  7. 紫光西部数据助力中信建投证券实现海量数据存储创新

    近日,紫光西部数据有限公司(以下简称"紫光西部数据")和中信建投证券股份有限公司(以下简称"中信建投证券")共同宣布,中信建投证券海量数据存储创新项目实施获得成 ...

  8. Oracle的海量存储技术

    下午去参加一个Oracle有关海量数据存储技术的培训讲座了. 地址在广州市林和西路101号天河区计经大楼西侧三楼. 培训发起机构为:广州中睿信息技术有限公司. 下面就简要总结一下所听到的一些东西,也算 ...

  9. 海量数据下的存储技术,哪些模式靠得住?

    高清.长周期呈现海量存储需求 高清已经在安防行业全面铺开应用.除了带给用户能够看得更清的良好视觉感受外,对存储容量的需求亦成几何式增长.例如: 前端IPC有130W到500W像素,码流也从有2Mbps ...

最新文章

  1. 迭代器、代码块、闭包
  2. “主要的编程范型”及其语言特性关系(多图)
  3. 自己写一个实现ApplicationListener​接口并且把该组件加入到容器中
  4. 在Asp.Net Core中集成Kafka
  5. 4)机器学习基石笔记 Lecture4:Feasibility of Learning
  6. linux下.a/.so/.la目标库区别
  7. phpnow升级php版本 php-5.2.14-Win32升级至5.3.5
  8. (转)利用AIR的ServerSocket类让 AIR 做socket服务器
  9. Amazon.com 和 store.apple.com 哪个的购物体验更好?
  10. PHP switch问题
  11. Android的动画简单学习
  12. homework2:根据已知代码,回答问题
  13. OpenCV 直方图均衡化
  14. Excel 各种密码的破解,大全建议收藏!
  15. 让硬盘灯不再狂闪,调整Win7系统绝技(转)
  16. L'Hospital法则
  17. Apache ECharts 官网布局排版错乱的解决办法
  18. Pycharm远程连接服务器(windows下远程修改服务器代码)
  19. 2023年,最新最权威的上海Java培训机构排行榜出炉!
  20. Java编程经典书籍

热门文章

  1. JS实现Ajax异步刷新
  2. mysql utf8 4位_mysql中utf8和utf8mb4区别
  3. 分布式环境下,怎么保证线程安全
  4. Fedora7 安装完全过程
  5. 面向对象:包装类、对象处理、类成员
  6. Servlet 文件上传
  7. 01-Javascript简介
  8. android UI布局
  9. [原创]mybatis中整合ehcache缓存框架的使用
  10. android_studio上传svn的时候那些不提交