在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

[Hadoop] - TaskTracker源码分析(TaskTracker节点健康状况监控)的更多相关文章

  1. [Hadoop] - TaskTracker源码分析(状态发送)

    TaskTracker节点向JobTracker汇报当前节点的运行时信息时候,是将运行状态信息同心跳报告一起发送给JobTracker的,主要包括TaskTracker的基本信息.节点资源使用信息.各 ...

  2. Hadoop RPC源码分析

    Hadoop RPC源码分析 上一篇文章http://www.cnblogs.com/dycg/p/rpc.html 讲了Hadoop RPC的使用方法,这一次我们从demo中一层层进行分析. RPC ...

  3. ElasticSearch6.3.2源码分析之节点连接实现

    ElasticSearch6.3.2源码分析之节点连接实现 这篇文章主要分析ES节点之间如何维持连接的.在开始之前,先扯一下ES源码阅读的一些心得:在使用ES过程中碰到某个问题,想要深入了解一下,可源 ...

  4. 鸿蒙内核源码分析(索引节点篇) | 谁是文件系统最重要的概念 | 百篇博客分析OpenHarmony源码 | v64.01

    百篇博客系列篇.本篇为: v64.xx 鸿蒙内核源码分析(索引节点篇) | 谁是文件系统最重要的概念 | 51.c.h.o 文件系统相关篇为: v62.xx 鸿蒙内核源码分析(文件概念篇) | 为什么 ...

  5. HDFS源码分析数据块复制监控线程ReplicationMonitor(二)

    HDFS源码分析数据块复制监控线程ReplicationMonitor(二)

  6. HDFS源码分析数据块复制监控线程ReplicationMonitor(一)

    ReplicationMonitor是HDFS中关于数据块复制的监控线程,它的主要作用就是计算DataNode工作,并将复制请求超时的块重新加入到待调度队列.其定义及作为线程核心的run()方法如下: ...

  7. [Hadoop] - TaskTracker源码分析

    在Hadoop1.x版本中,MapReduce采用master/salve架构,TaskTracker就是这个架构中的slave部分.TaskTracker以服务组件的形式存在,负责任务的执行和任务状 ...

  8. Hadoop TextInputFormat源码分析

    from:http://blog.csdn.net/lzm1340458776/article/details/42707047 InputFormat主要用于描述输入数据的格式(我们只分析新API, ...

  9. Elasticsearch源码分析 | 单节点的启动和关闭

    本文主要简要介绍Elasticsearch单节点的启动和关闭流程.Elasticsearch版本:6.3.2 相关文章 1.Google Guice 快速入门 2.Elasticsearch 中的 G ...

随机推荐

  1. iOS开发——缩放图片

    捏合图片,在原imageView中放大缩小图片. 懒得多说,直接上代码: // //  ViewController.m //  Demo-hehehe // //  Created by yyt o ...

  2. USB入门基础知识(转)

    源:USB入门基础知识 相关名词: 主机(Host) 设备(Device) 接口(Interface) 管道(Pipe) 管道是主机与设备端点数据传输的连接通道,代表了主机的数据缓冲区与设备端点之间交 ...

  3. ios 简单的plist文件读写操作(Document和NSUserDefaults)

    最近遇到ios上文件读写操作的有关知识,记录下来,以便以后查阅,同时分享与大家. 一,简单介绍一下常用的plist文件. 全名是:Property List,属性列表文件,它是一种用来存储串行化后的对 ...

  4. [转]六款常用的linux C/C++ IDE

    之前在windows下开发习惯啦,linux改用vim开发代码,但是前期还是不熟悉看代码效率感觉有点低.由于看代码需要各种跳转查找我个人觉得还是IDE方便些,以前在windows下就挺喜欢使用code ...

  5. HTML CSS基础(二)

    块元素和行内元素 HTML元素根据表现形式,可以分为2类: (1)块元素(block): (2)行内元素(inline): 任何HTML元素都属于这两类中的其中一类. 2.块元素特点: (1)独占一行 ...

  6. sql2005数据库置疑修复断电崩溃索引损坏 数据库索引错误修复/数据库表损坏/索引损坏/系统表混乱等问题修复

    sql2005数据库置疑修复断电崩溃索引损坏 数据库索引错误修复/数据库表损坏/索引损坏/系统表混乱等问题修复 客 户 名 称 济南某电子商务公司 数 据 类 型 SQL2005数据库 故 障 检 测 ...

  7. Linux命令之文件处理

    文件处理命令 1.dirname命令 dirname命令去除文件名中的非目录部分,仅显示与目录有关的内容.dirname命令读取指定路径名保留最后一个/及其后面的字符,删除其他部分,并写结果到标准输出 ...

  8. Nodejs.sublime-build 在sublime3中的配置

    { "cmd": ["node", "$file"], "file_regex": "^[ ]*File \& ...

  9. 如何从mysql中将数据导入到sqlserver

    本文讨论如何把MySQL的数据库导入到SQL Server中,所以首先你需要把两种数据库都安装了,再进行以下步骤. 一.为 MySQL安装ODBC驱动 1. 下载MySQL ODBC Connecto ...

  10. 关于我的PP0.1聊天软件(客户端)

    登陆界面: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data ...