目录

一、HDFS相关概念

二、设计思路

三、HDFS总体架构

四、HDFS文件读写

五、HDFS优缺点


Hadoop简介

Hadoop是Apache开源软件基金会开发的运行于大规模普通服务器上用于大数据存储、计算、分析的一种分布式存储系统和分布式运行框架。

其设计思想为使用普通机器(高性能、低成本)、数据冗余(HDFS)、并行化处理(MR)、移动计算(海量数据的情况下移动计算比移动数据更有效),其中思想基础为使用普通机器,只有做到高性能和低成本,使用门槛低,Hadoop项目才会迅速普及,被大家运用。

一、HDFS相关概念

首先,它是一个文件系统,用于存储文件,通过统一的命名空间——目录树来定位文件。其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器都有各自清晰的角色定位。重要特性如下:

  • HDFS 中的文件在物理上是分块存储(block):块的大小可以通过配置参数(dfs.blocksize)来规定,默认大小在 hadoop2.x 版本中是 128M,老版本中是 64M,hadoop3.x版本中是256M。
  • HDFS 文件系统会给客户端提供一个统一的抽象目录树:客户端通过路径来访问文件,形如为 hdfs://namenode:port/dir-a/dir-b/dir-c/file.data
hdfs://hadoop02:9000/soft/hadoop-2.6.5-centos-6.7.tar.gz
  • 目录结构及文件分块位置信息(元数据)的管理由 namenode 节点承担,namenode 是 HDFS 集群主节点,负责维护整个 hdfs 文件系统的目录树,以及每一个路径(文件)所对应的 block 块信息(block 的 id,及所在的 datanode 服务器)。
  • 文件的各个 block 的存储管理由 datanode 节点承担,datanode 是 HDFS 集群从节点,每一个 block 都可以在多个 datanode 上存储多个副本(副本数量也可以通过参数设置 dfs.replication,默认是 3)。
  • HDFS 是设计成适应一次写入,多次读出的场景,且不支持文件的修改。(PS:适合用来做数据分析,并不适合用来做网盘应用,因为,不便修改,延迟大,网络开销大,成本太高)

二、设计思路

HDFS 被设计成用来使用低廉的服务器来进行海量数据的存储,那是怎么做到的呢?

  1. 大文件被切割成小文件,使用分而治之的思想让很多服务器对同一个文件进行联合管理
  2. 2每个小文件做冗余备份,并且分散存到不同的服务器,做到高可靠不丢失

默认的数据块大小为128MB(Hadoop-2.2版本之前为64MB)。所以,HDFS文件总是按照128MB被切分成不同的数据块,每个数据块尽可能地存储于不同的DataNode中.不同于普通文件系统的是,当文件长度小于一个数据块的大小时,该文件是不会占用整个数据块空间。

三、HDFS总体架构

HDFS采用Master/Slave(即:主/从)架构:一个HDFS集群是由一个NameNode和若干个DataNode组成。

  1. 主节点 Namenode:集群老大,掌管文件系统目录树,处理客户端读且请求
  2. SecondaryNamenode:严格说并不是 namenode 备份节点,主要给 namenode 分担压力之用
  3. 从节点 Datanode:存储整个集群所有数据块,处理真正数据读写

1.元数据节点(NameNode)

元数据节点的作用是管理分布文件系统的命名空间,并将所有的文件和目录的元数据保存到Linux本地文件系统的目录之中.这些信息采用文件命名空间镜像及编辑日志方式进行保存。此外,NameNode节点还保存了一个文件,该文件信息包括哪些数据块以及这些数据块分布在哪些DataNode之中.但这些信息并不永久存储本地文件系统,而是在NameNode启动时从各个DataNode收集而成。

2.数据节点(DataNode)

数据节点作用是保存HDFS文件的数据内容.在客户端向HDFS写入文件时,大数据文件将被切分成多个数据块,为了保证HDFS的高吞吐量,NameNode将这些数据的存储任务指派给不同的DataNode。每一个DataNode在授受任务之后直接从客户端接收数据,经加密后写入到Linux本地系统的相应目录中。

3.辅助元数据节点(Secondary NameNode)

辅助元数据节点的作用是周期性地将元数据节点的镜像文件fsimage和日志edits合并,以防日志文件过大.合并之后,fsimage文件也在辅助元数据节点保存一份,以便在元数据节点中的镜像文件失败时可以恢复。特别注意:Secondary NameNode不是NameNode出现问题时的备用节点。

四、HDFS文件读写

读文件:客户端向NameNode发送数据读操作请求,NameNode向客户端发送组成该文件的数据块的位置列表(即每个数据块存储哪些DataNode之中),客户端直接从这些DataNode读取文件数据(在读数据过程中,NameNode不参与文件的传输)

写文件:客户端向NameNode发送数据写操作请求,包括文件名和目录路径等部分元数据信息;NameNode告诉客户端到哪个数据节点进行具体的数据写入操作;客户端直接将文件数据传输给DataNode,由DataNode的后台程序负责把数据保存到Linux的本地文件系统之中.

五、HDFS优缺点

1. HDFS优点

  • 可构建在廉价机器上:通过多副本提高可靠性,提供了容错和恢复机制
  • 高容错性:数据自动保存多个副本,副本丢失后,自动恢复
  • 适合批处理:移动计算而非数据,数据位置暴露给计算框架
  • 适合大数据处理:GB、TB、甚至 PB 级数据,百万规模以上的文件数量,10K+节点规模
  • 流式文件访问:一次性写入,多次读取,保证数据一致性

