• Hbase 元数据一致性检查(转)


    最近在学习HBase先关的知识,顺便做一下笔记,以加深知识的了解和掌握。

    Hbase常用工具

    文件检测修复工具

    hbase hbck -help

    常用选项:

    -details 显示所有region检查的完整报告

    -summary 输出表和状态的总结信息

    -metaonly 只检查-ROOT-和.META.表

    -fixAssignments 用于修复Region分配错误

    -fixMeta 用于修复.META.表的问题(前提是HDFS上的region信息是正确的)

    -fixHdfsHoles 修复RegionHoles问题

    -fixHdfsOrphans 修复Orphan Region(HDFS上没有.regioninfo的Region)

    -fixHdfsOverlaps 修复Region区间重叠的问题

    -fixVersionFile 修复缺失hbase.version文件问题

    快速修复元数据选项

    -repair 相当于-fixAssignments -fixMeta -fixHdfsHoles -fixHdfsOrphans -fixHdfsOverlaps -fixVersionFile -sidelineBigOverlaps

    -repairHoles 相当于-fixAssignments -fixMeta -fixHdfsHoles -fixHdfsOrphans

    检测Hbase集群是否有文件损坏

    hbase hbck

    hbase hbck -details

    快速修复元数据损坏

    使用快速修复元数据选项是解决不一致问题风险最低的一种方法

    hbase hbck -repair

    hbase hbck -repairHoles

    修复Region叠加的问题(风险系数高)

    hbase hbck -fixHdfsOrphans

    #合并region的时候,一次最大合并3个

    hbase hbck -fixHdfsOverlaps -maxMerge 3

    hbase hbck -fixHdfsOverlaps -sidelineBigOverlaps

    #一组中最多允许4个region不参与

    hbase hbck -fixHdfsOverlaps -maxOverlapsToSideline 4

    修复.META.表没有正确分配

    hbase hbck -fixMetaOnly -fixAssignments

    修复版本(hbase.version)丢失的问题

    hbase hbck -fixMetaOnly -fixVersionFile

    修复-ROOT-和.META.表损坏

    当-ROOT-和.META.表损坏的时候,HBase将启动失败,这种情况下要使用OFFlineMetaRepair工具创建新的-ROOT-和.META.表。该工具的工作原理是找到HBase在HDFS的主目录,加载Region的元数据文件信息,然后重新创建新的-ROOT-和.META.表,命令如下:

    hbase org.apache.hadoop.hbase.util.OffileMetaRepair


    hfile文件查看

    hbase hfile -v -p -f hiflepath/hiflename

    WAL日志查看

    hbase hlog -j hlogpath/hlogfilename


    数据迁移工具

    CopyTable  用于在同集群内部或者集群之间复制表的部分或者全部数据的工具

    export 可以将表的内容导出成HDFS的序列化文件

    import 可以加载导出数据回HBase

    WALPlayer 日志回放工具,可以重放WAL文件到HBase


    Region和RegionServer的管理

    major_compact一般会对IO有比较大的影响,因此一般禁用线上系统的自动大合并(配置文件中hbase.hregion.majorcompaction设为0),而采用脚步触发的方式来进行合并

    major_compact可以对表、region、列族等进行合并,常用的是对表和对表的单个region进行大合并,命令如下:

    对表进行大合并

    major_compact 'tablename'

    对表的单个region进行大合并

    major_compact 'regionname' #tablename


    下线regionServer节点

    balance_switch false

    cd  /data/hbaseadmin/hbaseenv/hbase/bin;  ./hbase-daemon.sh stop regionserver

    RegionServer会关闭该server上所有的region,然后关闭自身的进程,在停止过程中,RegionServer会向ZK报告说自己已经过期。master会发现RegionServer已经死掉,会把它当作崩溃的节点来处理,然后会将Region分配到其他的节点上。

    下线节点后再开始负载均衡

    balance_switch true

    优雅地下线RegionServer节点

    当RegionServer下线的时候,Region按顺序被关闭,如果一个RegionServer上有很多Region,从第一个Region下线,到最后一个Region关闭,并且Master认为其死掉了,该Region才可以上线,整个过程要花很长的时间。HBase 0.90.2中加入了一个graceful_stop的功能,该功能可以让节点逐渐降低其负载,直到最后关闭。

    优雅下线1台RegionSever的命令为:

    graceful_stop RegionServer_HOSTNAME

    graceful_stop做的工作是逐个地讲Region从RegionServer中移除,先移除一个Region,然后将这个Region安置到一个新的地方,再移除下一个,直到Region被全部移除。最后关闭RegionServer。

    滚动重启

    for i in `cat conf/regionservers | sort`;do graceful_stop.sh --restart --reload --debug $i;done &  > /tmp/log.txt &

    滚动重启,并解决本地化问题

    1、运行hbck确保一致性

        hbase hbck

    2、重启master

       cd /data/hbaseadmin/hbaseenv/hbase/bin && ./hbase-daemon.sh stop master

         ./hbase-daemon.sh start master

    3、关闭负载均衡器

        echo  "balance_switch false" | hbase shell

    4、滚动重启RegionServer

        for i in `cat conf/regionservers | sort`;do graceful_stop.sh --restart --reload --debug $i;done &  > /tmp/log.txt &

    5、再次重启Master

        cd /data/hbaseadmin/hbaseenv/hbase/bin && ./hbase-daemon.sh stop master

         ./hbase-daemon.sh start master

    6、开启负载均衡器

        echo  "balance_switch true" | hbase shell

    7、运行hbck确保数据一致

        hbase hbck



    作者:飞鸿无痕
    链接:https://www.jianshu.com/p/d34d633460fe

  • 相关阅读:
    idea语法检查红线隐藏配置
    spring security
    linux centos7下安装fastdfs
    定时任务在多个服务实例之间最多只执行一次
    C++11:01auto关键字
    chap3 数组 #C
    django之模型层 各种查询 数据库查询优化相关 事务使用
    django orm 中表与表之间建关系 视图层 路由层 django请求生命周期
    django 静态文件的配置 orm 中 字段与数据的增删改查 使用MySQL数据库
    BOM,DOM, JS,JQ
  • 原文地址:https://www.cnblogs.com/hit-zb/p/10060344.html
Copyright © 2020-2023  润新知