分布式文件系统HDFS技术原理概述——《大数据技术原理与应用》课程学习总结

分布式⽂件系统HDFS技术原理概述——《⼤数据技术原理与应⽤》课程学习总
分布式⽂件系统
相对于传统的本地⽂件系统,分布式⽂件系统(Distributed File System)是⼀种通过⽹络实现⽂件在多台主机上记性分布式存储的⽂件系统。分布式⽂件系统的设计⼀般采⽤ “客户端/服务器” 模式。
⽬前,应⽤⼴泛的分布式⽂件系统主要包括 GFS 和 HDFS,后者是前者的开源实现。
3.1.1 计算机集结构
普通的⽂件系统只需要单个计算机节点就可以完成⽂件的存储和处理,单个计算机节点由处理器、内存、⾼速缓存和本地磁盘构成。
分布式⽂件系统把⽂件分布存储到多个计算机节点上,成千上万的计算机节点构成 计算机集。⽬前的分布式⽂件系统所采⽤的的计算机集都是由普通硬件构成的,⼤⼤降低了硬件上的开销。
计算机洁的基本架构如图所⽰:
3.1.2 分布式⽂件系统的结构
在我们熟悉的 Windows、Linux 等操作系统中,⽂件系统⼀般会把磁盘空间划分为每 512 字节位⼀组,
称为“磁盘块”,它是⽂件系统读写操作的最⼩单元,⽂件系统的块(Block)通常是磁盘块的整数倍,即每次读写的数据量必须是磁盘块⼤⼩的整数倍。
分布式⽂件系统也采⽤了块的概念,⽂件被分成若⼲个块进⾏存储,块是数据读写的基本单元。HDFS 默认的⼀个块的⼤⼩是 64 MB。在分布式⽂件系统中,如果⼀个⽂件⼩于⼀个数据块的⼤⼩,它并不占⽤整个数据块的存储空间。
分布式⽂件系统在物理结构上是由计算机集中的多个节点构成的。这写节点分为两类:⼀类叫 “主节点”(Master Node),或者也被称为 “名称节点(NameNode)”;另外⼀类叫 “从节点(Slave Node)”,或者也被称为 “数据结点(DataNode)”。
名称节点:负责⽂件和⽬录的创建、删除和重命名等,同时管理着整个数据节点和⽂件块的映射关系,因此客户端只有访问名称节点才能到请求的⽂件块所在的位置,进⽽到相应位置读取所需⽂件块
数据节点:负责数据的存储和读取,在存储时,由名称节点分配存储位置,然后由客户端把数据直接写⼊相应数据节点;在读取时,客户端从名称节点获取数据节点和⽂件块的映射关系,然后就可以到相应位置访问⽂件块。数据节点也要根据名称节点的命令创建、删除数据块和冗余复制。
计算机集中的节点可能发⽣故障,因此未来保证数据的完整性,分布式⽂件系统通常采⽤ 多副本存储。⽂件块会被复制为多个副本,存储在不同的节点上,⽽且存储同⼀⽂件块的不同副本的各个节点会分布在不同的机架上。
3.1.3 分布式⽂件系统的设计需求
net-link
分布式⽂件系统的设计需求:
设计需求含义HDFS 的实现情况
清洁灌肠透明性具备访问透明性、位置透明性、性能和伸缩透明性
只提供⼀定程度的访问透明性,完全⽀持位置透明性、性能和伸缩
透明性并发控制客户端对于⽂件的读写不应该影响其他客户端对统⼀个⽂件
的读写
机制⾮常简单,任何时间都只允许有⼀个程序写⼊某个⽂件⽂件复制⼀个⽂件可以拥有在不同位置的多个副本
HDFS 采⽤了多副本机制硬件和操作系统的异构性可以在不同的操作系统和计算机上实现同样得客户端和服务
端程序
采⽤ Java 语⾔开发,具有很好的跨平台能⼒可伸缩性⽀持节点的动态加⼊或退出
建⽴规模廉价机器上的分布式⽂件系统集,具有很好的可伸缩性
容错保证⽂件服务在客户端或者服务端出现问题的时候能正常使⽤
具有多副本机制和故障⾃动检测、回复机制安全故障系统的安全性安全性较弱南宁pm2.5
访问透明性 是指⽤户不需要专门区分哪些是本地⽂件,哪些是远程⽂件,⽤户通过相同的操作来访问本地⽂件和远程⽂件资源。 位置透明性是指在不改变路径名的前提下,不管⽂件副本数量和实际存储位置发⽣何种变化,对⽤⽽⾔都是透明的,⽤户不会感受到这种变化。
性能和伸缩透明性是指系统中结点的增加和减少以及性能的变化对⽤户⽽⾔是透明的,⽤户感受不到什么时候⼀个结点加⼊或退出了。
3.2 HDFS 简介
HDFS 要实现⼀下⽬标:
兼容廉价的硬件设备。实现在硬件出错的情况下也能实现数据的完整性
流数据读写。
⼤数据集。HDFS 中的⽂件通常可以达到 GB 甚⾄是 TB 级别,⼀个数百台机器组成的集⾥⾯可以⽀持千万级别这样的⽂件。
简单的⽂件模型。“⼀次写⼊、多次读取”
强⼤的跨平台兼容性。
HDFS 局限性:
不适合低延迟数据访问。HDFS 爱⽤流式数据读取,具有很⾼的数据吞吐量,有较⾼的延迟,不适合在需要较低延迟的应⽤场合。
⽆法⾼效存储⼤量⼩⽂件。⼩⽂件是指⽂件⼤⼩⼩于⼀个块的⽂件,HDFS ⽆法⾼效存储和处理⼤量⼩⽂件,过多⼩⽂件会给系统扩展性和性能带来诸多问题。
不⽀持多⽤户写⼊及任意修改⽂件。HDFS 只允许⼀个⽂件有⼀个写⼊者,不允许多个⽤户对同⼀⽂件执⾏写操作,⽽且只允许对⽂件执⾏追加操作,不能执⾏随机写操作。
3.3 HDFS 的相关概念
3.3.1 块
HDFS 在块的⼤⼩的设计上明显⼤于普通⽂件系统。HDFS 这样做的原因,是为了 最⼩化寻址开销。HDFS 寻址开销不仅包括磁盘寻道开销,还包括数据块的定位开销。块的⼤⼩也不宜设置过⼤,因为,通常 MapReduce 中的 Map 任务⼀次只处理⼀个块的数据,如果启动的任务太少,就会降低作业并⾏处理速度。
HDFS 采⽤抽象的块概念有如下好处:
⽀持⼤规模⽂件存储。⼀个⽂件的⼤⼩不会受到的单个节点的存储容量的限制,可以远远⼤于⽹络中任意节点的存储容量。
简化系统设计。⾸先,⼤⼤简化了存储管理,因为⽂件块⼤⼩是固定的,这样就可以很容易计算出⼀个节点可以存储多少⽂件块;其次,⽅便元数据的管理,元数据不需要和⽂件块⼀起存储,可以由其他系统负责管理元数据。
适合数据备份。
3.3.2 名称节点和数据节点
在 HDFS 中,名称节点(NameNode)负责管理分布式⽂件系统的命名空间(Namespace),保存了两个核⼼的数据结构,即 FsImage 和 EditLog。小冰期
FsImage ⽤于维护⽂件系统树以及⽂件树中所有的⽂件和⽂件夹的元数据,操作⽇志⽂件 EditLog 中记录了所有针对⽂件的创建、删除、重命名等操作。
名称节点记录了每个⽂件中各个所在的数据节点的位置信息,但是并不持久化存储这些信息,⽽是在系统每次启动时扫描所有数据节点重构得到这些信息。
数据节点(DataNode)是分布式⽂件系统 HDFS 的⼯作节点,负责数据的存储和读取,会根据客户端或者名称节点的调度来进⾏数据的存储和检索,并且向名称节点定期发送⾃⼰所存储的块的列表。每个数据节点中的数据会被保存在各⾃节点的本地 Linux ⽂件系统中。
3.3.3 第⼆名称节点
血管胸EditLog 逐渐变⼤,当名称节点重启时,会导致名称节点在启动过程中长期处于“安全模式”,⽆法正常对外提供写操作,影响⽤户的使⽤。
为了解决 EditLog 逐渐变⼤带来的问题,HDFS 在设计中采⽤了 第⼆名称节点(Secondary NameNode)。第⼆名称节点有两个⽅⾯的功能:⾸先,可以完成 EditLog 与 FsImage 的合并操作,减⼩ EditLog ⽂件的⼤⼩,缩短名称节点启动时间;其次,可以作为名称节点的“检查点”,保存名称节点中的元数据信息。
3.4 HDFS 体系结构
3.4.1 概述孙俪档案
HDFS 采⽤了主从(Master/Slave)结构模型,⼀个 HDFS 集包括⼀个名称节点和若⼲个数据节点。
每个数据节点会周期性地向名称节点发送“⼼跳”信息,报告⾃⼰的状态,没有按时发送⼼跳信息的数据节点会被标记为“宕机”,不会再给它分配任何 I/O 请求。
3.4.2 HDFS 命名空间管理

本文发布于:2024-09-22 06:44:41,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/283700.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:节点   数据   系统
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议