[转]HBase hbck——检察HBase集群的一致性

Hbase提供了hbck命令来检查各种不一致问题。hbck的名字仿效了HDFS的fsck命令,后者是一个用于检查HDFS中不一致问题的工具。下面这段非常易懂的介绍出自于hbck的源程序。

检查数据在Master及RegionServer的内存中状态与数据在HDFS中的状态之间的一致性。

HBase的hbck不仅能够检查不一致问题,而且还能够修复不一致问题。

在生产环境中,应当经常运行hbck,以便及早发现不一致问题并更容易地解决问题。

一、问题

首先,在HBase上创建一张表usertable。

然后,在HDFS上直接删除usertable表的目录/hbase/usertable来删除表的数据(错误的做法)。

二、解决方法

1.hbase hbck

Status:OK,表示没有发现不一致问题。

Status:INCONSISTENT,表示有不一致问题。

2.hbase hbck -fixAssignments

Try to fix region assignments.  Replaces the old -fix

[zk: 192.168.147.15:2181(CONNECTED) 3] ls /hbase/unassigned

3.hbase hbck -fixMeta

Try to fix meta problems.  This assumes HDFS region info is good.

hbase(main):007:0>  scan ‘.META.‘

4.hbase(main):015:0> create ‘usertable‘,‘f1‘

ERROR: Table already exists: usertable!

[zk: 192.168.147.15:2181(CONNECTED) 4] ls /hbase/table

[usertable]

[zk: 192.168.147.15:2181(CONNECTED) 5] get /hbase/table/usertable

ENABLING

[zk: 192.168.147.15:2181(CONNECTED) 6] rmr /hbase/table/usertable

[zk: 192.168.147.15:2181(CONNECTED) 7] get /hbase/table/usertable

Node does not exist: /hbase/table/usertable

此时,create ‘usertable‘,‘f1‘,依然提示同样的错误。

查看ZKTable源码:

[java] view plain copy

  1. /**
  2. * Cache of what we found in zookeeper so we don‘t have to go to zk ensemble
  3. * for every query.  Synchronize access rather than use concurrent Map because
  4. * synchronization needs to span query of zk.
  5. */
  6. private final Map<String, TableState> cache =
  7. new HashMap<String, TableState>();
  8. this.cache.put(tableName, state);

把ZK中的数据缓存在本地内存中,以加速访问,减少访问时间。

为了让本地内存中的数据失效,必须重启HBase集群。

重启HBase集群。

此时,create ‘usertable‘,‘f1‘,没有提示错误,表创建成功。

三、hbck

