hbase运维

一笑之奈何 一笑之奈何     2022-08-26     340

关键词:

管理工具

HBase Shell
HBase Shell是HBase组件提供的基于JRuby IRB的字符界面的交互式客户端程序,通过HBase Shell可以实现对HBase的绝大部分操作

通过help ["group-name"]命令,可以获取该组包含命令的详细使用说明

hbck工具
hbck工具对HBase中的数据进行扫描,找出错误的数据块,并生产简单的报表。该工具调用方法如下:
$ bin/hbase hbck
输出结果摘录如下:
......
Number of Tables: 1
Number of live region servers: 2
Number of dead region servers: 0
Master: node1,60000,1357616232695
Number of backup masters: 0
......
Summary:
ROOT is okay.
Number of regions: 1
Deployed on: node1,60020,1357613909450
.META. is okay.
Number of regions: 1
Deployed on: node2,60020,1357613870843
t1 is okay.
Number of regions: 1
Deployed on: node1,60020,1357613870843
0 inconsistencies detected.
Status: OK
说明:关于hbck工具的详细信息,可参考HBase文档:http://hbase.apache.org/book/hbck.in.depth.html 

hfile工具
hfile工具主要用于分析HBase的数据文件HFile。该工具的使用方法如下:
$ bin/hbase hfile [-a] [-b] [-e] [-f <arg>] [-k] [-m] [-p] [-r <arg>] [-s] [-v]
hfile工具具体的参数如表5-2所示。
表5-2 hfile参数

参数

说明

a,-checkfamily

启用列族检查

b,-printblocks

打印块索引元数据

e,-printkey

打印所有rowkey

f,-file <full/path/to/hfile>

设置要分析的HFile,应输入完整的路径名,如hdfs://namenode:8020/hbase/.META./12/34

k,-checkrow

查找没有排序的行

m,-printmeta

打印hfile的元数据信息

p,-printkv

打印所有的<Key/Value>键值对

r,-region <region-name>

设置要分析的Region,输入Region名,如".META.,,1"

s,-stats

打印统计信息

v,-verbose

打印详细信息,包括元数据和文件分割符


hlog工具
hlog工具主要用于分析HBase的WAL日志HLog文件。该工具的使用方法如下:
$ bin/hbase hlog <filename...> [-h] [-j] [-p] [-r <arg>] [-s <arg>] [-w <arg>]
hlog工具具体的参数如表5-3所示。
表5-3 hlog参数

参数

说明

h,-help

打印帮助信息

-j, --json

设置分析结果以json格式输出

p,-printvals

打印所有值

r,-region <region-name>

设置要分析的Region

s,-sequence <sequence-num>

设置要分析的序列

w,-row <row-name>

设置要分析的行

zkcli工具
zkcli工具是hbase包装的ZooKeeper Shell,通过它可以查看HBase集群使用的ZooKeeper集群的信息。该工具的启用方法如下:
$ bin/hbase zkcli
启用后,会进入如下界面:
Welcome to ZooKeeper!
...
JLine support is enabled
... 
WATCHER:: 
WatchedEvent state:SyncConnected type:None path:null
[zk: node5:2181(CONNECTED) 0]
在该提示符下输入任意一个字符,可获取zkcli支持的命令列表

 

5.2.3 日常维护