2. HDFS缺点

不适于以下操作

  • 低延迟数据访问:比如毫秒级,低延迟与高吞吐率
  • 小文件存取:占用 NameNode 大量内存 150b* 1000W = 15E,1.5G,寻道时间超过读取时间
  • 并发写入、文件随机修改:一个文件只能有一个写者,仅支持 append

HDFS 不适合存储小文件

  • 元信息存储在 NameNode 内存中:一个节点的内存是有限的
  • 存取大量小文件消耗大量的寻道时间:类比拷贝大量小文件与拷贝同等大小的一个大文件
  • NameNode 存储 block 数目是有限的:一个 block 元信息消耗大约 150 byte 内存,存储 1 亿个 block,大约需要 20GB 内存,如果一个文件大小为 10K,则 1 亿个文件大小仅为 1TB(但要消耗掉 NameNode 20GB内存)。

分布式文件系统—HDFS—基本介绍相关推荐

  1. Hadoop技术(一)分布式文件系统HDFS

    分布式文件系统HDFS 第一章 统一思维 单机大数据处理实现以及问题 问题引入 现在收集到的想法 问题升级 第二章 Hadoop 一 Hadoop简介 HDFS优点 HDFS缺点 二 Hadoop分布 ...

  2. 大数据(3)---分布式文件系统HDFS 介绍

    分布式文件系统HDFS 介绍 来自https://www.cnblogs.com/liango/p/7136448.html  1.三个部分: 客户端.nameserver(可理解为主控和文件索引,类 ...

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

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

  4. 大数据学习(3)- 分布式文件系统HDFS

    文章目录 目录 1.分布式文件系统 1.1 计算机集群概念 1.2 分布式文件系统结构 2.HDFS简介 2.1 HDFS设计的目标 2.2HDFS的局限性 2.3 块的概念 2.4 HDFS主要组件 ...

  5. Hadoop大数据原理(2) - 分布式文件系统HDFS

    文章目录 1. 数据存储问题 2. RAID技术的原理和思路 2.1 常用RAID的原理介绍 2.2 RAID间的性能比较 3. 大数据时代的分布式文件系统 3.1 HDFS的稳固地位 3.2 HDF ...

  6. 大数据技术基础笔记3 分布式文件系统HDFS

    文章目录 3.1 分布式文件系统 3.2 HDFS简介 3.3 HDFS相关概念 3.4 HDFS体系结构 3.5 HDFS存储原理 3.6 HDFS数据读写过程 3.7 HDFS编程实践 3.1 分 ...

  7. 第三章-分布式文件系统HDFS

    第三章-分布式文件系统HDFS 文章目录 第三章-分布式文件系统HDFS HDFS简介 HDFS相关概念 HDFS块与组件 名称节点 第二名称节点 数据节点 HDFS体系结构 HDFS存储原理 冗余数 ...

  8. Hadoop分布式文件系统--HDFS结构分析

    前言 在Hadoop内部,详细实现了很多类的文件系统,当然最最被我们用到的就是他的分布式文件系统HDFS了. 可是本篇文章不会讲HDFS的主从架构等东西,由于这些东西网上和资料书中都讲得非常多了. 所 ...

  9. 分布式文件系统HDFS解析

    分布式文件系统HDFS解析 设计目标 Namenode 和 Datanode HDFS HA HDFS Federation 读写流程 Replication 元数据 副本均衡 元数据磁盘错误 快照 ...

最新文章

  1. java基础进阶一:String源码和String常量池
  2. 从无到有算法养成篇:一文读懂有关Tree的前世今生
  3. android包内存放视频,Android性能优化:手把手教你如何让App更快、更稳、更省(含内存、布局优化等)...
  4. mfc try catch 捕获并显示_你的异常捕获够优雅不?求你别只会try{...} catch{...}了
  5. docker-compose参数介绍
  6. 微软阵营企稳的利好消息:.NET开源、Visual Studio免费
  7. PostGreSQL(1)-源码安装
  8. (02)System Verilog logic数据类型详解
  9. (转)淘淘商城系列——前台系统工程搭建
  10. Linux mint 14下的powerDNS+mysql+powerAdmin搭建个性DNS域名解析服务器
  11. java图书管理系统个人总结_总结:JAVA小项目——图书管理系统
  12. 人工智能 7.专家系统
  13. wps设置显示导航目录
  14. Python办公自动化之文件读写操作与Excel,csv,PDF文件
  15. Emscripten实现把C/C++文件转成wasm,wast(wasm的可读形式),llvm字节码(bc格式),ll格式(llvm字节码的可读形式)并执行wasm...
  16. android开发指纹解锁,Android-指纹解锁技术
  17. coun(1)、count(*)和count(列)的区别
  18. 5G技术构成:透过eMBB、mMTC、uRLLC三大应用场景从通信技术根源出发
  19. 如何用Abaqus隐式动力学画出李萨如图形?
  20. 34.微软账号与Win10正版许可绑定情况查看、绑定方法及使用方法

热门文章

  1. [导入]Eval格式化日期
  2. Remove Nth Node From End of List
  3. 使用openssl生成双向加密证书(转)
  4. Linux关机命令和重启命令
  5. 虚拟机安装以及PCL的配置(1)
  6. Chapter 1 First Sight——25
  7. Asp.Net MVC 教程
  8. 【04】AngularJS 表达式
  9. 从零开始学习OpenCL开发(一)架构
  10. LNK1000: Internal error during IncrBuildImage 链接错误解决方法