[java] view plain copy

  1. [bigdata@tbe192168147015 ~]$ hbase hbck -h
  2. Usage: fsck [opts] {only tables}
  3. where [opts] are:
  4. -help Display help options (this)
  5. -details Display full report of all regions.
  6. -timelag {timeInSeconds}  Process only regions that  have not experienced any metadata updates in the last  {{timeInSeconds} seconds.
  7. -sleepBeforeRerun {timeInSeconds} Sleep this many seconds before checking if the fix worked if run with -fix
  8. -summary Print only summary of the tables and status.
  9. -metaonly Only check the state of ROOT and META tables.
  10. Repair options: (expert features, use with caution!)
  11. -fix              Try to fix region assignments.  This is for backwards compatiblity
  12. -fixAssignments   Try to fix region assignments.  Replaces the old -fix
  13. -fixMeta          Try to fix meta problems.  This assumes HDFS region info is good.
  14. -fixHdfsHoles     Try to fix region holes in hdfs.
  15. -fixHdfsOrphans   Try to fix region dirs with no .regioninfo file in hdfs
  16. -fixHdfsOverlaps  Try to fix region overlaps in hdfs.
  17. -fixVersionFile   Try to fix missing hbase.version file in hdfs.
  18. -maxMerge <n>     When fixing region overlaps, allow at most <n> regions to merge. (n=5 by default)
  19. -sidelineBigOverlaps  When fixing region overlaps, allow to sideline big overlaps
  20. -maxOverlapsToSideline <n>  When fixing region overlaps, allow at most <n> regions to sideline per group. (n=2 by default)
  21. -repair           Shortcut for -fixAssignments -fixMeta -fixHdfsHoles -fixHdfsOrphans -fixHdfsOverlaps -fixVersionFile -sidelineBigOverlaps
  22. -repairHoles      Shortcut for -fixAssignments -fixMeta -fixHdfsHoles -fixHdfsOrphans
时间: 2024-09-28 16:42:26

[转]HBase hbck——检察HBase集群的一致性的相关文章

HBase的多节点集群详细启动步骤(3或5节点)(分为Zookeeper自带还是外装)

HBase的多节点集群详细启动步骤(3或5节点)分为: 1.HBASE_MANAGES_ZK的默认值是false(zookeeper外装)(推荐) 2.HBASE_MANAGES_ZK的默认值是true(zookeeper自带) 1.HBASE_MANAGES_ZK的默认值是false(推荐) 伪分布模式下,如(weekend110) hbase-env.sh配置文档中的HBASE_MANAGES_ZK的默认值是true,它表示HBase使用自身自带的Zookeeper实例.但是,该实例只能为单

HBase 2.1.3 集群 web 报错InvalidProtocolBufferException 解决方法

搭建好HBase 集群后,各种后台进程都正常,搭建手册参考: Hbase 2.1.3 集群搭建手册https://www.cndba.cn/dave/article/3322 但是通过web访问,却报如下错误: 2019-03-05 23:13:49,508 WARN [qtp1911600942-82] servlet.ServletHandler: /master-status java.lang.IllegalArgumentException: org.apache.hbase.thir

hbase 0.98.1集群安装

本文将基于hbase 0.98.1解说其在linux集群上的安装方法,并对一些重要的设置项进行解释,本文原文链接:http://blog.csdn.net/bluishglc/article/details/24593597,转载请注明出处. 1. 安装与配置 1.1. 前置条件 确保已经安装了hadoop并保证hadoop运行正常.关于hbase与hadoop的版本号依赖关系,请參考:  https://hbase.apache.org/book/configuration.html#hado

HBase的单节点集群详细启动步骤(分为Zookeeper自带还是外装)

伪分布模式下,如(weekend110)hbase-env.sh配置文档中的HBASE_MANAGES_ZK的默认值是true,它表示HBase使用自身自带的Zookeeper实例.但是,该实例只能为单机或伪分布模式下的HBase提供服务. 若是分布式模式,则需要配置自己的Zookeeper集群.如(HadoopMaster.HadoopSlave1.HadoopSlave2)hbase-env.sh配置文档中的HBASE_MANAGES_ZK的默认值是true,它表示,分布式模式里,在启动HB

HBase混布MapReduce集群学习记录

一.准备工作 1.1 部署环境 集群规模大概260多台,TSC10机型,机型参数如下: > 1个8核CPU(E5-2620v4) > 64G内存 > HBA,12*4T SATA,1*240G SSD, > 2*10G网口 1.2 机器分配 HBase和Hadoop的主结点共用,子结点也共用. 角色 机型 数量 HBase Master&Hadoop Namenode B6 2 HBase RegionServer&Hadoop Datanode TSC10 265

用于KV集群的一致性哈希Consistent Hashing机制

KV集群的请求分发 假定N为后台服务节点数,当前台携带关键字key发起请求时,我们通常将key进行hash后采用模运算 hash(key)%N 来将请求分发到不同的节点上, 后台节点的增删会引起几乎所有key的重新映射, 这样会造成大量的数据迁移,如果数据量大的话会导致服务不可用. 一致性哈希机制 我倾向于称之为一致性哈希机制而不是算法, 因为这其实和算法没太大关系. 设计这种机制的目的是当节点增减时尽量减小重新映射的key的数量, 尽量将key还映射到原来的节点上. 而对于一致性哈希机制, 如

zookpeer 和 redis 集群内一致性协议 及 选举 对比

zookeeper 使用的是zab协议,类似 raft 的 Strong Leader 模式 redis 的哨兵 在  崩溃选举的时候采用的是 raft的那一套term. 因为redis 采用的是异步数据副本的节点同步方式,所以在做分布式锁的时候可能会存在 setNx之后,没有同步到从节点,主节点崩溃,而这时客户端又从从节点读取数据,导致同步锁设置失败(写入都是master节点).当然作者提供了redLock 在时间内 挨个节点设置锁的形式.具体意思及实现可以参考redssion中的. 反观zk

Hbase集群搭建及所有配置调优参数整理及API代码运行

最近为了方便开发,在自己的虚拟机上搭建了三节点的Hadoop集群与Hbase集群,hadoop集群的搭建与zookeeper集群这里就不再详细说明,原来的笔记中记录过.这里将hbase配置参数进行相应整理,方便日后使用. 首先vi ~/.bash_profile将hbase的环境变量进行配置,最后source ~./bash_profile使之立即生效 1.修改hbase-env.sh 由于我使用的是外置的zookeeper,所以这里HBASE_MANAGES_ZK设置为,设置参数: # The

分布式实时日志系统(四) 环境搭建之centos 6.4下hbase 1.0.1 分布式集群搭建

一.hbase简介 HBase是一个开源的非关系型分布式数据库(NoSQL),它参考了谷歌的BigTable建模,实现的编程语言为 Java.它是Apache软件基金会的Hadoop项目的一部分,运行于HDFS文件系统之上,为 Hadoop 提供类似于BigTable 规模的服务.因此,它可以容错地存储海量稀疏的数据.HBase在列上实现了BigTable论文提到的压缩算法.内存操作和布隆过滤器.HBase的表能够作为MapReduce任务的输入和输出,可以通过Java API来存取数据,也可以