Hadoop分布式文件系统HDFS架构

简介:

1、HDFS介绍

1.1、HDFS是什么?

HDFS(Hadoop Distributed File System)是Hadoop项目的核心子项目,是分布式计算中数据存储管理的基础,是基于流数据模式访问和处理超大文件的需求而开发的,可以运行于廉价的商用服务器上。它所具有的高容错、高可靠性、高可扩展性、高获得性、高吞吐率等特征为海量数据提供了不怕故障的存储,为超大数据集(Large Data Set)的应用处理带来了很多便利;HDFS 源于 Google 在2003年10月份发表的GFS(Google File System) 论文编写出来的一套分布式文件系统。

1.2、HDFS架构

HDFS架构
HDFS采用master/slave架构。一个HDFS集群是由一个Namenode和一定数目的Datanodes组成。

1)、Namenode是一个中心服务器(master),负责管理文件系统的名字空间(namespace)、客户端对文件的读写请求和配置副本策略。

2)、Datanode在集群中一般是一个节点一个((slave)),负责管理它所在节点上的存储。HDFS暴露了文件系统的名字空间,用户能够以文件的形式在上面存储数据。从内部看,一个文件其实被分成一个或多个数据块,这些块存储在一组Datanode上。

3)、Client是一个客户端,通过命令可以访问HDFS;与Namenode交互时获取文件的位置信息;与Datanode交互时读取或写入数据;文件写入到HDFS时,Client 将文件切分成 一个一个的Block,然后存储到不同的Datanode上。

Namenode执行文件系统的名字空间操作,比如打开、关闭、重命名文件或目录。它也负责确定数据块到具体Datanode节点的映射。Datanode负责处理文件系统客户端的读写请求。在Namenode的统一调度下进行数据块的创建、删除和复制。

1.2.1、HDFS写入流程

1)、hadoop客户端和Namenode通信请求上传文件,Namenode检查目标文件是否已存在,父目录是否存在

2)、Namenode返回信息给hadoop客户端是否可以上传

3)、hadoop客户端会先对文件进行切分,比如一个blok块128m,(如:文件有300m就会被切分成3个块,一个128M、一个128M、一个44M)请求第一个 block该传输到哪些Datanode服务器上

4)、namenode返回Datanode的服务器信息给hadoop客户端

5)、hadoop客户端请求一台Datanode上传数据(本质上是一个RPC调用,建立pipeline),第一个Datanode收到请求会继续调用第二个Datanode,然后第二个调用第三个Datanode,将整个pipeline建立完成,逐级返回hadoop客户端

6)、hadoop客户端开始往第一个Datanode上传第一个block(先从磁盘读取数据放到一个本地内存缓存),以packet为单位(一个packet为64kb),当然在写入的时候Datanode会进行数据校验,它并不是通过一个packet进行一次校验而是以checksum为单位进行校验(512byte),第一台Datanode收到一个packet就会传给第二台,第二台传给第三台;第一台每传一个packet会放入一个应答队列等待应答

7)、当一个block传输完成之后,hadoop客户端再次请求Namenode上传第二个block的Datanode服务器,直至所有的block上传完成。

1.2.2、HDFS读取流程

1)、hadoop客户端发送请求,调用DistributedFileSystem API的open方法发送请求到Namenode,获得存放在Datanode节点上文件的block位置映射信息;

2)、Namenode把文件所有block的位置信息返回给hadoop客户端;

3)、hadoop客户端拿到block的位置信息后调用FSDataInputStream API的read方法并行的读取block信息,block默认有3个副本,所以每一个block只需要从一个副本读取就可以;

4)、hadoop客户端从Datanode上取回文件的所有block按照一定的顺序组成最终需要的文件;

1.3、HDFS的特点

1.3.1、HDFS的优点(适合做)

1)、高容错性

  • 数据自动保存多个副本。它通过增加副本的形式,提高容错性。
  • 某一个副本丢失以后,它可以自动恢复,这是由 HDFS 内部机制实现的。

2)、适合处理高吞吐量

  • 它是通过移动计算而不是移动数据;
  • 它会把数据位置暴露给计算框架;
  • 对计算的时延不敏感;

3)、适合存储和管理大规模数据(PB级别)

  • 处理数据达到TB、甚至PB级别的数据。
  • 能够处理百万规模以上的文件数量,数量相当之大。
  • 能够处理10K节点的规模。

4)、适合简单的一致性

  • 一次写入,多次读取。文件一旦写入不能修改,只能追加。
  • 它能保证数据的一致性。

5)、适合处理非结构化数据

  • 可以处理多类型的数据(音频、视频、文本)

1.3.2、HDFS的缺点(不适合做)

1)、低延时数据访问

  • 比如毫秒级的来存储数据,这是不行的,它做不到。
  • 它适合高吞吐率的场景,就是在某一时间内写入大量的数据。但是它在低延时的情况下是不行的,比如毫秒级以内读取数据,这样它是很难做到的。

2)、小文件存储

  • 存储大量小文件(这里的小文件是指小于HDFS系统的Block大小的文件(1.0版本默认64M,2.0版本默认128M))的话,它会占用 NameNode大量的内存来存储文件、目录和块信息。这样是不可取的,因为NameNode的内存总是有限的。
  • 小文件存储的寻道时间会超过读取时间,它违反了HDFS的设计目标。

3)、并发写入、文件随机修改

  • 一个文件只能有一个写,不允许多个线程同时写。
  • 仅支持数据 append(追加),不支持文件的随机修改。

1.4、HDFS数据存放和健壮性(安全)

1.4.1、HDFS副本

  • 副本1:相同客户端的节点上;
  • 副本2:不同机架中的节点上;
  • 副本3:和副本2同机架中的不同节点;
  • 其他副本:随机存放

