DataNode对ClientDatanodeProtocol、InterDatanodeProtocol两个协议接口进行了实现,通过ipc::Server向Client、其它DN提供RPC服务(参见Hadoop IPC);

同时DataNode依赖DatanodeProtocol向NN请求RPC服务,RPC中包含DatanodeRegistration信息,以备NN对DN进行标识及区分;

DataNode通过DataXceiverServer向Client或其它DN提供数据服务(数据块的读写),这里采用了多线程的服务器模型,每当Client连入时都新建一个DataXceiver线程进行处理;DataXceiver通过BlockSender处理读请求,通过BlockReceiver处理写请求;

当需要向其它DN传输数据块时(如向pipeline的下一节点传输数据),DataNode会启动一个DataTransfer线程,与目标DN连接以进行数据传输;

DataNode通过FSDatasetInterface接口与磁盘的数据块进行交互,一个数据集(FSDataset)包含一个卷集(FSVolumeSet),一个卷集由多个卷(FSVolume)组成,每个卷下面由目录(FSDir)组成树形结构;

BlockSender调用相应的接口将数据从blk文件中读出,BlockReceiver调用相应的接口将数据写入特定位置的blk文件。

Hadoop学习笔记之三:DataNode的更多相关文章

  1. Hadoop学习笔记之三 数据流向

    http://hadoop.apache.org/docs/r1.2.1/api/index.html 最基本的: 1. 文本文件的解析 2. 序列文件的解析 toString会将Byte数组中的内存 ...

  2. Hadoop学习笔记—22.Hadoop2.x环境搭建与配置

    自从2015年花了2个多月时间把Hadoop1.x的学习教程学习了一遍,对Hadoop这个神奇的小象有了一个初步的了解,还对每次学习的内容进行了总结,也形成了我的一个博文系列<Hadoop学习笔 ...

  3. Hadoop学习笔记(2)

    Hadoop学习笔记(2) ——解读Hello World 上一章中,我们把hadoop下载.安装.运行起来,最后还执行了一个Hello world程序,看到了结果.现在我们就来解读一下这个Hello ...

  4. Hadoop学习笔记(2) ——解读Hello World

    Hadoop学习笔记(2) ——解读Hello World 上一章中,我们把hadoop下载.安装.运行起来,最后还执行了一个Hello world程序,看到了结果.现在我们就来解读一下这个Hello ...

  5. Hadoop学习笔记(1) ——菜鸟入门

    Hadoop学习笔记(1) ——菜鸟入门 Hadoop是什么?先问一下百度吧: [百度百科]一个分布式系统基础架构,由Apache基金会所开发.用户可以在不了解分布式底层细节的情况下,开发分布式程序. ...

  6. Hadoop学习笔记(1)(转)

    Hadoop学习笔记(1) ——菜鸟入门 Hadoop是什么?先问一下百度吧: [百度百科]一个分布式系统基础架构,由Apache基金会所开发.用户可以在不了解分布式底层细节的情况下,开发分布式程序. ...

  7. Hadoop学习笔记(10) ——搭建源码学习环境

    Hadoop学习笔记(10) ——搭建源码学习环境 上一章中,我们对整个hadoop的目录及源码目录有了一个初步的了解,接下来计划深入学习一下这头神象作品了.但是看代码用什么,难不成gedit?,单步 ...

  8. Hadoop学习笔记(9) ——源码初窥

    Hadoop学习笔记(9) ——源码初窥 之前我们把Hadoop算是入了门,下载的源码,写了HelloWorld,简要分析了其编程要点,然后也编了个较复杂的示例.接下来其实就有两条路可走了,一条是继续 ...

  9. hadoop学习笔记(四):HDFS文件权限,安全模式,以及整体注意点总结

    本文原创,转载注明作者和原文链接! 一:总结注意点: 到现在为止学习到的角色:三个NameNode.SecondaryNameNode.DataNode 1.存储的是每一个文件分割存储之后的元数据信息 ...

随机推荐

  1. Python3学习之路~6.7 经典类和新式类的继承顺序

    在Python中,经典类(class Person:)和新式类(class Person(object):)的主要区别就是体现在多继承的顺序上. Python 2.x中默认都是经典类,只有显式继承了o ...

  2. cobbler自动安装操作系统

    cobbler介绍 快速网络安装linux操作系统的服务,支持众多的Linux发行版: Red Hat, Fedora,CentOS,Debian,Ubuntu和SuSE 也可以支持网络安装windo ...

  3. 初学git

    初学git,总结了一点东西,可能有理解和操作的不到位的地方,还有就是这个是我之前写在word上的,因为CSDN上不能直接上传,所以拷贝的过程中也可能有其他问题.发的的朋友还望指正... 1.找到“参与 ...

  4. ORM模板层

    1.模板语言之变量 def index(request): name='lqz' age=18 ll=['name','age'] dic={'name':name,'age':age} class ...

  5. (转)深度教程:POS和POW全解析

    如果你是一名资深的比特币矿工或商人,你一定听说过POW和POS,但是当前在国内,却几乎没有人明白这到底是什么意思,也几乎没有相关的中文资料,小编吐血撰写,是为了让大家更好理解这些概念.   读完本文, ...

  6. BiLSTM学习

    转自:https://blog.csdn.net/aliceyangxi1987/article/details/77094970 https://blog.csdn.net/jojozhangju/ ...

  7. 2019.04.09 电商24 订单模快 ORM

    前面三个模块已近结束,现在看是订单模块的.想一下淘宝上的订单,在购物车中选中,提交,跳转到订单界面. 获取传过来的信息,那也要建立一个订单表,当我支付的时候,也要获取一些数据,将这些数据放到这个表中 ...

  8. 文档设计也需要坚持DRY原则--支付中心应用部署结构图完善

    今天上午,我拿着支付中心的设计文档,给入职不久的同事讲解目前支付中心系统的应用部署情况.当时同事嗯嗯地点头反应. 下午呢,发现自己设计的有问题,赶紧给予完善. 代码重构方面讲究DRY编程原则.我们在设 ...

  9. layui透明弹框

    效果: layui.use('layer', function () { var layer = layui.layer; var str = '<div>'; str += '<d ...

  10. RNN的深入理解

    针对有着前后序列关系的数据,比如说随着时间变化的数据,显然使用rnn的效果会更好. 循环神经网络的简单结构如下图:简单表示是左边这幅图,展开来看就是右边对每个时刻的数据的处理.单层的RNN网络只有一个 ...