Compaction操作
HBase每隔一段时间会对将许多小的HBase数据文件(HFile)合并成大文件,这个过程叫做Compaction。Compaction操作可有效较少HFile的个数,节约磁盘空间,提高HBase的性能。RegionServer在执行Compaction操作期间会占用大量的内存资源,过于频繁的Compaction操作会影响HBase的性能,而Compaction操作周期过长也会导致期间积累的HFile过多,单次Compaction时间很长,同样也会影响性能。如果HBase在运行期间一直保持较高的Compaction频率,应该考虑添加新的节点以提高集群的负载能力。
说明:关于HBase Compaction的详细信息,请参考HBase文档:http://hbase.apache.org/book/regions.arch.html#compaction
Split操作
HBase的Region大小是由上限的,当Region的大小超过了这个限制,RegionServer就会执行一次Split过程,将这个Region一份为二,这个过程叫做Split。Split过程使用标记方式,将实际的数据分割操作放在后台进行,因此,该操作速度较快。Split操作可以将Region分成两份,分配给不同的RegionServer管理。如果HBase中的数据存在局部过热的Region,可以考虑手动对这些Region执行split操作,并将这些Region重新分配给不同节点。下面是这个过程的HBase Shell示例:
hbase(main):010:0> split ‘test‘,‘test,row150,1357626052663.15bbf20f9ce9b38e0a6dcb0732a90945‘
hbase(main):012:0> move ‘9de82062a65b07cc70b999793ad658dd‘, ‘apache-node3,60020,1357613909450‘
数据备份
HBase的数据都记录在HDFS的/hbase目录下,可以将HBase数据作为普通的HDFS文件进行备份,相关内容可参见3.2.3日常维护章节内容。也可以使用HBase提供的Replication机制进行数据备份。Replication机制基于操作日志将HBase数据同步到备用集群。关于Replication的内容,请参见HBase文档:http://hbase.apache.org/replication.html
数据迁移
HBase数据迁移问题主要包括三个方面,如下所示:

  1. 从外部数据源(如关系型数据库)导入数据
  2. 将HBase数据导入外部数据源
  3. HBase集群间的数据迁移

对于第一、二种情况,可以利用HBase API编写相关的导入程序完成数据导入/导出操作,对于第三种情况,当然也使用可以和一、二两种情况相同的方法,不过针对第三种情况,有更简单的方法。

  • 导出数据

HBase提供导出数据的工具用来将HBase表格数据导出本地磁盘或HDFS上,该工具为:org.apache.hadoop.hbase.mapreduce.Export,使用方法如下:
$ bin/hbase org.apache.hadoop.hbase.mapreduce.Export [-D <property=value>]* <tablename> <outputdir> [<versions> [<starttime> [<endtime>]] [^[regex pattern] or [Prefix] to filter]]
设置参数可以限制导出的数据范围。下面的例子将表t1的f1列族导出到HDFS上:
$ bin/hbase –D hbase.mapreduce.scan.column.family=f1 t1 hdfs://node1:8020/tmp/t2_backup

  • 导入数据

对应的,HBase也提供了导入工具,可将导出的数据导入到HBase中,该工具为org.apache.hadoop.hbase.mapreduce.Import,使用发方法如下:
$ bin/hbase org.apache.hadoop.hbase.mapreduce.Import <tablename> <inputdir>
*Import工具将数据导入HBase中已存在的表中,如果表不存在,将会发生错误。

  • 导入TSV格式的数据

TSV (Tab Separated Values)格式的数据以Tab分隔每个列的数据。HBase提供了ImportTsv工具来导入这种数据:
$ bin/hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.columns=a,b,c <tablename> <inputdir>
下面给出一个示例,设HDFS上有一个TSV格式的数据文件/tmp/tsv如下所示:
row1c1c2
row2c1c2
row3c1c2
设第一列数据为rowkey,第二列对应HBase中的列为"f1:c1",第三列对应HBase中的列为"f1:c2",使用ImportTsv工具导入数据:
$ bin/base org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.columns=HBASE_ROW_KEY,f1:c1,f1:c2 tsv hdfs://node1:8020/tmp/tsv
ImportTsv工具也需要导入前HBase中已存在目标表格。
说明:Sqoop是一个用来将Hadoop和关系型数据库中的数据相互转换的数据迁移工具。HDHv1.0不包含Sqoop组件,但是兼容Apache Sqoop 1.4.2及以上版本。关于Sqoop的信息,请参见Sqoop官方网站:http://sqoop.apache.org/
数据压缩
对于存在I/O瓶颈的应用中,启用压缩是一个不错的选择。数据压缩不但节约了磁盘空间,也加快了数据传输效率。HBase支持全局设置压缩算法,也支持按列族压缩数据。全局压缩算法通过" hbase.regionserver.codecs"来设置。HBase支持的压缩算法如表5-5所示。下面的示例为列族"f1"设置GZip压缩算法。
hbase(main):010:0> distable ‘t1‘
0 row(s) in 1.0700 seconds 
hbase(main):005:0> alter ‘t1‘, {NAME => ‘f1‘, COMPRESSION =>‘GZ‘}
Updating all regions with the new schema...
1/1 regions updated.
Done.
0 row(s) in 1.2980 seconds 
hbase(main):006:0> enable ‘t1‘
0 row(s) in 2.0700 seconds
表5-5 HBase支持的压缩算法及性能比较

