`

HBase .META. Region启动不成功

 
阅读更多

启动region server的时候报如下错误:

 

2013-09-09 11:23:05,863 DEBUG org.apache.hadoop.hbase.regionserver.HRegionServer: NotServingRegionException; Region is not online: -ROOT-,,0
2013-09-09 11:23:08,874 DEBUG org.apache.hadoop.hbase.regionserver.HRegionServer: NotServingRegionException; Region is not online: -ROOT-,,0
2013-09-09 11:23:11,898 DEBUG org.apache.hadoop.hbase.regionserver.HRegionServer: NotServingRegionException; Region is not online: -ROOT-,,0
2013-09-09 11:24:15,344 DEBUG org.apache.hadoop.hbase.io.hfile.LruBlockCache: Stats: total=2.05 MB, free=247.44 MB, max=249.48 MB, blocks=0, accesses=0, hits=0, hitRatio=0, cachingAccesses=0, cachingHits=0, cachingHitsRatio=0, evictions=0, evicted=0, evictedPerRun=NaN
2013-09-09 11:24:19,977 ERROR org.apache.hadoop.hbase.regionserver.wal.HLog: Can't open after 300 attempts and 300518ms  for hdfs://opentsdb:8020/hbase/.logs/opentsdb,60020,1378358082016-splitting/opentsdb%2C60020%2C1378358082016.1378397697610
2013-09-09 11:24:19,978 INFO org.apache.hadoop.hbase.regionserver.wal.HLogSplitter: Processed 0 edits across 0 regions threw away edits for 0 regions; log file=hdfs://opentsdb:8020/hbase/.logs/opentsdb,60020,1378358082016-splitting/opentsdb%2C60020%2C1378358082016.1378397697610 is corrupted = false progress failed = false
2013-09-09 11:24:19,978 WARN org.apache.hadoop.hbase.regionserver.SplitLogWorker: log splitting of hdfs://opentsdb:8020/hbase/.logs/opentsdb,60020,1378358082016-splitting/opentsdb%2C60020%2C1378358082016.1378397697610 failed, returning error
java.io.IOException: Cannot obtain block length for LocatedBlock{BP-17274449-192.168.0.75-1376541308222:blk_4420133534962983319_1645; getBlockSize()=0; corrupt=false; offset=0; locs=[192.168.0.75:50010]}
    at org.apache.hadoop.hdfs.DFSInputStream.readBlockLength(DFSInputStream.java:319)
    at org.apache.hadoop.hdfs.DFSInputStream.fetchLocatedBlocksAndGetLastBlockLength(DFSInputStream.java:263)
    at org.apache.hadoop.hdfs.DFSInputStream.openInfo(DFSInputStream.java:205)
    at org.apache.hadoop.hdfs.DFSInputStream.<init>(DFSInputStream.java:198)
    at org.apache.hadoop.hdfs.DFSClient.open(DFSClient.java:1117)
    at org.apache.hadoop.hdfs.DistributedFileSystem.open(DistributedFileSystem.java:249)
    at org.apache.hadoop.hdfs.DistributedFileSystem.open(DistributedFileSystem.java:82)
    at org.apache.hadoop.io.SequenceFile$Reader.openFile(SequenceFile.java:1787)
    at org.apache.hadoop.hbase.regionserver.wal.SequenceFileLogReader$WALReader.openFile(SequenceFileLogReader.java:62)
    at org.apache.hadoop.io.SequenceFile$Reader.<init>(SequenceFile.java:1707)
    at org.apache.hadoop.io.SequenceFile$Reader.<init>(SequenceFile.java:1728)
    at org.apache.hadoop.hbase.regionserver.wal.SequenceFileLogReader$WALReader.<init>(SequenceFileLogReader.java:55)
    at org.apache.hadoop.hbase.regionserver.wal.SequenceFileLogReader.init(SequenceFileLogReader.java:177)
    at org.apache.hadoop.hbase.regionserver.wal.HLog.getReader(HLog.java:713)
    at org.apache.hadoop.hbase.regionserver.wal.HLogSplitter.getReader(HLogSplitter.java:825)
    at org.apache.hadoop.hbase.regionserver.wal.HLogSplitter.getReader(HLogSplitter.java:738)
    at org.apache.hadoop.hbase.regionserver.wal.HLogSplitter.splitLogFile(HLogSplitter.java:382)
    at org.apache.hadoop.hbase.regionserver.wal.HLogSplitter.splitLogFile(HLogSplitter.java:350)
    at org.apache.hadoop.hbase.regionserver.SplitLogWorker$1.exec(SplitLogWorker.java:115)
    at org.apache.hadoop.hbase.regionserver.SplitLogWorker.grabTask(SplitLogWorker.java:283)
    at org.apache.hadoop.hbase.regionserver.SplitLogWorker.taskLoop(SplitLogWorker.java:214)
    at org.apache.hadoop.hbase.regionserver.SplitLogWorker.run(SplitLogWorker.java:182)
    at java.lang.Thread.run(Thread.java:662)

 

从错误上可以看出,ROOT Region没在线, Region Server的拆分HLog的时候,由于获取HLog的长度时,发生错误,导致失败.查询Region Server状态的时候,发现确实没有.META. Region,猜测该HLog文件损坏了.

hbase hlog /hbase/.logs/opentsdb,60020,1378358082016-splitting/opentsdb%2C60020%2C1378358082016.1378397697610

查看HLog,和上面报的错误时一样的,删除该log文件,hadoop fs -rmr /hbase/.logs/opentsdb,60020,1378358082016-splitting/opentsdb%2C60020%2C1378358082016.1378397697610

重新启动Region Server就可以了,问题的原因是,用户在向Hbase插入数据时,强制停掉了RS,使HLog文件出错.

在网上查看Region is not online: -ROOT-,,0相关的错误,也没有得到正确的答案,后来看了一下源码,报这个错误的地方是在:

protected HRegion getRegion(final byte[] regionName)
      throws NotServingRegionException {
    HRegion region = null;
    region = getOnlineRegion(regionName);
    if (region == null) {
      throw new NotServingRegionException("Region is not online: " +
        Bytes.toStringBinary(regionName));
    }
    return region;
  }

也就是说,regionName不再Map中,就会报这个错误,具体问题还得具体分析

分享到:
评论

相关推荐

    hbase-meta-repair-hbase-2.0.2.jar

    HBase 元数据修复工具包。 ①修改 jar 包中的application.properties,重点是 zookeeper.address、zookeeper.nodeParent、hdfs....③开始修复 `java -jar -Drepair.tableName=表名 hbase-meta-repair-hbase-2.0.2.jar`

    hbase资料_hbase-default.xml.zip

    1. **HBase元数据存储**:HBase的元数据存储在HBase的Meta表中,这些信息包括表名、列族、Region位置等。`hbase.rootdir`配置项定义了HDFS上的目录,用于存储HBase的数据和元数据。 2. **RegionServer配置**:`...

    HBase配置文件若干配置.zip

    `hbase.meta.replicas.count`用于设置meta表的副本数量,这可以提高meta表的可用性和容错性,但也会占用更多存储资源。 此外,还有许多其他的配置项,如`hbase.hregion.split.policy`(分裂策略)、`hbase.hregion....

    大数据技术之HBase.docx

    - **.META.**:记录用户表的Region信息,.META.本身也可以被分割成多个Region。 - **-ROOT-**:记录了.META.表的Region信息,-ROOT-通常只包含一个Region。需要注意的是,在0.96版本及以后,HBase移除了-ROOT-表,...

    Hbase

    当HBase启动时,`HMaster`组件负责初始化系统并分配`Region`给各个`HRegionServers`。这其中包括分配-ROOT-和.META.等特殊的Region。 1. **Region分配**:`HMaster`启动后,会向各个`HRegionServers`分配Region。...

    4_HBase.docx

    - **Region**:HBase中数据存储的基本单元,相当于关系型数据库中的分区或分片。 - **Store**:Region内部的数据存储结构,由一个MemStore和多个StoreFile组成。 - **MemStore**:内存中的数据缓存区域,用于暂存...

    HBase2.x之RIT问题解决.docx

    delete 'hbase:meta', 'rowkey', 'column' 最后,重启HBase,删除Zookeeper节点/hbase节点。 解决HBase 2.x中的RIT问题需要根据实际情况选择合适的解决方案,并且需要小心地操作,以免造成更大的问题。

    20211214自学总结版本--HBase.doc

    Region 是 HBase 数据的物理分区,随着数据增长,Region 可自动分裂以保持性能。RegionServer 管理多个 Region,并处理客户端的读写请求。 9. **RowKey 设计** RowKey 是数据访问的主要索引,合理的RowKey设计...

    HBase架构简介.pdf

    当HBase启动时,HMaster会将`.ROOT.`和`.META.`表的region分配给HRegionServer(RS)。每个RS管理多个region,并为每个region创建一个HRegion对象。每个HRegion根据列族(HColumnFamily)创建Store,每个Store包含一...

    大数据技术之HBase.doc

    - **Client**:提供访问HBase的接口,维护缓存,如.META.元数据,以提高访问速度。 - **Zookeeper**:在HBase中,Zookeeper负责master的高可用,RegionServer的监控,元数据的入口以及集群配置的维护。 - **...

    清华大学精品大数据实战课程(Hadoop、Hbase、Hive、Spark)PPT课件含习题(59页) 第3章 Hadoop数据库HBase.pptx

    HBase的数据定位依赖于ZooKeeper中的ROOT和.META.表,它们存储了所有HRegion的位置信息,使得客户端能快速找到所需数据。 2. **HBase数据模型** - **表(Table)**:由一行或多行组成,每个表有明确的列族定义。...

    HBase技术介绍.docx

    ### HBase技术详解 #### 一、HBase概述 **HBase**,全称为Hadoop Database,是一款构建在Hadoop之上、面向列的分布式数据库系统。它具备高可靠性、高性能和可扩展性等特点,能够在成本相对低廉的硬件设备上构建大...

    HBase文档.doc

    1. **Client**:客户端提供了访问HBase的接口,并缓存如.META.元数据信息以提高访问速度。 2. **Zookeeper**:HBase依赖Zookeeper来实现主节点的高可用性,监控RegionServer状态,以及维护元数据的入口和集群配置。...

    hbase安装与hbase架构说明

    HBase中的多个HMaster通过Zookeeper的Master Election机制来确定主HMaster,主HMaster负责管理表和Region的生命周期,包括表的创建、删除、分区以及Region的迁移等。 HRegionServer是HBase的核心组件,它们直接处理...

    Hadoop之Hbase从入门到精通.doc

    HBase中有两张特殊的Table,-ROOT-和.META.,其中.META.记录了用户表的Region信息,.META.可以有多个region,而-ROOT-记录了.META.表的Region信息,-ROOT-只有一个region。 HBase是一个功能强大且高效的分布式存储...

    hbase-hbck2-1.0.0.jar

    Q:如果一个region即不在META表中,又不在hdfs上面,但是在regionserver的online region集合中 A:加上选项 -fixAssignments 解决 Q:如果一个region在META表中,并且在regionserver的online region集合中,但是...

    hbase的rowkey设计与hbase的协处理器运用.docx

    1. 客户端根据配置文件中的 zookeeper 地址连接 zookeeper,并读取/&lt;hbase-rootdir&gt;/meta-region-server 节点信息。 2. 根据 hbase:meta 所在 RegionServer 的访问信息,客户端会将该元数据表加载到本地并进行缓存。...

    Hadoop之Hbase从入门到精通 .doc

    * .META.:记录了用户表的 Region 信息,.META.可以有多个 region。 * -ROOT-:记录了.META.表的 Region 信息,-ROOT-只有一个 region。 * Zookeeper 中记录了-ROOT-表的 location。 Client 访问用户数据之前需要...

Global site tag (gtag.js) - Google Analytics