前言

在Hadoop内部,详细实现了很多类的文件系统,当然最最被我们用到的就是他的分布式文件系统HDFS了。

可是本篇文章不会讲HDFS的主从架构等东西,由于这些东西网上和资料书中都讲得非常多了。

所以,我决定以我个人的学习所得。来讲讲HDFS内部的一些有意思的东西,也作为一个起始点。为兴许继续深入当中模块的学习做基础。

HDFS两大主流关系模块

  • 与NameNode相关,文件系统元数据操作相关。包含文件文件夹树,每一个文件对于数据块列表,fsImgae镜像文件和editlog编辑日志在维护整个集群元数据的时候的各种操作。

  • 与DataNode相关。指的就是数据块与数据节点的相应关系,通俗的理解就是某个数据块保存在哪些数据节点上。里面事实上会涉及到非常多操作,包含block副本复制,损坏块删除。租约机制等等。

第一关系模块(NameNode相关)

涉及的类

INode

Hadoop也相同用了相似linux文件系统中的i-node的概念,即索引节点。

INode是一个抽象类。后面的INodeDirectory以及INodeFile都是他的子类。这样就能够做到保持一些共同拥有的属性。

INodeDirectory,INodeFile

  • 经常用法:

    • INodeDirectory.removeChild()

FSImage

  • 命名空间镜像类,以下是经常使用的方法

    • FSImage.saveFSImage()–讲当前时刻的命名空间镜像,保存文件里
    • FSImage.loadFSImage()–读取镜像文件里的数据。恢复元数据

FSEditLog

  • 编辑日志类。以下是经常用法

    • FSEditLog.logEdit()–写入日志记录操作。
    • FSEditLog.logSync()–同步日志记录操作。
    • FSEditLog.rollEditLog()–用于第二名字节点上载新命名空间镜像。

FSDirectory

  • HDFS引入FSDirectory作为门面,处理各种操作,然后分派到子系统中的各个对象中。经常用法

    • getFileInfo()–获取文件状态信息
    • setOwner()–改动文件主标识符和用户组标识符

第二关系模块(DataNode相关)

Block数据块相关类

  • BlocksMap–数据块映射,名字节点上数据块的元数据
  • DatanodeDescriptor–数据节点描写叙述符,名字节点对数据节点的抽象
  • BlockInfo-BlocksMap,保存数据节点的信息

数据节点管理

  • refreshNodes()–会读取dfs.hosts.exclude,include配置的信息。
  • registerDatanode–数据节点注冊
  • DataNode.offerService()–数据节点利用循环向名字节点发送信息。

网络结构

  • 相关类NetworkTopology,经常用法:

    • getDistance()–计算网络距离
    • isOnSameRack()–推断节点是否属于同一机架上
  • DNSToSwitchMapping–此接口用于主机到网络位置的转换

数据块管理

  • 相关类主要为FSNameSystem,经常用法:

    • FSNameSystem.addStoreBlock()–加入数据块副本
    • blockReceived()–数据块提交方法,数据节点成功接收到一个数据块后,必须使用此方法向名字节点提交数据块信息。

读取数据方法

  • getBlockLocations()–读取数据前须要定位数据的位置,返回LocatedBlock对象实例
  • reportBadBlocks()

租约

  • 简单的说,租约是名字节点给予租约持有者在规定时间内对文件的使用权限。

    • LeaseManager.Lease 租约持有者的信息,就是client。
    • LeaseManager.add()–在租约管理器中加入打开文件的信息。
    • FSNamesystem.checkLease()–租约检查操作。为追加数据打开文件。加入。放弃数据块或关闭文件的时候,都须要对被操作的文件进行租约检查。
    • LeaseManager.renewLease()–通过更新Lease.lastUpdate的值来维护租约。
    • LeaseManager.Monitor–这是一个内部类。Monitor类实现了runnable接口,定期进行租约检查。

安全模式

  • SafeMode安全模式是HDFS的一个仅仅读的视图模式,全部的更新操作都会检验一次是否处于安全模式,相关类以及方法

    • SafeModeMonitor–安全模式的检查线程实现类。
    • canLeave()–推断内部的reached变量的值
    • setSafeMode()

參考文献

《Hadoop技术内部–HDFS结构设计与实现原理》.蔡斌等

