HDFS原理

简介: HDFS原理

💨HDFS基本介绍

🎈概念

HDFS ( Hadoop Distributed File System):指适合运行在通用硬件上的 分布式文件系统。 它是一个文件系统,用于存储文件,通过统一的命名空间——目录树来定位文件 它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色;

图片.png

🎈Hadoop技术体系

应用层:Hadoop Map Reduce 、Spark调度层:Hadoop YARN存储层:Hadoop HDFS

🎈文件系统和存储

🚩Windows单机文件系统🚩Linux单机文件系统🚩分布式文件系统:大容量,高可靠,低成本分布式存储系统:🚩对象存储🚩文件系统🚩块存储🚩数据库

💨功能特性及优缺点

🎈分布式

受GFS启发,用Java实现的开源系统,没有实现完整的POSIX文件系统语义。

🎈容错

自动处理、规避多种错误场景,例如常见的网络错误、机器宕机等。

🎈高可用

一主多备模式实现元数据高可用,数据多副本实现用户数据的高可用

🎈高吞吐

Client直接从DataNode读取用户数据,服务端支持海量client并发读写

🎈可扩展

支持联邦集群模式,DataNode数量可达 10w级别

🎈廉价

只需要通用硬件,不需要定制高端的昂贵硬件设备

HDFS适用于大文件存储、流式数据访问,适合那些有着超大数据集(large data set)的应用程序;不适合大量小文件、随机写入、低延迟读取

数据访问。运行在HDFS之上的应用程序必须流式地访问它们的数据集,它不是运行在普通文件系统之上的普通程序。HDFS被设计成适合批量处理的,而不是用户交互式的。重点是在数据吞吐量,而不是数据访问的反应时间 。

简单一致性模型。大部分的HDFS程序对文件操作需要的是一次写多次读取的操作模式。一个文件一旦创建、写入、关闭之后就不需要修改了。这个假定简单化了数据一致的问题,并使高吞吐量的数据访问变得可能。一个Map-Reduce程序或者网络爬虫程序都可以完美地适合这个模型。

🎈优点:

1)适合存储非常大的文件2)适合流式数据读取,即适合“只写一次,读多次”的数据处理模式3)适合部署在廉价的机器上

🎈缺点:

1)不适合存储大量的小文件,因为受Namenode内存大小限制2)不适合实时数据读取,高吞吐量和实时性是相悖的,HDFS选择前者3)不适合需要经常修改数据的场景

💨架构原理

🎈HDFS组件

图片.png

🎈Client写流程

1)Client向NameNode请求写入新数据块2)NameNode返回副本目标DN列表(<dn08, dn01, dn06> )3)Client向DataNode写数据块4)dn08和dn01互传ACK ,dn01和dn06互传ACK5)dn08向dn01传Flush,dn01向dn06传Flush6)Client向NameNode发送complete请求

🎈Client读流程

1)Client向NameNode发送getBlockL ocations请求2)NameNode返回返回副本目标DN列表(<dn08, dn01, dn06> )3)Client向DataNode写数据块


写数据:客户端要向HDFS写数据,首先要跟namenode通信以确认可以写文件并获得接收文件block的datanode,然后,客户端按顺序将文件逐个block传递给相应datanode

读数据:客户端将要读取的文件路径发送给namenode,namenode获取文件的元信息(主要是block的存放位置信息)返回给客户端

💨元数据节点NameNode

🎈维护目录树

维护目录树的增删改查操作,保证所有修改都能持久化,以便机器掉电不会造成数据丢失或不一致。

🎈维护文件和数据块的关系

文件被切分成多个块,文件以数据块为单位进行多副本存放

🎈维护文件块存放节点信息

通过接收DataNode的心跳汇报信息,维护集群节点的拓扑结构和每个文件块所有副本所在的DataNode类表。

🎈分配新文件存放节点

Client创建新的文件时候,需要有NameNode来确定分配目标DataNode

💨数据结点DataNode

🎈数据块存取

DataNode需要高效实现对数据块在硬盘上的存取

🎈心跳汇报

把存放在本机的数据块列表发送给NameNode,以便NameNode能维护数据块的位置信息,同时让NameNode确定该节点处于正常存活状态

🎈副本复制

1)数据写入时Pipeline IO操作

2)机器故障时补全副本

💨关键设计

💨分布式存储系统基本概念

🎈容错能力

能够处理绝大部分异常场景,例如服务器宕机、网络异常、磁盘故障、网络超时等。

🎈致性模型

为了实现容错,数据必须多副本存放,一致性要解决的问题是如何保障这多个副本的内容都是一致的。

🎈可扩展性

分布式存储系统需要具备横向扩张scale-out的能力。

🎈节点体系

常见的有主从模式、对等模式等,不管哪种模式,高可用是必须的功能。

🎈数据放置

系统是由多个节点组成,数据是多个副本存放时,需要考虑数据存放的策略。

🎈单机存储引擎

