Datanode 怎么与 Namenode 通信?
在分析DataNode时, 因为DataNode上保存的是数据块, 因此DataNode主要是对数据块进行操作.
A. DataNode的主要工作流程
- 客户端和DataNode的通信: 客户端向DataNode的
数据块读写
, 采用TCP/IP流接口(DataXceiver)进行数据传输 - 客户端在检测到DataNode异常, 主动发起的
数据块恢复
, 客户端会通过ClientDatanodeProtocol接口采用RPC调用的方式和DataNode通信. 数据块替换和拷贝
, 由负载均衡器Balancer发起的, 是发生在DataNode之间. 也是通过DataXceiver进行数据传输- DataNode在启动后会向NameNode分别完成:
握手, 注册, 心跳, 块报告
. - NameNode根据DataNode的块报告和心跳, 会返回给DataNode
指令
. 通过这种方式NameNode间接地和DataNode进行通信.
实际上NameNode作为Server端, 是不会主动去联系DataNode的, 只有作为客户端的DataNode才会去联系NameNode.
DataNode在接收到NameNode的指令信息, 被要求去做: 重新向NameNode注册, 数据块传输, 恢复等. - NameNode检测到数据块的副本个数不足. 要求DN执行
数据块传输
(DNA_TRANSFERBLOCK), DataNode使用DataTransfer也是基于DataXceiver流接口. - NameNode发起的数据块恢复(DNA_RECOVERBLOCK), 是检测到客户端/租约错误, 恢复策略是选取参与到恢复过程中的数据块的最小长度.
- 不管是客户端错误会被NN返回数据块恢复命令给DN执行恢复操作, 还是DN错误由客户端主动触发的数据块恢复操作. 都会使用到
InterdatanodeProtocol的两个数据块恢复方法(startBlockRecovery和updateBlock).
因为数据块恢复实际上是在DN之间根据恢复策略恢复到数据块正常的状态. 而且恢复时不像写数据没有数据来源. 所以是在DN之间进行通信.
B. 从DataNode的功能来看:
- DataNode实现的两个接口ClientDatanodeProtocol和InterDatanodeProtocol都用于数据块恢复.
- 数据块的其他操作使用TCP/IP流式接口来完成: DataXceiver(读写, 替换, 复制)和DataTransfer(传输).
C. 从DataNode的通信来看:
- 客户端可以向DataNode发起读写数据块请求, 主动发起数据块恢复.
- DataNode向NameNode握手, 注册, 心跳, 块报告. 并接收NameNode的指令.
原文出处:https://www.cnblogs.com/30go/
Datanode 怎么与 Namenode 通信?的更多相关文章
- rpc,客户端与NameNode通信的过程
远程过程:java进程.即一个java进程调用另外一个java进程中对象的方法. 调用方称作客户端(client),被调用方称作服务端(server).rpc的通信在java中表现为客户端去调用服务端 ...
- NameNode与DataNode的工作原理剖析
NameNode与DataNode的工作原理剖析 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.HDFS写数据流程 >.客户端通过Distributed FileSyst ...
- Secondary NameNode:的作用?
前言 最近刚接触Hadoop, 一直没有弄明白NameNode和Secondary NameNode的区别和关系.很多人都认为,Secondary NameNode是NameNode的备份,是为了防止 ...
- 一探究竟:Namenode、SecondaryNamenode、NamenodeHA关系
NameNode与Secondary NameNode 很多人都认为,Secondary NameNode是NameNode的备份,是为了防止NameNode的单点失败的,其实并不是在这样.文章Sec ...
- 解读Secondary NameNode的功能
1.概述 最近有朋友问我Secondary NameNode的作用,是不是NameNode的备份?是不是为了防止NameNode的单点问题?确实,刚接触Hadoop,从字面上看,很容易会把Second ...
- Secondary NameNode 的作用
https://blog.csdn.net/xh16319/article/details/31375197 很多人都认为,Secondary NameNode是NameNode的备份,是为了防止Na ...
- (转)Secondary NameNode的作用
在Hadoop中,有一些命名不好的模块,Secondary NameNode是其中之一.从它的名字上看,它给人的感觉就像是NameNode的备份.但它实际上却不是.很多Hadoop的初学者都很疑惑,S ...
- 【Hadoop】Hadoop DataNode节点超时时间设置
hadoop datanode节点超时时间设置 datanode进程死亡或者网络故障造成datanode无法与namenode通信,namenode不会立即把该节点判定为死亡,要经过一段时间,这段时间 ...
- hadoop datanode节点超时时间设置
datanode进程死亡或者网络故障造成datanode无法与namenode通信,namenode不会立即把该节点判定为死亡,要经过一段时间,这段时间暂称作超时时长. HDFS默认的超时时长为10分 ...
随机推荐
- 火车进栈(进出栈的模拟,dfs爆搜)
这里有n列火车将要进站再出站,但是,每列火车只有1节,那就是车头. 这n列火车按1到n的顺序从东方左转进站,这个车站是南北方向的,它虽然无限长,只可惜是一个死胡同,而且站台只有一条股道,火车只能倒着从 ...
- 06_Python基础课程
学于黑马和传智播客联合做的教学项目 感谢 黑马官网 传智播客官网 微信搜索"艺术行者",关注并回复关键词"软件测试"获取视频和教程资料! b站在线视频 Pyth ...
- Django学习路36_函数参数 反向解析 修改404 页面
在 templates 中创建对应文件名的 html 文件 (.html) 注: 开发者服务器发生变更是因为 python 代码发生变化 如果 html 文件发生变化,服务器不会进行重启 需要自己手动 ...
- springMVC请求路径 与实际资源路径关系
个人理解: 请求路径可以分为两部分:不通过springmvc转发的url:通过springmvc转发的url: 通过特定的配置,告诉springmvc哪些url需要从springmvc处理,处理后再跳 ...
- TestFlight无法访问怎么办?TF如何链接AppStoreConnect解决教程
最近苹果商店半天下架近3万款应用的新闻闹的沸沸扬扬,很多被下架应用的运营商转将APP上架了TestFlight内测商店(TF签名上架),但是从7月31日起很多用户就开始反映TestFlight内测应用 ...
- 分布式任务调度平台 → XXL-JOB 实战
开心一刻 老师:谁知道鞭炮用英语怎么说? 甲:老师!老师!我知道,鞭炮的英文是pilipala. 老师:那闪电呢? 乙:kucha kucha 老师:那舞狮呢? 丙:dong dong qiang 老 ...
- centos,linux环境下安装JDK1.8完整
进入oracle官网下载安装包,cetos一般选择xx-xx-linux-x64.tar.gz.获取到地址后可以点击下载,也可以使用wget命令下载. 在得到下载好的文件后下面就可以开始安装了.比如我 ...
- 深入学习JDK源码系列之、ArrayList
前言 JDK源码解析系列文章,都是基于JDK8分析的,虽然JDK15马上要出来了,但是JDK8我还不会,我... 类图 实现了RandomAccess接口,可以随机访问 实现了Cloneable接口, ...
- CI4框架应用四 - 第一个页面
我们来看一下CI4框架的默认页面是如何实现的. 我们先来认识一下路由文件(app\Config\Routes.php),这个文件非常重要,且功能强大,它定义了URL模式及响应处理方法,我们先看一下这个 ...
- Python | 常见的反爬及解决方法,值得收藏
我们都知道Python用来爬数据,为了不让自家的数据被别人随意的爬走,你知道怎么反爬吗?今天播妞带着大家一起见识见识常见的反爬技术. 很多人学习python,不知道从何学起.很多人学习python,掌 ...