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

9adc616b54da34dcbf60c0e60731e4f8.png

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

b27fb67720be4d307485cb5d308643c2.png

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

7573b3141db548391698cd7fbc286f67.png

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

例:help "move"

8a3937585ffa6386cc37d8e8af5e01c1.png

常用命令举例:

1) 查看表结构

desc '表名'

62b2ecd2fc5e731383d7bb2039019f57.png

2)执行大合并

major_compact '表名'

3)列出Region

list_regions '表名'

0f13c50bee044ebd34510871c21e1035.png

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

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']

52032e9ae92939f6c0a921a38b3a0075.png

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脚本。

67ad8beae5310da70b80fe38c79740ec.png

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

$ hbase-jruby SCRIPT

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

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

12020e563be83a1668c74f11d455ad17.png

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

2以非交互模式运行Shell

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

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

fba44f05e354e586a5c084fb1901a20d.png

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

ebf2a06477dd76e089c911c6fa682ed8.png

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返回了一个非零值,那么你查下这个表是否已经存在了。

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

914abfdd71e88ccf5b9221443e17413d.png

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

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

2f84e9f391defcca7c6ae35a6bfeb926.png

例,引导HBase Shell执行命令

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

6a8311496a385c344e04b546229c5ad5.png

5传递VM选项给Shell

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

f75a2f61e0aeac1f9bd68ad609dbc6a4.png

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中的配置项,

325c6520dbe86404422e894fc89e1b61.png

7 Shell技巧

表变量

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

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

e5e45fdf2968fd37d78f1363541e9f55.png

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

9ce90fb9a97e72fb42b9fce37960168d.png

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

52bc05762adf51c78f719a40f66a52ab.png

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

d5f9ec6723f3f27855b5d81fd3fdc63d.png

irbrc文件

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

8de76a6100e96678dea53934aceab5c6.png

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

fc2e54e17af4cc1244eb5c6ef7c53e49.png

日志数据的时间戳

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

1a74b203ac5dd2f08e7996f2c47f6971.png

再转成日期形式

ccc106e90ef632d1e70a92d30f86f6ed.png

Shell查询配置

0e63ee6cba934af6dfe54355fcf998cd.png

在Shell中设置配置

25b2b2ceeeae0e4911828f6b4f8888da.png

使用HBase Shell预分裂表

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

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

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

b2f1ce7f7f6a8070238942da48f61e9b.png

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

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

77f58fcb430641ac1839ea5e9bc81a1b.png

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

3f7cabb85c6b733e8ea5af1292f61cdd.png

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

d6dbe031ca52117e76b1f44f1bbd3f51.png

请注意,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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/434292.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安卓 图像清晰度识别_智能车牌识别系统的常见故障和解决方法

车牌号是车辆的唯一身份标志,它的特殊性与重要性从而决定了车牌识别系统在智慧城市交通管理系统中成为不可或缺的重要组成部分。下面智能车牌识别系统厂家畅荧智能科技将详细为您介绍一些智能车牌识别系统常见的故障问题和对应的解决方法。智能车牌识别系统的常见故…

asterisk使用SIP相互对接

当用户数量上去,单凭一台asterisk是很能支持庞大的用户群体,所以要根据用户量来部署多台asterisk来应付实际情况的需求.但部署多台asterisk所带来的一个问题就是A服务器的用户如果Call B服务器的用户呢?其实asterisk的设计者早已帮我们解决问题,以下是通过SIP把两台asterisk对…

企业技术

缓存使用条件: 1.访问量大 2.数据不经常更新 缓存缺点:容易产生【脏数据】--- 即:当用户第一次访问页面,读取数据库,并将数据存入缓存后,在该缓存失效前,其他访问都是读取缓存中的数据&#xf…

post postman 传递数组对象_如何使用postman做接口测试

一,接口测试是什么什么是接口测试,不说广泛的概念,直接电脑打开浏览器,进入开发者工具(F12)随意进入一些网站可以看到下面左侧栏出现了一系列的数据:上面条数据都是一个单独的接口,点击单个接口&#xff0c…

形位公差符号大全_玩转CAD快捷键(大全),一篇文章就够了

CAD快捷键命令大全符号键(CTRL开头)CTRL1 PROPCLOSEOROPEN 对象特性管理器CTRL2或4 ADCENTER 设计中心CTRL3 CTOOLPALETTES 工具选项板CTRL8或QC QuickCalc 快速计算器控制键CTRLA AI_SELALL 全部选择CTRLC或CO/CP COPYCLIP或COpy 复制CTRLD或F6 COORDIN…

Ubuntu 13.10配置root登录

Ubuntu 13.10默认是不允许使用root登录的,要想使用root权限,就必须使用 sudo 命令来执行,很繁琐。 要解决这个问题,需要两个步骤: 1、设置root密码,开启root账号 ubuntu默认的root密码据说是每隔5min就…

三极管驱动(讲的比较好)

http://wenku.baidu.com/view/9861c63310661ed9ad51f350.html转载于:https://www.cnblogs.com/tureno/articles/2668968.html

k近邻算法_K近邻(knn)算法是如何完成分类的?

