概述

定义

HDFS是一个分布式文件管理系统

优缺点

  • 优点

    (1)高容错

    多副本提高容错、某个副本丢失可以自动恢复

    (2)适合处理大数据

    ​ 能处理PB级别数据、能处理百万的文件数据量

    (3)可构建在廉价机器上

  • 缺点

    (1)不适合低时延数据访问

    (2)无法高效存储小文件

    (3)不支持并发写入和文件修改

HDFS组成架构

HDFS文件块大小

HDFS数据流

写数据

1)客户端通过Distributed FileSystem模块向NameNode请求上传文件,NameNode检查目标文件是否已存在,父目录是否存在。

2)NameNode返回是否可以上传。

3)客户端请求第一个 Block上传到哪几个DataNode服务器上。

4)NameNode返回3个DataNode节点,分别为dn1、dn2、dn3。

5)客户端通过FSDataOutputStream模块请求dn1上传数据,dn1收到请求会继续调用dn2,然后dn2调用dn3,将这个通信管道建立完成。

6)dn1、dn2、dn3逐级应答客户端。

7)客户端开始往dn1上传第一个Block(先从磁盘读取数据放到一个本地内存缓存),以Packet为单位,dn1收到一个Packet就会传给dn2,dn2传给dn3;dn1每传一个packet会放入一个应答队列等待应答。

8)当一个Block传输完成之后,客户端再次请求NameNode上传第二个Block的服务器。(重复执行3-7步)。

读数据

1)客户端通过Distributed FileSystem向NameNode请求下载文件,NameNode通过查询元数据,找到文件块所在的DataNode地址。

2)挑选一台DataNode(就近原则,然后随机)服务器,请求读取数据。

3)DataNode开始传输数据给客户端(从磁盘里面读取数据输入流,以Packet为单位来做校验)。

4)客户端以Packet为单位接收,先在本地缓存,然后写入目标文件。

网络拓扑-节点距离计算

节点距离:两个节点到达最近的共同祖先的距离总和

在HDFS写数据的过程中,NameNode会选择距离待上传数据最近距离的DataNode接收数据。那么这个最近距离怎么计算呢?

机架感知(写数据的副本存储节点选择)

官网介绍(2.X和3.X策略不同)

http://hadoop.apache.org/docs/r2.7.2/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html#Data_Replication

http://hadoop.apache.org/docs/r3.1.3/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html#Data_Replication

  • hadoop2.7.2版本(2-1)

  • hadoop3.1.3版本(1-2)

最新文章

  1. deiban8 sourcelist
  2. linux权限补充:rwt rwT rws rwS 特殊权限
  3. linux配置网卡
  4. Mybatis 学习笔记1
  5. wpf,记录一下颜色设置的2中方法,,,
  6. weed-fs 基础测试
  7. [转]如何在 Visual Studio 中使用 Git 同步代码到 CodePlex
  8. Mac窗口管理管理软件SizeUp
  9. [Laravel] 获取执行的Sql
  10. Executor框架
  11. 库函数atoi()的实现
  12. JavaScript中的execCommand()命令详解及实例展示
  13. hdu_5950_Recursive sequence(矩阵快速幂)
  14. 自动化测试:behave
  15. Java设计模式-单例模式详解(上)
  16. 机器学习---线性回归(Machine Learning Linear Regression)
  17. MyEclipse使用总结——设置MyEclipse开发项目时使用的JDK
  18. 【建模应用】PCA主成分分析原理详解
  19. 手把手教你实现自己的abp代码生成器
  20. pgm7

热门文章

  1. Pytorch中stack()方法的理解
  2. linux堡垒机下定位日志文件内容
  3. JDK 之 HttpClient(jdk11)
  4. PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilder,阿里MAVEN仓库地址更新为了https问题
  5. MySQL统计总数就用count(*),别花里胡哨的《死磕MySQL系列 十》
  6. 要web开发精品教程吗?免费无广告一百期连讲的那种-逐浪CMS前端开发100期入门教程全面开放
  7. Linux——搭建Samba(CIFS)服务器
  8. 记一次 IIS 站点配置文件备份和还原,物理路径文件批量备份
  9. [luogu5577]算力训练
  10. [loj3343]超现实树