压缩算法

配置名

压缩率

编码效率

解码效率

LZO算法

LZO

20.5%

135 MB/s

410 MB/s

GZIP算法

GZ

13.4%

21 MB/s

118 MB/s

SNAPPY

SNAPPY

22.2%

172 MB/s

409 MB/s

添加节点
为HBase添加新的RegionServer非常简单,只需在新的节点启动新的RegionServer即可。具体步骤如下:

  1. 在新的节点部署和配置HBase
  2. 在新节点运行下述命令启动新的RegionServer

$ bin/hbase-daemon.sh start regionserver

  1. 更新集群配置,将新节点加入regionservers文件中
  2. 刷新Web UI,检查新节点是否已经加入集群

删除节点
从HBase上动态删除RegionServer节点也比较方便,具体步骤如下:

  1. 在待删除的节点运行下述命令关闭RegionServer,该命令将告知Master重新分配该RegionServer上的Region到其他RegionServer上:

$ bin/hbase-daemon.sh stop regionserver

    1. 更新集群配置,将待删除节点从regionservers文件中删除
    2. 刷新Web UI,检查该节点是否已经退出集群

hbase运维

管理工具HBaseShellHBaseShell是HBase组件提供的基于JRubyIRB的字符界面的交互式客户端程序,通过HBaseShell可以实现对HBase的绝大部分操作通过help["group-name"]命令,可以获取该组包含命令的详细使用说明hbck工具hbck工具对HBase中的数据进... 查看详情

hbase运维参考(项目)

1 Hbase日常运维1.1 监控Hbase运行状况1.1.1 操作系统1.1.1.1 IO群集网络IO,磁盘IO,HDFSIOIO越大说明文件读写操作越多。当IO突然增加时,有可能:1.compact队列较大,集群正在进行大量压缩操作。2.正在执行mapreduce作业可... 查看详情

linux企业运维——hadoop大数据平台(下)hdfs高可用yarn高可用hbase高可用(代码片段)

Linux企业运维——Hadoop大数据平台(下)hdfs高可用、Yarn高可用、hbase高可用文章目录Linux企业运维——Hadoop大数据平台(下)hdfs高可用、Yarn高可用、hbase高可用一、Hadoop高可用1.1、zoomkeeper集群部署1.2、hdfs高可用1.... 查看详情

hbase实战hbase权威指南哪本好书

...大量图片详细解剖HBase内核,还用案例展示了HBase的开发运维技巧。2、《HBase实战》:本书在介绍HBase核心工作原理的基础上,使用大量篇幅以案例的形式介绍HBase集群实践相关方法。相信通过这些方法的实践掌握,结合理论知识... 查看详情

云hbase小组成功抢救某公司自建hbase集群,挽救30+t数据

摘要:使用过开源HBase的人都知道,运维HBase是多么复杂的事情,集群大的时候,读写压力大,配置稍微不合理一点,就可能会出现集群状态不一致的情况,糟糕一点的直接导致入库、查询某个业务表不可用,甚至集群运行不了。... 查看详情

linux企业运维——hadoop大数据平台(下)hdfs高可用yarn高可用hbase高可用(代码片段)

Linux企业运维——Hadoop大数据平台(下)hdfs高可用、Yarn高可用、hbase高可用文章目录Linux企业运维——Hadoop大数据平台(下)hdfs高可用、Yarn高可用、hbase高可用一、Hadoop高可用1.1、zoomkeeper集群部署1.2、hdfs高可用1.... 查看详情

hbase集群监控的那些事儿

为什么需要监控?为了保证系统的稳定性,可靠性,可运维性。掌控集群的核心性能指标,了解集群的性能表现;集群出现问题时及时报警,便于运维同学及时修复问题;集群重要指标值异常时进行预警,将问题扼杀在摇篮中,... 查看详情

hbase存储架构

