2018-04-04 HBase常见的运维工具

HBase自带许多运维工具,为用户提供管理、分析、修复和调试的功能,这些工具一部分的入口是hbase shell客户端,另一部分是在hbase的jar包中。

大多数可通过执行以下形式的命令实现:

hbase[<options>]<command>[<agrs>]

Canary

HBase Canary 是检测HBase系统状态的工具,检测粒度可以是列族、Region或Region Server等。Canary会对指定表的每一个Region抓取一行,通过探测失败或延迟来判断集群当前情况。常用的三个场景是:检查集群中所有Region是否可查;检查集群中某些特定表的所有Region是否可查;检查RegionServer的服务状态。

sudo -u hbase hbase org.apache.hadoop.hbase.tool.Canary

sudo -u hbase hbase org.apache.hadoop.hbase.tool.Canary -t 600000

sudo -u hbase hbase org.apache.hadoop.hbase.tool.Canary -t 600000 table_name1 table_name2...

sudo -u hbase hbase org.apache.hadoop.hbase.tool.Canary -t 600000 -regionserver

hbck工具

hbck工具用于检查HBase集群一致性。命令为:

sudo -u hbase hbase hbck

这条命令输出的末尾,会打印出OK或者INCONSISTENCY信息。若返回OK,说明保持一致。如果报出INCONSISTENCY,说明处于不一致状态,需要解决问题,此时可以通过-details来查看更多的细节。

注意出现INCONSISTENCY时,可以重复执行hbck工具若干次以确认。因为INCONSISTENCY可能只是暂时的,例如集群正在启动或者某个Region正在被拆分时会报INCONSISTENCY,但不意味着稳定时也不一致。

HFile查看工具

当需要查看HFile内容的文本化版本时,可以使用org.apache.hadoop.hbase.io.hfile.HFile工具实现,执行语句如下:

$${HBASE_HOME}/bin/hbase org.apache.hadoop.hbase.io.hfile.HFile

例如,查看文件hdfs://10.81.47.41:8020/hbase/TEST/1418428042/DSMP/4759508618286845475中的内容,可以敲入一下命令:

sudo -u hbase hbase org.apache.hadoop.hbase.io.hfile.Hfile -v -f hdfs:://10.81.47.41:8020/hbase/TEST/1418428042/DSMP/4759508618286845475

选项-v表示查看详细内容,如果去掉则只返回简化过的摘要内容。

CopyTable

CopyTable可以用来拷贝部分或者全部的表的内容,无论表是在同一集群或是不同集群。待操作的表必须存在才能执行CopyTable操作,用法如下:

sudo -u hbase hbase org.apache.hadoop.hbase.mapreduce.CopyTable --help

/bin/hbase org.apache.hadoop.hbase.mapreduce.CopyTable -- help

Usage: CopyTable [general options] [--starttime=X] [--endtime=Y] [--new.name=NEW] [--peer.adr=ADR]

其中<tablename>表示待考别的表的名称。例如我们可以将 TestTable 拷贝到某个集群,该集群是1小时时间窗口区间段的备份:

hbase org.apache.hadoop.hbase.mapreduce.CopyTable -Dhbase.client.scanner.caching=100 -Dmapred.map.tasks.speculative.execution=false --startrow=rk1 --stoprow=rk4 --starttime=1265875194289 --endtime=1265878794289 --peer.adr=transwarp-perf1,transwarp-perf2,transwarp-perf3:2181:/hyperbase1 --new.name=TestTableNew --families=cf1:cf2 TestTable 该命令中各选项的含义如下: startrow:起始行; stoprow:结束行; starttime:起始时间(毫秒级unixtime),如果没有设定结束时间意味着永远执行; endtime:结束时间,若没有明确指定起始时间,可忽略该选项; new.name:新的表名; peer.adr:目标对等集群地址(实为Zookeeper地址),采用如下格式: 【hbase.zookeeper.quorum:hbase.zookeeper.client.port:zookeeper.znode.parent;】 families:需拷贝的列族列表,如有多个用逗号分隔。此处cf1:cf2表示从cf1拷贝到cf2。

Export

