[Hadoop] - TaskTracker源码分析(TaskTracker节点健康状况监控)
在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节点健康状况监控)的更多相关文章
- [Hadoop] - TaskTracker源码分析(状态发送)
TaskTracker节点向JobTracker汇报当前节点的运行时信息时候,是将运行状态信息同心跳报告一起发送给JobTracker的,主要包括TaskTracker的基本信息.节点资源使用信息.各 ...
- Hadoop RPC源码分析
Hadoop RPC源码分析 上一篇文章http://www.cnblogs.com/dycg/p/rpc.html 讲了Hadoop RPC的使用方法,这一次我们从demo中一层层进行分析. RPC ...
- ElasticSearch6.3.2源码分析之节点连接实现
ElasticSearch6.3.2源码分析之节点连接实现 这篇文章主要分析ES节点之间如何维持连接的.在开始之前,先扯一下ES源码阅读的一些心得:在使用ES过程中碰到某个问题,想要深入了解一下,可源 ...
- 鸿蒙内核源码分析(索引节点篇) | 谁是文件系统最重要的概念 | 百篇博客分析OpenHarmony源码 | v64.01
百篇博客系列篇.本篇为: v64.xx 鸿蒙内核源码分析(索引节点篇) | 谁是文件系统最重要的概念 | 51.c.h.o 文件系统相关篇为: v62.xx 鸿蒙内核源码分析(文件概念篇) | 为什么 ...
- HDFS源码分析数据块复制监控线程ReplicationMonitor(二)
HDFS源码分析数据块复制监控线程ReplicationMonitor(二)
- HDFS源码分析数据块复制监控线程ReplicationMonitor(一)
ReplicationMonitor是HDFS中关于数据块复制的监控线程,它的主要作用就是计算DataNode工作,并将复制请求超时的块重新加入到待调度队列.其定义及作为线程核心的run()方法如下: ...
- [Hadoop] - TaskTracker源码分析
在Hadoop1.x版本中,MapReduce采用master/salve架构,TaskTracker就是这个架构中的slave部分.TaskTracker以服务组件的形式存在,负责任务的执行和任务状 ...
- Hadoop TextInputFormat源码分析
from:http://blog.csdn.net/lzm1340458776/article/details/42707047 InputFormat主要用于描述输入数据的格式(我们只分析新API, ...
- Elasticsearch源码分析 | 单节点的启动和关闭
本文主要简要介绍Elasticsearch单节点的启动和关闭流程.Elasticsearch版本:6.3.2 相关文章 1.Google Guice 快速入门 2.Elasticsearch 中的 G ...
随机推荐
- JavaScript高级程序设计-8:BOM
1. 什么是BOM? BOM(Browser Object Mode) 是指浏览器对象模型,是用于描述这种对象与对象之间层次关系的模型,浏览器对象模型提供了独立于内容的.可以与浏览器窗口进行互动的对象 ...
- 2782: [HNOI2006]最短母串
2782: [HNOI2006]最短母串 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 3 Solved: 2[Submit][Status][Web ...
- Grid (read-only) objects and methods (client-side reference)获取子表单对象的一些方法 Crm 2016
https://msdn.microsoft.com/en-us/library/dn932126.aspx#BKMK_GridControl Updated: November 29, 2016 A ...
- 大数据全栈式开发语言 – Python
前段时间,ThoughtWorks在深圳举办一次社区活动上,有一个演讲主题叫做“Fullstack JavaScript”,是关于用JavaScript进行前端.服务器端,甚至数据库(MongoDB) ...
- spark RDD编程,scala版本
1.RDD介绍: RDD,弹性分布式数据集,即分布式的元素集合.在spark中,对所有数据的操作不外乎是创建RDD.转化已有的RDD以及调用RDD操作进行求值.在这一切的背后,Spark会自动 ...
- [c#]解决方案:需要“jquery”ScriptResourceMapping。请添加一个名为 jquery (区分大小写)的 ScriptResourceMapping。
问题详情 如下图所示(部分): 出现该错误,是因为应用程序中需要使用到jquery(现在的web应用程序哪个能离开jquery呢),而目前程序目录中并没有jquery文件,或者有jquery文件但是程 ...
- Zepto.js-表单方法
加载模块:form.js serialize serialize() ⇒ string 在Ajax post请求中将用作提交的表单元素的值编译成 URL编码的 字符串. serializeArray ...
- Delphi 常用函数记录
//判断是否是数字 function IsNumeric(sDestStr: string): Boolean; //简写多余汉字 function SimplifyWord(sWord: strin ...
- jQuery克隆DOM节点
jQuery克隆DOM节点 <%@ page language="java" import="java.util.*" pageEncoding=&quo ...
- PHP的线程安全与非线程(NTS)安全版本的区别
Windows版的PHP从版本5.2.1开始有Thread Safe(线程安全)和None Thread Safe(NTS,非线程安全)之分,这两者不同在于何处?到底应该用哪种?这里做一个简单的介绍. ...