Hadoop分布式文件系统--HDFS结构分析相关推荐

  1. Hadoop分布式文件系统HDFS的工作原理详述

    Hadoop分布式文件系统(HDFS)是一种被设计成适合运行在通用硬件上的分布式文件系统.HDFS是一个高度容错性的系统,适合部署在廉价的机器上.它能提供高吞吐量的数据访问,非常适合大规模数据集上的应 ...

  2. JAVA大数据(二) Hadoop 分布式文件系统HDFS 架构,MapReduce介绍,Yarn资源调度

    文章目录 1.分布式文件系统HDFS 1.HDFS的来源 2.HDFS的架构图之基础架构 2.1 master/slave 架构 2.2 名字空间(NameSpace) 2.3 文件操作 2.4副本机 ...

  3. 大数据技术之Hadoop分布式文件系统HDFS系统知识整理(从入门到熟练操作)

    系列博客 1.大数据技术之Hadoop完全分布式集群搭建+Centos7配置连通外网和主机 2.大数据技术之Hadoop编译源码 3.大数据技术之Hadoop分布式文件系统HDFS系统知识整理(从入门 ...

  4. Hadoop分布式文件系统 (HDFS)

    Hadoop分布式文件系统 简介 ​ HDFS(Hadoop distribute file system) 是Hadoop核心组成,是分布式存储服务 ​ 分布式文件系统能够横跨多态计算机.在大数据时 ...

  5. Hadoop 分布式文件系统 - HDFS

    当数据集超过一个单独的物理计算机的存储能力时,便有必要将它分不到多个独立的计算机上.管理着跨计算机网络存储的文件系统称为分布式文件系统.Hadoop 的分布式文件系统称为 HDFS,它 是为 以流式数 ...

  6. Hadoop分布式文件系统HDFS

    HDFS的探究: HDFS HDFS是 Hadoop Distribute File System的缩写,是谷歌GFS分布式文件系统的开源实现,Apache Hadoop的一个子项目,HDFS基于流数 ...

  7. Hadoop分布式文件系统——HDFS

    一.介绍 HDFS (Hadoop Distributed File System)是 Hadoop 下的分布式文件系统,具有高容错.高吞吐量等特性,可以部署在低成本的硬件上. 二.HDFS 设计原理 ...

  8. Hadoop分布式文件系统——HDFS原理简介

    阅读前必看 这篇文章与其说是一篇文章,不如说是一篇在家学习的笔记,其中大部分内容来自于github上一个大神的开源笔记,在此附上链接,表达版权所属以及敬意:github源地址 一.介绍 HDFS(Ha ...

  9. Hadoop分布式文件系统hdfs的shell操作命令大全

    hadoop fs -操作命令 -参数 -ls #显示目录信息 -->hadoop fs -ls hdfs://hadoop-server-00:9000/ 这些参数中,所有的hdfs路径都可以 ...

最新文章

  1. 三大框架整合教程(Spring+SpringMVC+MyBatis)
  2. Java中的Annotation(2)----Annotation工作原理
  3. 手工部署Sqlserver CLR程序集
  4. PHP数组加表格_php数组输出html表格的操作方法
  5. “嫌贫爱富”之人,从一顿饭局当中便可看出
  6. JAVA酒店管理系统
  7. java bitmap位图_BitMap位图与海量数据的理解
  8. linux步进电机实验程序,基于嵌入式Linux的步进电机驱动程序设计
  9. Python快速判断素数方法
  10. 问卷java_Java 问卷调查
  11. ubuntu16.04 独立显卡驱动安装
  12. More than just chatter
  13. 机器学习是什么?详解机器学习概念
  14. vue中,输入框只允许输入数字
  15. R语言survival包clogit函数构建条件logistic回归模型、summary函数查看模型汇总统计信息、通过似然比检验分析结果判断模型有无统计学意义
  16. 气体灭火系统的发展历程
  17. 小陈学js Arguments
  18. 《当程序员的那些狗日日子》(五十九)凤凰涅磐
  19. 还在埋头干活?给程序员的几个忠告
  20. torchvision transform巨坑

热门文章

  1. python末位1的位置_用Python黑了整个学院学姐的电话和QQ,爬虫牛皮!兄弟们耗子尾之!...
  2. Java程序设计语言(基础篇)机械工业出版社 原属第10版
  3. Matlab | MATLAB编辑器:无法使用GBK编码保存文件,请改用UTF-8编码保存文件(问题解决)
  4. matlab图像显示时间,请问怎么把样点数变成时间显示在图像了里
  5. mysql提供的六种约束_SQL的六种约束
  6. MFC与Matlab编程总结 (以《Matlab与C/C++混合编程技术(第三版)》-刘维 第五章 生成DLL为例)
  7. python爬虫基础知识点_入门Python爬虫知识点梳理
  8. java语言实验报告,Java语言 实验报告(二)
  9. java switch小程序,小程序自定义switch组件
  10. 那些数学不好的程序员?最后都如何了(文末送书)