Export 用来将表中的内容转储到HDFS上面的序列文件,可指定时间戳(timestamp),命令如下:sudo -u hbase hbase org.apache.hadoop.hbase.mapreduce.Export<tablename><outputdir>[<version>[<starttime>[endtime]]]

例如,如下命令用export指定时间戳(timestamp)导出表member5,到集群master24的HDFS:

hbase org.apache.Hadoop.hbase.mapreduce.Export member5 hdfs://master24:9000/user/hadoop/dump2 1 1401938590466 1401938590467

Import

Import 工具用来将之前被 Export 的数据载入HBase中。命令如下:

sudo -u hbase hbase org.apache.hadoop.hbase.mapreduce.Import<tablename><inputdir>

例如,用import将集群master24的HDFS中的表member5导入至HBase,实现命令如下:

sudo -u hbase hbase org.apache.hadoop.hbase.mapreduce.Import member5 hdfs://master24:9000/user/hadoop/dump2

ImportTsv

ImportTsv 工具的作用是把数据以TSV格式载入到HBase中。

它有以下两个典型的用途:

通过 Puts 操作将数据从HDFS中的TSV格式载入到HBase中。

sudo -u hbase hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.columns=a,b,c<tablename><hdfs-inputdir>

TSV 是Tab-separated values的缩写,即制表符分隔值。 CSV,Comma-separated values(逗号分隔值)。 TSV是用制表符(Tab,’\t’)作为字段值的分隔符; CSV是用半角逗号(’,’)作为字段值的分隔符; 注意:IANA规定的标准TSV格式,字段值之中是不允许出现制表符 Python对TSV文件的支持: Python的csv模块准确的讲应该叫做dsv模块,因为它实际上是支持范式的分隔符分隔值文件(DSV,delimiter-separated values)的。 delimiter参数值默认为半角逗号,即默认将被处理文件视为CSV。 当delimiter=’\t’时,被处理文件就是TSV。

第二种用途是和completebulkload 配合使用,为要载入的StoreFiles做准备。sudo -u hbase hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.columns=a,b,c -Dimporttsv.bulk.output=<outputdir><tablename><hdfs-data-inputdir>

其中各选项的含义如下: Dimporttsv.columns:指定原数据对应映射到HBase中的哪些列。如果该列包括的是行键,那么则用 HBASE_ROW_KEY 来表示该列的列名。

 Dimporttsv.bulk.output:指定HFiles的存放目录;若不指定该项,数据会直接存放在HBase对应的表中。

CompleteBulkload

completeBulkload工具会将产生的StoreFiles 移动到HBase表中。这个工具通常与ImportTsv的输出配合使用。

sudo -u hbase hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles<hdfs://storefileoutput><tablename>

<hdfs://storefileoutput>通常表示经过ImportTsv载入到HDFS的StoreFiles的路径。

RowCounter和CellCounter

RowCounter是用来计算表行数的MapReduce工程。通常,当用户对元数据的一致性有疑问时,RowCounter可以作为一个比较实用的工具来全面检查HBase是否读取了表的所有block。它可以通过 --starttime=[starttime]和--endtime=[endtime]标签来限定数据的时间范围。

sudo -u hbase hbase org.apache.hadoop.hbase.mapreduce.RowCounter<tablename>[<column1><columb2>..]

HBase还有另一个具有诊断作用的MapReduce工程,叫做CellCounter。他和RowCounter类似,但会收集和表相关的更细节的统计数据,包括:表的行数、所有行的列族数、所有行的qualifier数,每个列族出现的次数,每个qualifier出现的次数、每个qualifier的版本总数。

该工具也可以通过--starttime=[starttime]和--endtime=[endtime]来限定扫描表的时间范围。

sudo -u hbase hbase org.apache.hadoop.hbase.mapreduce.CellCounter<tablename><outputDir>[regex or prefix]

hbase clean 工具

hbase clean 命令是用于清除ZooKeeper或HDFS上的HBase相关数据的工具。它适用于测试或者铲除HBase集群时对ZooKeeper或HDFS的清理。

sudo -u hbase clean (--cleanZk|--cleanHdfs|--cleanAll)

cleanZk:清除Zookeeper上的HBase数据。

cleanHdfs:清除HDFS 上的HBase数据。

cleanAll:清除Zookeeper和HDFS上HBase数据。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容