• [Hadoop]


      在TaskTracker中对象healthStatus保存了当前节点的健康状况,对应的类是org.apache.hadoop.mapred.TaskTrackerStatus.TaskTrackerHealthStatus。定义如下:

    static class TaskTrackerHealthStatus implements Writable {
        private boolean isNodeHealthy;    // 节点是否健康
        private String healthReport;   // 如果节点不健康,则记录不健康的原因
        private long lastReported; // 最近汇报时间,即上次汇报时间
    .................................
    }

      该healthStatus对象是TaskTrackerStatus实例status中的一个属性,会和其他节点信息,比如内存容量等,一起发送到JobTracker中。healthStatus中的属性是有线程NodeHealthCheckerService计算出来的。该线程允许管理员配置一个“健康监控脚本”以检测节点健康状况。唯一需要注意的是:如果脚本监控到该节点处于不健康状态,那么需要在标准输出中打印一个以"ERROR"开头的语句。NodeHealthCheckerService线程会周期性的监控脚本的输出,如果输出结果中的语句有以ERROR开头的语句,那么就设置该节点为不健康节点,JobTracker也会将该节点添加到黑名单中,不会给该节点再发送分配任务。

      该机制的好处:

        1、可以作为节点的负载的反馈,比如:当脚本监控到网络、io、文件系统等比较繁忙的时候,可以通知设置为不健康节点,减少任务的分配。

        2、人为的暂时维护TaskTracker,当发生TaskTracker出现故障的时候,可以通过脚本暂时的让该TaskTracker停止接收新任务,维护好后,在设置为可以接收状态。

      配置参数:

    参数名称 参数含义
    mapred.healthChecker.script.path 健康检查脚本所在的绝对路径,线程BodeHealthCheckerService会周期新的执行该脚本来判断节点是否健康,如果为空,那么不启动线程。
    mapred.healthChecker.interval  线程NodeHealthCheckerService执行监控脚本的频率,单位:毫秒
    mapred.healthChecker.script.timeout 如果监控脚本在一定时间内没有响应,那么设置为不健康状态
    mapred.healthChecker.script.args 监控脚本参数,如果有多个参数用逗号分隔

      示例:当一个节点的空闲内存量低于总内存量的10%时候,打印ERROR开头的语句。

    #! /bin/bash
    MEMORY_RATIO = 0.1
    freeMem = `grep MemFree /proc/meminfo | awk '{print $2}'`
    totalMem = `grep MemTotal /proc/meminfo | awk '{print $2}'`
    limitMem = `echo | awk '{print int("'$totalMem'"*"'$MEMORY_RATIO'")}'`
    if [$freeMem -lt $limitMem]; then
        echo "ERROR, totalMem=$totalMem, freeMem=$freeMem, limitMem=$limitMem"
    else
        echo "OK"
    fi
  • 相关阅读:
    HDU3247 Resource Archiver(AC自动机+BFS+DP)
    POJ2486 Apple Tree(树形DP)
    POJ1699 Best Sequence(AC自动机+状压DP)
    SPOJ287 Smart Network Administrator(最大流)
    POJ3189 Steady Cow Assignment(最大流)
    ZOJ2332 Gems(最大流)
    COGS731 [网络流24题] 最长递增子序列(最大流)
    POJ1947 Rebuilding Roads(树形DP)
    POJ1135 Domino Effect(SPFA)
    SPOJ962 Intergalactic Map(最大流)
  • 原文地址:https://www.cnblogs.com/liuming1992/p/4826912.html
Copyright © 2020-2023  润新知