美文网首页
HBase集群运维与优化

HBase集群运维与优化

作者: yannhuang | 来源:发表于2017-11-27 15:31 被阅读162次

    1、HBase安全重启HRegionServer

    bin/graceful_stop.sh   --restart   hostname
    

    以上命令执行的时候,HBase会把hostname下的region安全转移到集群的其他机器中,然后再重启,重启完成后再迁移回来,达到安全重启的目的。

    2、修改handler.count参数

    <property>
      <name>hbase.regionserver.handler.count</name>
      <value>200</value>
      <description>Default : 10.
          Count of RPC Listener instances spun up on RegionServers.
          Same property is used by the Master for count of master handlers.
      </description>
    </property>
    

    RegionServer端开启的RPC监听器实例个数,也即RegionServer能够处理的IO请求线程数。默认是10.

    此参数与内存息息相关。该值设置的时候,以监控内存为主要参考。

    对于单次请求内存消耗较高的Big PUT场景(大容量单次PUT或设置了较大cache的scan,均属于Big PUT)或ReigonServer的内存比较紧张的场景,可以设置的相对较小。

    对于单次请求内存消耗低,TPS(TransactionPerSecond,每秒事务处理量)要求非常高的场景,可以设置的相对大些,通常都调到100~200之间,提高regionserver性能。

    3、HBase0.94迁移数据到HBase1.0的过程

    (1)从hbase0.94导出指定表的数据到hdfs中

     hbase org.apache.hadoop.hbase.mapreduce.Export adt_device_click_compaign /data/yann/data
    

    注意: export 目录不能存在

    (2)把导出的文件拷贝到HBase1.0所在的hdfs目录

    可以通过打包后get/put的方式,但是推荐使用集群之间的拷贝工具distcp

    hadoop-2.6.0-cdh5.5.0/bin/hadoop distcp  -D mapreduce.job.queuename=default -update -skipcrccheck hftp://hostname:50070/data/output/*   hdfs://hdfs/data/output/
    

    (3)在 hbase1.0 下创建对应的表后,执行以下命令进行导入

    hbase -Dhbase.import.version=0.94 org.apache.hadoop.hbase.mapreduce.Import adt_device_click_compaign /data/yann/data
    

    这里要注意一点是,-Dhbase.import.version参数的值是写迁出的hbase版本

    4、HBase的hbck工具

    hbase hbck [opts] {only tables}
    

    (1) opts通用可选项

    -help 展示help信息;
    -detail 展示所有Region的详情;
    -timelag <秒级时间>  处理在过去的指定时间内没有发生过元数据更新的region;
    -sleepBeforeRerun <秒级时间>  在执行-fix指令后时睡眠指定的时间后再检查fix是否生效;
    -summary 只打印表和状态的概要信息;
    -metaonly 只检查hbase:meta表的状态;
    -sidelineDir <hdfs://> 备份当前的元数据到HDFS上;
    -boundaries  校验META表和StoreFiles的Region边界是否一致;
    

    (2) 元数据修复选项

    在不确定的情况下,慎用以下指令。

    -fix 尝试修复Region的分配,通常用于向后兼容;
    -fixAssignments 尝试修复Region的分配,用来替换-fix指令;
    -fixMeta  尝试修复元数据问题;这里假设HDFS上的region信息是正确的;
    -noHdfsChecking  不从HDFS加载/检查Region信息;这里假设hbase:meta表中的Region信息是正确的,不会在检查或修复任何HDFS相关的问题,如黑洞(hole)、孤岛(orphan)或是重叠(overlap);
    -fixHdfsHoles  尝试修复HDFS中的Region黑洞;
    -fixHdfsOrphans  尝试修复hdfs中没有.regioninfo文件的region目录;
    -fixTableOrphans  尝试修复hdfs中没有.tableinfo文件的table目录(只支持在线模式);
    -fixHdfsOverlaps  尝试修复hdfs中region重叠的现象;
    -fixVersionFile  尝试修复hdfs中hbase.version文件缺失的问题;
    -maxMerge <n>  在修复region重叠的现时,允许merge最多<n>个region(默认n等于5);
    -sidelineBigOverlaps  在修复region重叠问题时,允许暂时搁置重叠量较大的部分;
    -maxOverlapsToSideline <n>  在修复region重叠问题时,允许一组里暂时搁置最多n个region不处理(默认n等于2);
    -fixSplitParents 尝试强制将下线的split parents上线;
    -ignorePreCheckPermission  在执行检查时忽略文件系统权限;
    -fixReferencesFiles 尝试下线引用断开(lingering reference)的StoreFile;
    -fixEmptyMetaCells  尝试修复hbase:meta表中没有引用到任何region的entry(REGIONINFO_QUALIFIER为空的行)。
    

    (3) Datafile修复选项

    专业命令,慎用。

    -checkCorruptHFiles  检查所有HFile--通过逐一打开所有的HFile来确定其是否可用;
    -sidelineCorruptHFiles  隔离损坏的HFile。该指令中包含-checkCorruptHFiles操作。
    

    (4) Meta修复快捷指令

    -repair  是以下指令的简写:-fixAssignments -fixMeta -fixHdfsHoles -fixHdfsOrphans -fixHdfsOverlaps -fixVersionFile -sidelineBigOverlaps -fixReferenceFiles -fixTableLocks -fixOrphanedTableZnodes;
    
    -repairHoles  是以下指令的简写:-fixAssignments -fixMeta -fixHdfsHoles。
    

    (5) Table lock选项

    -fixTableLocks 删除已持有超过很长时间的table lock((hbase.table.lock.expire.ms配置项,默认值为10分钟)。
    

    (6) Table Znode选项

    -fixOrphanedTableZnodes  如果表不存在,则将其在zookeeper中ZNode状态设置为disabled。
    

    相关文章

      网友评论

          本文标题:HBase集群运维与优化

          本文链接:https://www.haomeiwen.com/subject/mthdbxtx.html