HBase运维

管理工具

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,检查该节点是否已经退出集群
时间: 2024-10-13 15:24:34

HBase运维的相关文章

Hbase运维参考(项目)

1 Hbase日常运维 1.1 监控Hbase运行状况 1.1.1 操作系统 1.1.1.1 IO 群集网络IO,磁盘IO,HDFS IO IO越大说明文件读写操作越多.当IO突然增加时,有可能:1.compact队列较大,集群正在进行大量压缩操作. 2.正在执行mapreduce作业 可以通过CDH前台查看整个集群综合的数据或进入指定机器的前台查看单台机器的数据: Io wait 磁盘IO对集群的影响比较大,如果io wait时间过长需检查系统或磁盘是否有异常.通常IO增加时io wait也会

HBase(五): HBase运维管理

HBase自带的很多工具可用于管理.分析.修复和调试,这些工具一部分的入口是hbase shell 客户端,另一部分是在hbase的Jar包中. 目录: hbck hfile 数据备份与恢复 Snapshots Replication Export CopyTable HTable API Offline backup of HDFS data hbck: hbck 工具用于Hbase底层文件系统的检测与修复,包含Master.RegionServer内存中的状态及HDFS上数据的状态之间的一致

HBase运维——彻底删除HBase数据

1.hadoop的bin目录下,执行命令以下命令清除Hbase数据 hadoop fs -rm -r /hbase 2.连接ZK,执行以下命令清除Hbase数据 rmr /hbase 3.重启ZK.重启hadoop(hdfs.yarn).重启hbase 原文地址:https://www.cnblogs.com/caoweixiong/p/11747321.html

公开课|一个小运维的《Golang 入门心路历程》

成功不是将来才有的,而是从决定去做的那一刻起,持续累积而成. 视频版 公开课主要内容: 缘起 初识 熟悉 实践 爱上 缘起 本人之前是 hadoop hbase 运维,为了节约成本 hadoop client 都是多用户的,也就是不同的业务线在同一台机器上.导致一个问题就是一个业务资源占用高,跑死其他业务线.在这种情况下我就想如何解决这个问题呢?这时候我接触到了 Docker--实现资源隔离.随着对Docker的深入了解以及身边人经常谈论 Go 语言,我感觉 Go 语言很牛,平时开始慢慢关注 G

Linux运维学习路线

linux学习路线 Linux入门 Linux系统管理 Linux服务及安全管理 Http:lamp/lnmp Cache:memcached,vanishDB:mysql/mariadb Linux集群:LB:Nginx,LvsHA:keeplived Http进阶:tomcat.mogileFS,GlusterFS(分布式存储)LB:haproxy HA:corosync+pacemaker,pcs/crmshMySQL:HA集群,备份恢复,主从复制,读写分离Nosql:redis,mong

Hbase 日常运维

1.1监控Hbase运行状况 1.1.1操作系统 1.1.1.1IO a.群集网络IO,磁盘IO,HDFS IO IO越大说明文件读写操作越多.当IO突然增加时,有可能:1.compact队列较大,集群正在进行大量压缩操作. 2.正在执行mapreduce作业 可以通过CDH前台查看整个集群综合的数据或进入指定机器的前台查看单台机器的数据: b.Io wait 磁盘IO对集群的影响比较大,如果io wait时间过长需检查系统或磁盘是否有异常.通常IO增加时io wait也会增加,现在FMS的机器

运维角度浅谈:MySQL数据库优化

日志君导读: 一个成熟的数据库架构并不是一开始设计就具备高可用.高伸缩等特性的,它是随着用户量的增加,基础架构才逐渐完善. 作者:zhenliang8,本文转自51CTO博客,点击原文阅读查看网页版文章. 本博文主要谈MySQL数据库发展周期中所面临的问题及优化方案,暂且抛开前端应用不说,大致分为以下五个阶段: 1.数据库表设计 项目立项后,开发部根据产品部需求开发项目,开发工程师工作其中一部分就是对表结构设计.对于数据库来说,这点很重要,如果设计不当,会直接影响访问速度和用户体验.影响的因素很

Linux系统运维与架构设计

一 本章概览 介绍Linux系统运维与架构设计的方方面面 二 Linux基础入门 认识计算机核心硬件和服务器 Linux发展历史.系统组成.应用领域以及发行版 搭建运维环境:VMWareWorkStation.SecureCRT的使用 Linux系统的基本使用 Shell入门以及命令概述 三 Linux系统管理 文件目录管理 用户管理 权限管理 VIM编辑器的使用 文档压缩打包 程序包管理 网络管理 文件系统管理 内存管理 系统管理(监控.环境变量) 安全管理(selinux,iptables)

运维老鸟分享-学好Linux技术大绝招

随着互联网的飞速发展,越来越多的人开始学习Linux技术,很多初学者面对Linux技术的海洋无从下手,近10年一线互联网运维老鸟为菜鸟总结了学好Linux技能的大绝招: 1.基于vmware虚拟机安装Linux操作系统,首选CentOSLinux操作系统; 2.初学者完成Linux系统分区及安装之后,需熟练掌握Linux系统管理必备命令,命令包括:cd.ls.pwd.clear.chmod.chown.chattr.useradd.userdel.groupadd.vi.vim.cat.more