`
亦梦亦真
  • 浏览: 229599 次
  • 性别: Icon_minigender_1
  • 来自: 秦皇岛
社区版块
存档分类
最新评论

hbase集群维护总结

 
阅读更多

                                                                    hbase集群维护总结

1、集群故障现象以及解决方法

 

故障现象

解决方法

“hbase shell”命令无法显示list以及meta丢失

查看集群hbase的regionserver日志;一般重启hbase

Hbase表显示不全

“Hbase hbck”命令查看具体细节,很有可能有”no empty start key”的错误

First region should start with an empty key

hbase 5599;创建一个新的region,startkey为空

“hbase hbck”产生黑洞和 Found inconsistency

1.  移出hbase表报错和不一致的region块到hdfs的自定义文件夹

2.  从 .META.表中delete对应的错误和不一致块

3.  Merge上一个region的 endkey和下一个region的startkey不一致的region块;merge时需要停hbase/disable table

Hbase merge时,提示hbase-site.xml中fs.default.name配置错误

需要配置fs.default.name项和core-site.xml一致

 

 

 

2、附具体操作:

Ø  找出“hbase hbck”产生黑洞和 Found inconsistency的region块脚本。

 

Ø  “hbase hbck”产生黑洞和 Found inconsistency的region块放到一起并从.META.表删除的脚本,hbase_mvdelete_region.sh:

 

#!/bin/bash

 

Files=`hadoop fs -ls /tmp | awk '{print$8}'`

 

for file in $Files

do

 

#get the block rowkey

 

rowkey=`hadoop fs -cat $file/.regioninfo | awk -F "REGION => {NAME => '" '{print $2}'  | awk -F "', STARTKEY" '{print $1}' | awk END'{print $0}'`

 

#1:delete region block

echo "deleteall '.META.', '$rowkey'" | hbase shell

 

#2: mv tmp block

hadoop fs -mv $file /done

 

done

 

 

Ø  找出表对应region的startkey和endkey, hbase_region.sh,为merge做准备:

 

#!/bin/bash

if [ $# -ne 2 ]

then

        echo "usage:/done /hbase/ACC_ZDR param => 2"

        exit 1

fi

 

#/done, /hbase/ACC_ZDR

badfiles=`hadoop fs -ls $1 | awk '{print$8}'`

 

 

for file in $badfiles

do

tablename=`hadoop fs -cat $file/.regioninfo | awk -F "REGION => {NAME => '" '{print $2}' | awk -F ',' '{print $1}' | awk END'{print $0}'`

regionname=`hadoop fs -cat $file/.regioninfo | awk -F " ENCODED => " '{print $2}'  | awk -F ", TABLE =>" '{print $1}' | awk END'{print $0}'`

startkey=`hadoop fs -cat $file/.regioninfo | awk -F "STARTKEY => '" '{print $2}'  | awk -F "', ENDKEY" '{print $1}' | awk END'{print $0}'`

endkey=`hadoop fs -cat $file/.regioninfo | awk -F "ENDKEY => '" '{print $2}'  | awk -F "', ENCODED" '{print $1}' | awk END'{print $0}'`

 

#ctr+v+tab=>"\t"

echo "$startkey      $endkey   $regionname   $tablename     0" >> /home/hadoop/hbase_merge.txt

done

 

#/hbase/ACC_ZDR

goodfiles=`hadoop fs -ls $2 | awk '{print$8}'`

 

 

for file in $goodfiles

do

tablename=`hadoop fs -cat $file/.regioninfo | awk -F "REGION => {NAME => '" '{print $2}' | awk -F ',' '{print $1}' | awk END'{print $0}'`

regionname=`hadoop fs -cat $file/.regioninfo | awk -F " ENCODED => " '{print $2}'  | awk -F ", TABLE =>" '{print $1}' | awk END'{print $0}'`

startkey=`hadoop fs -cat $file/.regioninfo | awk -F "STARTKEY => '" '{print $2}'  | awk -F "', ENDKEY" '{print $1}' | awk END'{print $0}'`

endkey=`hadoop fs -cat $file/.regioninfo | awk -F "ENDKEY => '" '{print $2}'  | awk -F "', ENCODED" '{print $1}' | awk END'{print $0}'`

 

#ctr+v+tab=>"\t"

echo "$startkey      $endkey   $regionname   $tablename     1" >> /home/hadoop/hbase_merge.txt

done

 

sort -t $'\t' -k 4,1 /home/hadoop/hbase_merge.txt > /home/hadoop/result_hbase_merge.txt

 

 

Ø  Merge命令:hbase org.apache.hadoop.hbase.util.Merge tablename region1 region2

例如:“hbase org.apache.hadoop.hbase.util.Merge CHAT_INFO  'CHAT_INFO,1328275311100000000229959,1329200178825.1aebf5e813a21d329911e84fc2bc7229.''CHAT_INFO,1326276556100000000059123,1328873143348.2c544bbaa549746ebd43aa2e6288c584.'”

 

Ø  Hbase-site.xml中参数fs.default.name配置如下:

 

<property>

  <name>fs.default.name</name>

  <value>hdfs://master0:9000</value>

  </property>

 

 

Ø  创建新的region块:

列举所有配置了zookeeper节点,以逗号分割conf.set("hbase.zookeeper.quorum", args[0]);//master0,slave1,slave2

 

package com.run.hbase.dataImport;

 

import java.io.IOException;

 

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.hbase.HBaseConfiguration;

import org.apache.hadoop.hbase.HColumnDescriptor;

import org.apache.hadoop.hbase.HConstants;

import org.apache.hadoop.hbase.HRegionInfo;

import org.apache.hadoop.hbase.HTableDescriptor;

import org.apache.hadoop.hbase.MasterNotRunningException;

import org.apache.hadoop.hbase.ZooKeeperConnectionException;

import org.apache.hadoop.hbase.client.HBaseAdmin;

import org.apache.hadoop.hbase.client.HTable;

import org.apache.hadoop.hbase.client.Put;

import org.apache.hadoop.hbase.util.Bytes;

import org.apache.hadoop.hbase.util.Writables;

 

public class CreateRegion {

    public static HTable getMetaTable(Configuration conf) throws IOException {

       return new HTable(conf, HConstants.META_TABLE_NAME);

    }

 

    public static HBaseAdmin getHBaseAdmin(Configuration conf) throws MasterNotRunningException,

           ZooKeeperConnectionException {

       return new HBaseAdmin(conf);

    }

 

    public static void createEmptyRegion(Configuration conf, HTableDescriptor tblDes,

           byte[] startKey, byte[] endKey) throws IllegalArgumentException, IOException,

           InterruptedException {

       HRegionInfo hri = new HRegionInfo(tblDes, startKey, endKey);

       Put put = new Put(hri.getRegionName());

       put

              .add(HConstants.CATALOG_FAMILY, HConstants.REGIONINFO_QUALIFIER, Writables

                     .getBytes(hri));

 

       HTable metatable = getMetaTable(conf);

       metatable.put(put);

       HBaseAdmin admin = getHBaseAdmin(conf);

       // flush .META. data to hdfs.

       admin.flush(metatable.getTableName());

       admin.assign(hri.getRegionName(), true);

    }

 

    public static void main(String[] args) {

       System.out.println("masterip  2181  startkey  endkey tablename columnfamily");

 

       Configuration conf = HBaseConfiguration.create();

       conf.set("hbase.zookeeper.quorum", args[0]);//master0,slave1,slave2

       conf.set("hbase.zookeeper.property.clientPort", args[1]);

       conf.set("hbase.master", args[0] + ":60000");

 

       HTableDescriptor tblDes = new HTableDescriptor(args[4]);

       HColumnDescriptor cf = new HColumnDescriptor(args[5]);

       tblDes.addFamily(cf);

 

       byte[] startKeys = Bytes.toBytes(args[2]);

       byte[] endKeys = Bytes.toBytes(args[3]);

 

       try {

           createEmptyRegion(conf, tblDes, startKeys, endKeys);

       } catch (IllegalArgumentException e) {

           e.printStackTrace();

       } catch (IOException e) {

           e.printStackTrace();

       } catch (InterruptedException e) {

           e.printStackTrace();

       }

    }

}

分享到:
评论

相关推荐

    Hbase集群部署.pdf

    HBase是一个开源、面向列的、可伸缩的分布式存储系统,它基于Google的Bigtable模型构建,用于存储...随着对HBase集群部署知识的掌握,可以使运维人员更加高效地管理和维护HBase集群,保证数据存储的高性能和高可靠性。

    Hadoop Zookeeper HBase集群

    总结起来,"Hadoop Zookeeper HBase集群"是大数据处理的一种架构,通过Hadoop进行数据存储和处理,利用Zookeeper进行集群管理和协调,以及借助HBase实现大规模数据的实时查询。理解和熟练掌握这三个组件的原理和使用...

    Hbase完全分布式集群搭建(详细+,看完就会,).docx

    * ZooKeeper:负责维护 HBase 集群的元数据,例如节点的状态、Region 信息等。 * HRegion:HBase 的基本存储单元,包含多个 Store,Store 中包含多个 MemStore 和 StoreFile。 二、HBase 组件 HBase 的组件包括: ...

    Hadoop+Zookeeper+Hbase集群搭建

    ### Hadoop+Zookeeper+Hbase集群搭建知识点详解 #### 一、安装环境要求 **1.1 HBase与JDK兼容性** - **Apache HBase** 的版本选择需考虑其与 Java Development Kit (JDK) 的兼容性。具体而言: - Apache HBase ...

    超全的HBase知识体系总结.pdf

    通过适当调优,可以显著提升HBase集群的性能。 13. HBase大厂面试题解析部分未在提供的内容中显示,但通常会涉及到HBase架构、性能调优、数据模型等重要知识点。面试题的解析可以帮助应聘者更深入地理解HBase,为...

    hbase-2.4.17-bin 安装包

    1. 使用HBase自带的JMX监控工具或第三方监控工具(如Ambari、Grafana)监控HBase集群的性能指标。 2. 定期进行健康检查,排查可能存在的问题,如Region不均、内存溢出等。 3. 对HBase进行定期备份,以防数据丢失。...

    Hbase文档总结

    HBase利用Zookeeper作为协调服务,确保集群的稳定运行,包括Master选举、Region Server状态监控以及Schema存储等。 客户端(Client)是与HBase交互的接口,它维护了一些缓存以加速访问,如Region的位置信息。...

    hadoop+hbase+hive集群搭建

    在构建Hadoop+HBase+Hive集群的过程中,涉及了多个关键步骤和技术要点,下面将对这些知识点进行详细的解析。 ### 1. 时间同步:NTP配置 在分布式系统中,时间的一致性至关重要,特别是在处理日志、事件排序以及...

    hbase数据可视化系统

    2. 配置HBase:在application.properties或yaml文件中设置HBase的连接信息,包括Zookeeper地址、HBase集群地址等。 3. 创建Repository:利用Spring Data的接口编程模式,创建HBase的Repository接口,定义基本的CRUD...

    hbase入门和使用

    - Master:负责Region的分配和管理工作,也负责维护整个HBase集群的状态。 - HDFS:负责HBase的数据存储和备份,保证数据的持久性和可靠性。 - Zookeeper:是一个分布式的协调服务,用于监控RegionServer的上下线,...

    搭建HBase完全分布式数据库

    6. ZooKeeper:作为协调服务,负责管理ROOT表和META表,这些表存储了HBase中表的元数据信息,同时它还负责监控HBase集群中的节点状态,以及故障转移时HMaster的选举。 三、HBase数据库模型: HBase的数据模型设计为...

    HBase数据库设计.doc

    在大数据量下,关系型数据库的扩展困难和维护复杂度高,而HBase则提供了更好的解决方案。但HBase不支持SQL,需要开发者更深入地理解数据存储和检索方式。 HBase的数据模式由行键(RowKey)、列族(ColumnFamily)、...

    hbase安装lzo压缩包的编译文件master

    7. **注意Master节点的角色**:在HBase集群中,Master节点负责全局的协调和管理任务,包括区域分配、元数据维护等。虽然LZO的编译和配置主要涉及到数据存储层面,但Master节点在数据读写过程中起着调度作用,确保LZO...

    Hadoop+Hbase搭建云存储总结

    - **Hbase部署:** 在Hadoop集群的基础上安装Hbase,并配置Master节点和RegionServer。 - **数据迁移与同步:** 将现有数据迁移到HDFS中,并在Hbase中建立相应的表结构。 - **系统优化:** 根据业务需求调整HDFS...

    Hadoop集群搭建总结

    ### Hadoop集群搭建总结 #### 一、Hadoop概述与应用场景 Hadoop是一个由Apache基金会维护的开源分布式计算框架,其主要目标是处理大规模数据集的存储与计算问题。通过Hadoop,用户能够轻松地在分布式环境中开发和...

    HBASE 完整教程.docx

    主服务器负责全局的协调工作,包括区域分配、负载均衡、集群状态监控以及模式变更等元数据操作。区域服务器则是实际承载数据服务的实体,它们处理来自客户端的读写请求,管理各自负责的区域。 主服务器利用Apache ...

Global site tag (gtag.js) - Google Analytics