HDFS心跳机制--判断DN失联部分的源码解析
一、 前言
今天朋友问我HDFS中,如果namenode 10分30秒没有收到dn心跳,则判断dn不可用,这个10分30秒是怎么来的。翻源码过程如下。版本:hadoop270
二、Datanode发送心跳
1. DataNode.java的main方法
2. createDataNode方法
3. instantiateDataNode方法
4. makeInstance方法
5. 实例化DataNode对象,在初始化一些配置之后,进入startDataNode方法,启动dn
6. 初始化块池管理器,向nn注册
7. 启动BPOfferService,每个bpos对应一个nn组(一主一备)
8. BPServiceActor(每个BPServiceActor对应一个nn)是一个线程,找到其run方法。循环向nn注册/心跳
9. offerService方法,拿到nn的代理,通过RPC请求向nn发送心跳
10. NameNodeRpcServer类的sendHeartbeat方法,一路追
刷新lastUpdateMonotonic这个值
三、NameNode处理心跳
1. NameNode的main方法
2. 实例化
3. 初始化
4. 启动一些(主备)共有服务
5. 启动一些线程
6. 监控心跳的线程
可以看到,每隔5min(heartbeatRecheckInterval)就进行一次心跳检查
7. 心跳检查时候判断dn是否dead,如果10min30S没有收到心跳,既判断为dead
node.getLastUpdateMonotonic是datanode调用NN RPC服务时更新的。上文已表述
HDFS心跳机制--判断DN失联部分的源码解析相关推荐
- Handler消息机制(九):IntentService源码解析
作者:jtsky 链接:https://www.jianshu.com/p/0a150ec09a32 简介 首先我们先来了解HandlerThread和IntentService是什么,以及为什么要将 ...
- jtoken判断是否包含键_Redis源码解析十三--有序集合类型键实现(t_zset)
有序集合类型键实现 1. 有序集合命令 Redis有序集合命令如下表所示:Redis 有序集合命令详解 2. 有序集合类型实现 有序集合对象的底层实现类型如下表: 关于底层的数据结构剖析和实现,请看如 ...
- Handler消息机制(十):HandlerThread源码解析
作为Android开发者都知道在子线程中使用Handler必须要创建Looper,其实HandlerThread就是在线程中封装了Looper的创建和循环,不用我们开发者自己去创建它,下面我们来看看源 ...
- Redis源码解析(15) 哨兵机制[2] 信息同步与TILT模式
Redis源码解析(1) 动态字符串与链表 Redis源码解析(2) 字典与迭代器 Redis源码解析(3) 跳跃表 Redis源码解析(4) 整数集合 Redis源码解析(5) 压缩列表 Redis ...
- 【Android 异步操作】线程池 ( 线程池作用 | 线程池种类 | 线程池工作机制 | 线程池任务调度源码解析 )
文章目录 一.线程池作用 二.线程池种类 三.线程池工作机制 四.线程池任务调度源码解析 一.线程池作用 线程池作用 : ① 避免创建线程 : 避免每次使用线程时 , 都需要 创建线程对象 ; ② 统 ...
- [源码解析] 从TimeoutException看Flink的心跳机制
[源码解析] 从TimeoutException看Flink的心跳机制 文章目录 [源码解析] 从TimeoutException看Flink的心跳机制 0x00 摘要 0x01 缘由 0x02 背景 ...
- HDFS源码解析:教你用HDFS客户端写数据
摘要:终于开始了这个很感兴趣但是一直觉得困难重重的源码解析工作,也算是一个好的开端. 本文分享自华为云社区<hdfs源码解析之客户端写数据>,作者: dayu_dls. 在我们客户端写数据 ...
- 【kafka】Kafka 源码解析:Group 协调管理机制
1.概述 转载:Kafka 源码解析:Group 协调管理机制 在 Kafka 的设计中,消费者一般都有一个 group 的概念(当然,也存在不属于任何 group 的消费者),将多个消费者组织成一个 ...
- MapReduce的分片机制源码解析
目录 一.分⽚的概念 二.分片大小的选择 三.源码解析 1)FileSplit源码解析 2)FileInputFormat源码解析 3)TextInputFormat源码解析 4) LineRecor ...
最新文章
- css技巧之如何实现ul li边框重合
- 这个开源项目帮你将Linux命令行一网打尽!
- TF之RNN:实现利用scope.reuse_variables()告诉TF想重复利用RNN的参数的案例
- 多线程学习笔记一之内置锁
- 0222互联网新闻 | 快手推游戏直播App“电喵直播”及工具型App光音Mulight;“AI音乐学院”完成PreA轮融资...
- dotnet core开发体验之开始MVC
- 塑料壳上下扣合的卡扣设计_一种塑料件卡扣结构制造技术
- win8+sdk8+vs2012+freeglut+glew开发opengl
- OsmocomBB编译及GSM嗅探问题(转)
- 【知识图谱系列】基于2D卷积的知识图谱嵌入
- 一些嵌入式面试题目的集锦
- Xilinx FPGA 下载器驱动提示“系统找不到指定的路径”的解决办法
- html5银行理财项目实践作业,金融理财产品实践报告.doc
- 我对Javascript闭包的理解
- 计算机保研个人简介,保研个人简历模板
- 爬虫爬取招聘信息并进行数据分析
- 福特汉姆大学计算机科学专业,Fordham的Computer and Information Science「福特汉姆大学计算机与信息科学系」...
- Iphone 开发播放音频无声音
- Android中画布连线的连线动画的实现
- jQuery弹出插件thickbox使用心得
热门文章
- 场内场外交易成本_场内基金与场外基金各有什么优劣势?
- Docker容器入门及网易最佳实践
- 【UV打印机】电器之开关电源LRS-350
- arcgis10.2以上dbf用excel打开中文乱码问题(10.8为例)
- 基因编辑技术:能让人类永生下去?
- 韩老师——数据结构与算法—单链表的生成及增删改查操作和常见关于链表的面试题java代码实现
- 2022年人工智能在行业发展的趋势及普及
- Mind the Box: $\ell_1$-APGD for Sparse Adversarial Attacks on Image Classifiers
- 同态基本定理及其应用
- PHP中magic_quotes_gpc和magic_quotes_runtime的区别、作用和用法