1. datanode介绍

1.1 datanode

datanode是负责当前节点上的数据的管理,具体目录内容是在初始阶段自动创建的,保存的文件夹位置由配置选项{dfs.data.dir}决定

1.2 datanode的作用

datanode以数据块的形式存储HDFS文件

datanode响应HDFS 客户端读写请求

datanode周期性向NameNode汇报心跳信息,数据块信息,缓存数据块信息

1.3 datanode的多目录配置

datanode也可以配置多个目录,每个目录存储的数据不一样,数据不是副本

(见:https://www.cnblogs.com/cjq10029/p/12368074.html)

<property>        #hdfs-site.xml
<name>dfs.datanode.data.dir</name>
<value>/sdb1/data,/opt/software/hadoop277/tmp/data</value>
</property>

1.4 datanode的逻辑结构

我们可以将基于Federation的架构的HDFS分为三层:数据层,逻辑层和服务层

1.4.1 数据层

将DataNode 中负责数据块存储和管理数据块操作的部分抽象成数据层,它主要包括2部分:

1.4.1.1 DataStorage(数据块存储)

数据块存储主要是管理DataNode磁盘存储空间以及磁盘存储空间的生命周期。说的直白一点就是DataStorage这个类主要负责管理数据存储文件信息,比如current,detach,finalized等等文件。

BlockPoolSliceStorage可以用来管理DataNode每一个单独的块池,DataStorage会持有这个BlockPoolSliceStorage对象引用,并通过这个引用来管理DataNode的块池。

1.4.1.2 FSDataset(文件系统数据集)

FSDataset抽象了DataNode对数据块管理的操作,比如创建数据块,维护数据块文件等。我们知道每一个DataNode都可以配置多个不同类型的存储目录来保存数据,所以HDFS定义了FSVolumeImpl来管理DataNode上单个存储目录上    保存的数据块,同时定义了FSVo

lumeList来维护DataNode上所有FSVolumeImpl对象的引用。FSDataSet会通过FSVolumeList提供的管理功能来管理DataNode上存储的目录保存的数据块

1.4.2 逻辑层

DataNode基于数据层会执行很多HDFS 逻辑处理,比如向NameNode汇报数据块状态,发送心跳,扫描损坏的数据块等,我们将HDFS执行这些逻辑的部分抽象成逻辑层。逻辑层主要包括三个模块:

1.4.2.1 BlockPoolManager

BlockPoolManager是管理所有BlockPool的接口类,在HDFS Federation机制下,我们在集群可以创建多个NameSpace,每一个NameSpace都对应着一个BlockPool,一个BlockPoolManager会持有一个BPOfferService对象,用于管理DataNode单个BlockPool, 我们知道,如果引入HA机制, NameNode就会有ActiveNM 和 StandbyNM。所以每一个BPOfferService又会持有2个BPServiceActor对象,每一个BPServiceActor对应于命名空间里的一个Name Node,该对象负责向NameNode发送心跳报告,数据块汇报,缓存汇报等

1.4.2.2 DataBlockScanner

一个周期性扫描每一个数据块并检查数据块校验是否正常的一个线程

1.4.2.3 DirectoryScanner

周期性扫描磁盘数据块,对比内存中元数据与实际磁盘存储数据块的差异,并根据差异更新内存元数据,使得与磁盘保存一致

1.4.3 服务层

主要用于客户端或者其他节点和DataNode通信,以及访问DataNode状态等功能,主要包括三个模块:

1.4.3.1 HttpServer: 对外提供http服务

1.4.3.2 ipcServer:RPC服务端,响应来自客户端,NameNode和其他DataNode的rpc请求

1.4.3.3 DataXceiverServer:输出传输服务端,响应来自客户端以及其他Data Node的流式接口请求

1.5 datanode工作机制

datanode启动时,每个datanode对本地磁盘进行扫描,将本datanode上保存的block信息汇报给namenode

namenode在接收到的block信息以及该block所在的datanode信息等保存在内存中。

DataNode启动后向NameNode注册,通过后周期性(1小时)的向NameNode上报所有的块信息

通过向NameNode发送心跳保持与其联系(3秒一次),心跳返回结果带有NN的命令,返回的命令为:如块的复制,删除某个数据块…..

如果10分钟没有收到DataNode的心跳,则认为其已经lost,并copy其上的block到其它DataNode

DN在其文件创建后三周进行验证其checkSum的值是否和文件创建时的checkSum值一致

DataNode之间还会相互通信,执行数据块复制任务。同时,在客户端执行写操作的时候,DataNode之间需要相互配合,以保证写操作的一致性

逻辑结构原文链接:https://blog.csdn.net/zhanglh046/article/details/78599095

HDFS DataNode详解的更多相关文章

  1. HDFS体系结构(NameNode、DataNode详解)

    hadoop项目地址:http://hadoop.apache.org/ NameNode.DataNode详解 (一)分布式文件系统概述 数据量越来越多,在一个操作系统管辖的范围存不下了,那么就分配 ...

  2. hadoop hdfs uri详解

    body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...

  3. hadoop之hdfs命令详解

    本篇主要对hadoop命令和hdfs命令进行阐述,yarn命令会在之后的文章中体现 hadoop fs命令可以用于其他文件系统,不止是hdfs文件系统内,也就是说该命令的使用范围更广可以用于HDFS. ...

  4. hadoop之hdfs架构详解

    本文主要从两个方面对hdfs进行阐述,第一就是hdfs的整个架构以及组成,第二就是hdfs文件的读写流程. 一.HDFS概述 标题中提到hdfs(Hadoop Distribute File Syst ...

  5. DataNode 详解及HDFS 2.X新特性

    1. 工作机制 一个数据块在 DataNode 上以文件形式存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度,块数据的校验和,以及时间戳. DataNode 启动后向 Name ...

  6. Hadoop(10)-HDFS的DataNode详解

    1.DataNode工作机制 1)一个数据块在DataNode上以文件形式存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度,块数据的校验和,以及时间戳. 2)DataNode启 ...

  7. kettle连接hadoop&hdfs图文详解

    1 引言: 项目最近要引入大数据技术,使用其处理加工日上网话单数据,需要kettle把源系统的文本数据load到hadoop环境中 2 准备工作: 1 首先 要了解支持hadoop的Kettle版本情 ...

  8. HDFS入门详解

    一. 前提和设计目标 1. 硬件错误是常态,因此需要冗余,这是深入到HDFS骨头里面去了 HDFS可能由成百上千的服务器所构成,每个服务器上存储着文件系统的部分数据.我们面对的现实是构成系统的组件数目 ...

  9. Hadoop分布式文件系统(HDFS)详解

    HDFS简介: 当数据集的大小超过一台独立物理计算机的存储能力时,就有必要对它进行分区 (partition)并存储到若干台单独的计算机上.管理网络中跨多台计算机存储的文件系统成为分布式文件系统 (D ...

随机推荐

  1. python-django框架-电商项目-订单模块开发_20191125

    python-django框架-电商项目-订单模块开发 提交订单页面: 在购物车中点击提交订单,就应该到达提交订单页面了, 显示: 1,收获地址, 2,支付方式 3,用户购买的商品信息,数量,小计, ...

  2. 荼菜的iOS笔记--UIView的几个Block动画

    前言:我的第一篇文章荼菜的iOS笔记–Core Animation 核心动画算是比较详细讲了核心动画的用法,但是如你上篇看到的,有时我们只是想实现一些很小的动画,这时再用coreAnimation就会 ...

  3. WEB 安全 - xss 初探

    零.参考资料 网络攻击-XSS攻击详解: 前端安全之XSS攻击: 一.概念 跨站脚本攻击Cross-site scripting (XSS)是一种安全漏洞,攻击者可以利用这种漏洞在网站上注入恶意的客户 ...

  4. win10安装CAD失败,怎么强力卸载删除注册表并重新安装

    一些搞设计的朋友在win10系统下安装CAD失败或提示已安装,也有时候想重新安装CAD的时候会出现本电脑windows系统已安装CAD,你要是不留意直接安装CAD,只会安装CAD的附件或者直接提示失败 ...

  5. Hell World:)

    第一次弄博客是在2017年春节,自己弄了个域名,租了个小小的VPS,装好了wordpress,挑了一套模板,就这样上线了,可惜wordpress实在不是一个适合写字的地方,插件.主题令人眼花缭乱,慢慢 ...

  6. Windows Server 2008 配置 PHP 环境

    在配置PHP环境之前要先配置好IIS. 传送门-> Win2008 Server下配置安装IIS 如果IIS是以默认的配置安装,则还需要安装CGI. 在这里勾选CGI,然后安装. 创建一个网站 ...

  7. Docker学习笔记_08使用Rancher pipeline搭建基于容器的CICD

    CICD概述 CI-持续集成(Continuous Integration):频繁地将代码集成到主干的一种开发实践,每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错 ...

  8. HTML5图片预览 放大

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  9. Django学习之路02

    静态文件配置 html文件默认全都放在templates文件夹下 对于前段已经写好了的文件, 我们只是拿过来使用 那么这些文件都可以称之为叫"静态文件"静态文件可以是 bootst ...

  10. Laravel wxxcx 微信小程序获取用户信息

    wxxcx 是Laravel5微信小程序登录获取用户信息扩展 部署 12345678 # 安装$ composer require iwanli/wxxcx# 注册服务# 在 /config/app. ...