所有副本的策略存放都由Namenode负责,Namenode会周期性地接受集群中数据节点Datanode的心跳和块(block)报告,一个心跳的传送到Namenode表示这个数据节点是正常的。

1.4.2、HDFS数据的健壮性(安全)

  • 磁盘数据错误,心跳检测和重新复制
  • 集群均衡
  • 数据完整性
  • 元数据磁盘错误
  • 快照

2、HDFS 命令

  • 列出文件或文件夹:hadoop fs -ls /
  • 创建文件夹:hadoop fs -mkdir /user/wcdoc
  • 上传文件:hadoop fs -put /tmp/LICENSE.txt /user/wcdoc
  • 下载文件:hadoop fs -get /user/wcdoc/LICENSE.txt /tmp
  • 查看文件:hadoop fs -cat /user/wcdoc/LICENSE.txt
  • 删除文件(夹):hadoop fs -rm(r) /usr/wcdoc/LICENSE.txt

3、参考资料


本文转自 巴利奇 51CTO博客,原文链接:http://blog.51cto.com/balich/2058317
相关文章
|
12天前
|
存储 分布式计算 Hadoop
大数据处理架构Hadoop
【4月更文挑战第10天】Hadoop是开源的分布式计算框架,核心包括MapReduce和HDFS,用于海量数据的存储和计算。具备高可靠性、高扩展性、高效率和低成本优势,但存在低延迟访问、小文件存储和多用户写入等问题。运行模式有单机、伪分布式和分布式。NameNode管理文件系统,DataNode存储数据并处理请求。Hadoop为大数据处理提供高效可靠的解决方案。
35 2
|
1月前
|
设计模式 架构师 前端开发
JavaEE企业级分布式高级架构师课程
本课程主要面向1-5年及以上工作经验的Java工程师,大纲由IT界知名大牛 — 廖雪峰老师亲自打造,由来自一线大型互联网公司架构师、技术总监授课,内容涵盖深入spring5设计模式/高级web MVC开发/高级数据库设计与开发/高级响应式web开发/分布式架构设计等主流核心技术。
22 1
JavaEE企业级分布式高级架构师课程
|
12天前
|
分布式计算 Hadoop 大数据
大数据技术与Python:结合Spark和Hadoop进行分布式计算
【4月更文挑战第12天】本文介绍了大数据技术及其4V特性,阐述了Hadoop和Spark在大数据处理中的作用。Hadoop提供分布式文件系统和MapReduce,Spark则为内存计算提供快速处理能力。通过Python结合Spark和Hadoop,可在分布式环境中进行数据处理和分析。文章详细讲解了如何配置Python环境、安装Spark和Hadoop,以及使用Python编写和提交代码到集群进行计算。掌握这些技能有助于应对大数据挑战。
|
25天前
|
设计模式 安全 Java
【分布式技术专题】「Tomcat技术专题」 探索Tomcat技术架构设计模式的奥秘(Server和Service组件原理分析)
【分布式技术专题】「Tomcat技术专题」 探索Tomcat技术架构设计模式的奥秘(Server和Service组件原理分析)
29 0
|
3天前
|
存储 关系型数据库 分布式数据库
电子好书发您分享《PolarDB分布式版架构介绍PolarDB分布式版架构介绍》
**《PolarDB分布式版架构介绍》电子书分享:** 探索阿里云PolarDB分布式设计,采用计算存储分离,借助GMS、CN组件实现大规模扩展。[阅读更多](https://developer.aliyun.com/ebook/8332/116553?spm=a2c6h.26392459.ebook-detail.5.3b3b2ccbVVjjt0)
13 3
|
26天前
|
NoSQL Java Redis
【分布式技术专题】「分布式技术架构」手把手教你如何开发一个属于自己的分布式锁的功能组件(二)
【分布式技术专题】「分布式技术架构」手把手教你如何开发一个属于自己的分布式锁的功能组件
15 0
|
22小时前
|
关系型数据库 分布式数据库 数据库
电子好书发您分享《PolarDB分布式版架构介绍》
阅读阿里云电子书《PolarDB分布式版架构介绍》,深入理解这款高性能数据库的分布式架构设计。书中通过图文并茂的方式揭示了PolarDB在分布式场景下的核心特性和技术优势,适合数据库爱好者和云计算从业者学习。[阅读链接](https://developer.aliyun.com/ebook/8332/116553?spm=a2c6h.26392459.ebook-detail.5.4ab72ccbIzDq2Q)
|
1天前
|
存储 SQL 关系型数据库
电子好书发您分享《PolarDB分布式版架构介绍》
**PolarDB分布式版详解:** 阿里云的PolarDB采用计算存储分离架构,利用GMS进行元数据管理,CN处理分布式SQL。结合PolarFS,实现高效存储与计算,支持大规模扩展。[阅读完整架构介绍](https://developer.aliyun.com/ebook/8332/116553?spm=a2c6h.26392459.ebook-detail.5.5b912ccbE20nqg)
|
10天前
|
分布式计算 Hadoop 测试技术
Hadoop【基础知识 05】【HDFS的JavaAPI】(集成及测试)
【4月更文挑战第5天】Hadoop【基础知识 05】【HDFS的JavaAPI】(集成及测试)
38 8
|
10天前
|
分布式计算 资源调度 Hadoop
Hadoop【基础知识 03+04】【Hadoop集群资源管理器yarn】(图片来源于网络)(hadoop fs + hadoop dfs + hdfs dfs 使用举例)
【4月更文挑战第5天】Hadoop【基础知识 03】【Hadoop集群资源管理器yarn】(图片来源于网络)Hadoop【基础知识 04】【HDFS常用shell命令】(hadoop fs + hadoop dfs + hdfs dfs 使用举例)
37 9