zoukankan      html  css  js  c++  java
  • Hadoop NameNode safemode

    最近在应用Hadoop集群时,碰上了任务提交集群后,长时间卡在accepted状态,申请资源困难的情况,经过一系列的日志分析,状况排查,才发现是由于NameNode出现过主备切换导致,之前的NameNode主节点由于某种原因宕掉导致主备切换发生,刚好时间卡在业务高峰期,部分数据块未同步(或其他原因,从日志中看应该是无法与JournalNode集群交互,猜测可能网络异常,但未找到相关日志信息),NameNode切换后被迫进入安全模式后就再没出来,导致后续任务越来越难申请到资源,集群虽然完好,业务差点崩塌……

    宕机原因尚待分析,可业务的立即恢复要求度更高,那NameNode安全模式就成了最重要的问题。

    经过一番搜索,找到了右侧的博文:《Hadoop安全模式详解及配置》

    简单来说,安全模式下的HDFS只支持元数据的操作读取,不支持文件的创建、删除等操作,同时会对数据块进行大量校验,导致资源的分配和申请耗时远超预期。

    因此在业务紧急要求恢复的时候,可以尝试将以下两个参数调低,使安全模式尽快结束:

    dfs.namenode.replication.min——满足需要的最小副本数
    dfs.namenode.safemode.threshold-pct——集群中满足正常配置的数据块比例
    <property>
      <name>dfs.namenode.replication.min</name>
      <value>1</value>
      <description>Minimal block replication. 
      </description>
    </property>
    
    <property>
      <name>dfs.namenode.safemode.threshold-pct</name>
      <value>0.999f</value>
      <description>
        Specifies the percentage of blocks that should satisfy the minimal
        replication requirement defined by dfs.namenode.replication.min.
        Values less than or equal to 0 mean not to wait for any particular
        percentage of blocks before exiting safemode.
        Values greater than 1 will make safe mode permanent.
      </description>
    </property>


    如果是为了防止某些异常数据导致始终校验不过的情况,可以尝试将上面的dfs.namenode.safemode.threshold-pct参数调为0或比0小的值后重启NameNode,这样永远不会进入安全模式;或者使用以下命令手动退出安全模式:

    hadoop fs –safemode leave
  • 相关阅读:
    JavaScript常用设计模式
    js 判断l对象类型
    JavaScript编程(终极篇)
    微信小程序开发-滑动操作
    解决Jquery向页面append新元素之后事件的绑定问题
    C# list与数组互相转换
    C# “贝格尔”编排法
    C#数字格式化
    SQL从一个表查询数据插入/更新到另一个表
    全局唯一标识符 (GUID)
  • 原文地址:https://www.cnblogs.com/taisenki/p/4643710.html
Copyright © 2011-2022 走看看