...HBase损坏的日志文件,一般都是为空的。3、/hbase/.hbckHBase运维过程中偶尔会遇到元数据不一致的情况,这时候会用到提供的hbck工具去修复,修复过程中会使用该目录作为临时过度缓冲。4、/hbase/logsHBase是支持WAL(WriteAheadLog)的,... 查看详情

hbase和mysql的区别是什么?

...层使用HDFS(存储计算分离)。由架构看到的能力差异:MySQL:运维简单(组件少)、延时低(访问路径短)HBase:扩展性好、内置容错恢复与数据冗余图片图片从引擎结构看差异图片图片相比MySQL,HBase的内部引擎特点:HBase原生没有sQL引擎(... 查看详情

初接触hbase数据库(代码片段)

...为大数据平台,数据存储在hbase数据库。由于平台没有人运维,一直都有挂掉起不来的可能,之前存储了很多图片在里面,需要及早把图片拷贝出来。看了一下历史文档,结合服务器信息,发现数据存储在hbase这个数据库中。既... 查看详情

运维的运维工程师使用的平台、工具

运维工程师使用的运维平台和工具包括:Web服务器:apache、tomcat、nginx、lighttpd监控:nagios、ganglia、cacti、zabbix自动部署:ansible、sshpt配置管理:puppet、cfengine负载均衡:lvs、haproxy传输工具:scribe、flume备份工具:rsync、wget数据库... 查看详情

运维工程师需要啥技能?

运维工程师所需基础技能:1、精通shell/Python/Perl等1至2种编程语言2、熟练掌握常用数据结构和算法,并能灵活运用3、熟悉网络基础知识4、深入理解Linux操作系统加分技能:1、熟悉开源的监控平台工具,比如:Ganglia、Nagios等2、... 查看详情

linux运维人员必知必会工具汇总

参考技术A领域:工具名称操作系统:CentOS、Ubuntu、Redhat、suse、Freebsd网站服务:nginx、apache、lighttpd、php、tomcat、resin数据库:MySQL、MariaDB、PostgreSQLDB中间件:maxscale、MyCat、atlas、cobar、amoeba、MySQL-proxy代理相关:lvs、keepalived、haproxy... 查看详情

hbase系列之初识hbase

一、概述  在hadoop生态圈里,hbase可谓是鼎鼎大名。江湖传言,hbase可以实现数十亿行X数百万列的实时查询,可横向扩展存储空间。如果传言为真,那得好好了解了解hbase。本文从概念上介绍hbase,稍微有点抽象,但这是学习hba... 查看详情

hbase记录-hbase配置项(代码片段)

hbase.tmp.dir:本地文件系统的临时目录,默认是java.io.tmpdir/hbase?java.io.tmpdir/hbase?user.name;hbase.rootdir:hbase持久化的目录,被所有regionserver共享,默认$hbase.tmp.dir/hbase,一般设置为hdfs://namenode.example.org:9000/hbase类似,带全 查看详情

hbase

三、课堂目标理解hbase的核心概念掌握hbase的特点掌握hbase的架构掌握hbase存储数据结构掌握hbase的安装部署掌握hbaseshell命令基本操作四、知识要点1.habse是什么漫画学习hbase----最易懂的Hbase架构原理解析http://developer.51cto.com/art/201904... 查看详情

hbase(代码片段)

HBase1.1HBase定义1.2HBase数据模型1.2.1HBase逻辑结构1.2.2HBase物理存储结构1.2.3数据模型1.3HBase基本架构2HBase快速入门2.1HBase安装部署2.1.1Zookeeper正常部署2.1.2Hadoop正常部署2.1.3HBase部署2.1.4HBase服务的启动2.2HBaseShell操作2.2.1基本操作2.2.2表... 查看详情

hbase(代码片段)

HBase1.1HBase定义1.2HBase数据模型1.2.1HBase逻辑结构1.2.2HBase物理存储结构1.2.3数据模型1.3HBase基本架构2HBase快速入门2.1HBase安装部署2.1.1Zookeeper正常部署2.1.2Hadoop正常部署2.1.3HBase部署2.1.4HBase服务的启动2.2HBaseShell操作2.2.1基本操作2.2.2表... 查看详情