摘要:K近邻算法是机器学习中的一个非常基础的算法。本文通过自生成数据,通过绘图的方式演示KNN算法的思路,让你不看数学公式就看了解什么是KNN算法。关键词:KNN算法1 生成一个二分类的数据集本文很多内容参考文献[1]。先生成一个两…

登录不上_《盗贼之海》登录不上?还在傻傻等待,快来让我教教你

大家都对这款海盗题材的游戏《盗贼之海》有兴趣了吧,相信大家都入手了它,但是也有很多朋友在入手后遇见了很多问题,别怕,今天干货来了,手把手教你。保证你流畅游戏,快人一步。我看见很多朋友都在问&#xf…

为Ubuntu安装build-essential软件包

Ubuntu缺省情况下,并没有提供C/C的编译环境,因此还需要手动安装。 如果单独安装gcc以及g比较麻烦,幸运的是,为了能够编译Ubuntu的内核,Ubuntu提供了一个build-essential软件包。 查看该软件包的依赖关系,可…

__dopostback

转载&#xff1a; 首先要记住这个函数的前面是两个下划线. __doPostBack "_" "_" "doPostBack". 再介绍一下__doPostBack函数的作用。我们先来看一下_doPostBack函数的内容&#xff1a; <div><input type"hidden" name&quo…

苹果X可以升级5G吗_苹果x可以用5g网络吗

随着5G网络的逐渐商用&#xff0c;越来越多5G原型机和量产机都即将推出&#xff0c;那么苹果iPhone X能够支持5G网络吗&#xff1f;下面就为您带来苹果iPhone x可以用5G网络吗的相关介绍&#xff0c;希望以上的介绍能够帮助到您。苹果x可以用5g网络吗1、iPhone X并不支持5G网络…

提交显示成功但是没有看到文件_如何向RTThread提交一个BSP?

RT-Thread今天的快速发展和所取得成绩&#xff0c;离不开所有开发者的持续贡献和社区小伙伴的竭力支持。一、前言今年6月&#xff0c;我在一款智能混合型的FPGA芯片上&#xff0c;完成了RT-Thread的移植&#xff0c;并向RT-Thread提交了一个完整的BSP&#xff0c;后续又根据审查…

asterisk语音信箱voicemail.conf

asterisk 里面配置voicemail首先需要在voicemail.conf里面配置mailbox&#xff0c;mailbox的格式如下配置&#xff1a; voicemail.conf: [testmail] ;context edwin>1234, edwin chen, edwintestmail.com ;edwin:用户名&#xff0c;1234:密码&#xff0c;edwinchen :全名…

WinForm中使用WPF的控件

在WinForm中可以使用WPF中的控件&#xff0c;或者由WPF创建的自定义控件&#xff1b; 步骤1&#xff1a;创建WinForm工程&#xff1b; 步骤2&#xff1a;在WinForm工程的解决方案资源管理器中&#xff0c;在刚刚创建的WinForm解决方案中新建或者添加现有的WPF用户控件工程&…

docker php composer 使用_「PHP编程」如何使用Docker制作自己的LNMP/LAMP镜像

LNMP和LAMP是PHP常用的两种运行环境&#xff0c;L代表Linux&#xff0c;N代表Nginx&#xff0c;A代表Apache&#xff0c;M代表Mysql&#xff0c;P代表PHP。在文章《「PHP编程」安装开发环境太烦&#xff1f;告诉你几个简单方法&#xff0c;分分钟搞定》中我们介绍了&#xff0c…

DP问题之 捞鱼问题

捞鱼问题&#xff1a; http://blog.163.com/zhaohai_1988/blog/static/209510085201271743020919/ 模型总结 http://www.cnblogs.com/10jschen/archive/2012/08/19/2646087.html转载于:https://www.cnblogs.com/applebunny/archive/2012/09/04/2670991.html

asterisk配置会议室meetme.conf

meetme.conf: conf > 1001,123456,654321 使用conf标签开始&#xff0c;1001是会议室编号&#xff0c;123456为会议室密码&#xff0c;654321为管理员密码 extensions.conf: ;;;;;;;;;;;;;;;;会议室;;;;;;;;;;;;;;;;;;;;;; exten > 100,1,Playback,your …

中天数相减获得差_Power BI 了解DAX中LASTDATE和MAX之间的区别

许多刚开始使用DAX的小伙伴在使用LASTDATE搜索某个时间段内的最后日期。或者他们使用NEXTDAY检索给定日期之后的日期。尽管这些函数可以实现它们所承诺的功能&#xff0c;但它们并不打算在简单的表达式中使用。相反&#xff0c;它们是设计用于时间智能计算的表函数。错误地使用…

在CentOS下源码安装 Xen并搭建Windows虚拟机

前言 首先要感谢xing的帮助&#xff0c;在他的指导之下才完成环境的搭建&#xff0c;本文档的部分内容来自他的文档。另外&#xff0c;还要感谢——互联网。 1. 环境介绍 Linux: CentOS 6.3 Xen: Xen 4.1.3 Windows: XP 或 2003 2. 安装CentOS 从官网下载CentOS 6.…