在绝大部分存储系统中,数据都是需要落盘持久化,单机引擎需要解决的是根据系统特点,如何高效得存取硬盘数据。

💨NameNode目录树维护

🎈fsimage

1)文件系统目录树2)完整的存放在内存中3)定时存放到硬盘上4)修改是只会修改内存中的目录树

🎈EditLog

1)目录树的修改日志2)client更新目录树需要持久化EditL og后才能表示更新成功3)EditLog可存放在本地文件系统,也可存放在专用系统上4)NameNode HA方案个关键 点就是如何实现EditLog共享

💨NameNode数据放置

🎈数据块信息维护

1)目录树保存每个文件的块id2)NameNode维护了每个数据块所在的节点信息3)NameNode根据DataNode汇报的信息动态维护位置信息4)NameNode不会持久化数据块位置信息

🎈数据放置策略

1)新数据存放到哪写节点

2)数据均衡需要怎么合理搬迁数据

3)3个副本怎么合理放置

💨DataNode

🎈数据块的硬盘存放

1)文件在NameNode已分割成block2)DataNode以block为单位对数据进行存取

🎈启动扫盘

1)DataNode需要知道本机存放了哪些数据块2)启动时把本机硬盘上的数据块列表加载在内存中

💨HDFS写异常处理

🎈Lease Recovery

租约:Client要修改一个文件时, 需要通过NameNode.上锁,这个锁就是租约(L ease)。情景:文件写了一半,client自己挂掉了。可能产生的问题:副本不一致,Lease无法释放解决方法:Lease Recovery

🎈Pipeline Recovery

情景:文件写入过程中,DataNode侧出现异常挂掉了。

异常出现的时机:创建连接时,数据传输时,complete阶段

解决方法:Pipeline Recovery

💨Client读异常处理

情景:读取文件的过程,DataNode 侧出现异常挂掉了

解决方法:节点Failover

增强情景:节点半死不过,读取很慢

💨控制面建设

🎈可观测性设施

指标埋点数据采集访问日志数据分析

🎈运维体系建设

运维操作需要平台化NameNode操作复杂DataNode机器规模庞大组件控制面API


目录
相关文章
|
26天前
|
存储 分布式计算 安全
bigdata-07-Hdfs原理到实战
bigdata-07-Hdfs原理到实战
36 0
|
4月前
|
存储 分布式计算 Hadoop
【大数据技术Hadoop+Spark】HDFS概念、架构、原理、优缺点讲解(超详细必看)
【大数据技术Hadoop+Spark】HDFS概念、架构、原理、优缺点讲解(超详细必看)
114 0
|
9月前
|
存储 大数据
大数据数据存储的分布式文件系统的HDFS的核心机制理解的数据读/写原理
在 Hdfs 中,数据的读写原理是基于块的分布式存储。
52 0
|
8月前
|
JSON 缓存 关系型数据库
5、DataX(DataX简介、DataX架构原理、DataX部署、使用、同步MySQL数据到HDFS、同步HDFS数据到MySQL)(二)
5、DataX(DataX简介、DataX架构原理、DataX部署、使用、同步MySQL数据到HDFS、同步HDFS数据到MySQL)(二)
|
8月前
|
存储 SQL JSON
5、DataX(DataX简介、DataX架构原理、DataX部署、使用、同步MySQL数据到HDFS、同步HDFS数据到MySQL)(一)
5、DataX(DataX简介、DataX架构原理、DataX部署、使用、同步MySQL数据到HDFS、同步HDFS数据到MySQL)(一)
|
9月前
|
存储 分布式计算 负载均衡
Hadoop生态系统中的数据存储技术:HDFS的原理与应用
Hadoop生态系统中的数据存储技术:HDFS的原理与应用
|
9月前
|
存储 大数据
大数据数据存储的分布式文件系统的HDFS的核心机制理解的数据复制和原理
在 Hdfs 中,数据的复制和原理是基于块的分布式存储。
43 1
|
11月前
|
运维
图说HDFS基本原理
图说HDFS基本原理
69 0
|
存储 分布式计算 安全
HDFS分布式文件系统架构原理详解
HDFS(Hadoop Distributed File System)是Hadoop核心组成之一,是分布式计算中数据存储管理的基础,被设计成适合运行在通用硬件上的分布式文件系统。HDFS架构中有两类节点,一类是NameNode,又叫“元数据节点”,另一类是DataNode,又叫“数据节点”,分别执行Master和Worker的具体任务。HDFS是一个(Master/Slave)体系结构,“一次写入,多次读取”。HDFS的设计思想:分而治之—将大文件、大批量文件分布式存放在大量独立的机器上。
HDFS分布式文件系统架构原理详解
|
存储 运维 分布式计算
HDFS 原理与应用|青训营笔记
HDFS的使用场景,尤其是在大数据场景中的常规应用,同时也了解HDFS在其它场景的一些应用,加深对存储系统应用场景的理解。并且剖析了HDFS的整体架构,易于理解。
55 0
HDFS 原理与应用|青训营笔记

相关实验场景

更多