在介绍HDFS读写流程时,先介绍下Block副本放置策略。

Block副本放置策略

  • 第一个副本:放置在上传文件的DataNode;如果是集群外提交,则随机挑选一台磁盘不太满,CPU不太忙的节点。
  • 第二个副本:放置在与第一个副本不同的机架的节点上。
  • 第三个副本:与第二个副本相同机架的节点。
  • 更多副本:随机节点。

HDFS写流程

  • 客户端发请求给NameNode,我想保存一个文件A,这时候在NameNode会有一个标识,标识为A_copy(文件不可用)。
  • 根据副本放置策略,返回三个副本的可放置位置列表,且默认为sort排好顺序的。
  • 客户端主动去和离自己最近的DataNode连接(暂且叫DN1),然后DN1后续的DN2进行连接,DN2在和DN3进行连接。(串联方式Pipeline)
  • 客户端读取源文件,对该Block进行更小的切割,
    • 第一次:传递第一个Block中的第一个小包给DN1。
    • 第二次:传递第一个Block中的第二个小包给DN1,与此同时,DN1中的第一个小包传递给DN2。
    • 第三次:传递第一个Block中的第三个小包给DN1,与此同时,DN1中的第二个小包传递给DN2,DN2传递第一个小包给DN3.
    • 依次类推

(Block切割更小的小包,这里这么设计的好处是时间不重叠。如果不切,一次性传递例如64M,当传递DN1时,等待,传递DN2时,继续等待,传递DN3时,还在等,造成时间浪费。另外的一个好处时,如果增加节点,时间影响不大)

  • 最后通过DataNode与NameNode心跳,通知是否文件彻底传递完毕,补全NameNode中元数据的位置信息。

HDFS读流程

  • 客户端发请求给NameNode,NameNode将这个文件的元数据找到,告知给客户端(例如文件A,被切割为5个Block,元文件会纪录Block1:DN1,DN2,DN3,Block2:DN1,DN4,DN5等等依次类推)
  • 客户端直接向DataNode请求Block数据(遵循距离优先)
  • 当把所有的Block下载回本地后,进行验证每个Block元信息的MD5。如果每个Block都是正确的,没有被破坏,开始进行拼接,最终文件就被还原回来了。

HDFS文件权限

  • 与Linux文件权限类似

    • r:read;w:write;x:execute
    • 权限x对应文件忽略,对于文件夹表示是否允许访问其内容
  • 如果Linux系统用户zhangyongli使用Hadoop命名创建一个文件,那么这个文件在HDFS中owner就是zhangyongli
  • HDFS的权限目的,阻止好人做错事,而不是阻止坏人做坏事。HDFS相信,你告诉我你是谁,我就认为你是谁。

解释:

  • 阻止好人做错事:例如AB两个用户,A用户创建了一个X文件,B用户创建了一个Y文件,B用户删除不了A用户的文件X。
  • 阻止坏人做坏事:如果AB两个用户中的某个坏人,装了一台全新的linux系统,也创建AB用户,补全Hadoop部署文件内容,客户端程序,然后用新系统的A向NameNode去删除X文件,由于NameNode是被动受信,所以未来需要集成kerberos来防止这种操作。
    (转发请注明出处:http://www.cnblogs.com/zhangyongli2011/ 如发现有错,请留言,谢谢)

转载于:https://www.cnblogs.com/zhangyongli2011/p/10897766.html

大数据系列文章-Hadoop的HDFS读写流程(二)相关推荐

  1. 03大数据技术之Hadoop(HDFS)

    03大数据技术之Hadoop(HDFS)(老师:尚硅谷) 文章目录 03大数据技术之Hadoop(HDFS)(老师:尚硅谷) 第1章 HDFS概述 1.1 HDFS产出背景及定义 1.2 HDFS优缺 ...

  2. hadoop fs命令无法使用_「大数据」「Hadoop」HDFS的配置与管理

    HDFS(Hadoop Distributed File System)是Hadoop三个基础组件之一,为另外的组件以及大数据生态中的其他组件提供了最基本的存储功能,具有高容错.高可靠.可扩展.高吞吐 ...

  3. 浅显易懂入门大数据系列:一、HDFS(超详细)

    文章目录 一.Hadoop的诞生 Hadoop的定义及组成 HDFS产生的背景 背景下所面临的挑战 二.Hadoop概念及原理 HDFS应运而生 HDFS的存储特点 HDFS的架构特点 HDFS的架构 ...

  4. 大数据系列文章,数据人收藏!

    该系列精选文章来自于「数据社」公众号,作者从事过大数据开发,大数据架构,数据分析相关岗位,有着丰富的实战经验. 该系列文章主要包括大数据平台.数据仓库.数据挖掘等. 系列文章都是基于实战总结的干货,下 ...

  5. 大数据技术之Hadoop(HDFS)第2章 HFDS的Shell操作

    1)基本语法 bin/hadoop fs 具体命令 2)命令大全 [atguigu@hadoop102 hadoop-2.7.2]$ bin/hadoop fs [-appendToFile < ...

  6. Cris 玩转大数据系列之 Hadoop HA 实现

    文章目录 零.序 1. Hadoop 实现 HA 原理 1.1 什么是 HA? 1.2 HA 工作机制 2. HDFS-HA 手动故障转移(了解) 2.1 要点 2.2 环境准备 2.3 测试集群规划 ...

  7. 大数据系列(hadoop) Hadoop+Zookeeper 3节点高可用集群搭建

    ---恢复内容开始--- 一.集群规划 主机名 ip NameNode DataNode Yarn ZooKeeper JournalNode node01 192.168.1.201 是 是 否 是 ...

  8. 【大数据系列】hadoop单节点安装官方文档翻译

    Hadoop: Setting up a Single Node Cluster. HADOOP:建立单节点集群 Purpose Prerequisites Supported Platforms R ...

  9. 大数据系列(hadoop) 集群环境搭建二

    转载于:https://www.cnblogs.com/YellowstonePark/p/7699127.html

最新文章

  1. 【java】暑期需要复习的操作
  2. RNA-seq中的生物学重复
  3. Java 集合系列(4): LinkedList源码深入解析1
  4. bzoj2058: [Usaco2010 Nov]Cow Photographs(逆序对)
  5. 信息学奥赛一本通 1075:药房管理 | OpenJudge NOI 1.5 23:药房管理
  6. rocketmq namesrv 第一章启动过程
  7. MFC程序减少体积的方法
  8. ffmpeg检测文件是否损坏_[音视频] 下载M3U8加密视频文件
  9. 解决复制文件时出乱码
  10. 前端token是什么?怎么进行封装使用
  11. Limelight完成了对雅虎Edgecast的收购,合并后的公司更名为Edgio,成为全球边缘解决方案的领导者...
  12. 鸿蒙系统没有录屏,这15+项高效又实用的功能更新,一定别错过!
  13. 3D场景搭建的隐秘功能——时间轴
  14. 使用 STM32 测量频率和占空比的几种方法
  15. U盘装系统及启动盘制作
  16. 什么是基本的逻辑运算?
  17. python-老王开枪
  18. java制作海报工具类,java操作图片贴图,java给图片添加文字,调整字体颜色大小间距
  19. HttpWatch功能详细介绍
  20. 编写代码、打印图4-2所示的图形python_Python之turtle库画各种有趣的图及源码(更新中)_一个超会写Bug的程序猿的博客-CSDN博客...

热门文章

  1. sql server2008中左连接,右连接,等值连接的区别
  2. RequireJs入门(一)
  3. MySQL-查询结果缓存
  4. ios开发值json数据文件的存取
  5. unity3d iPhone文件目录介绍
  6. InfluxDB 开源分布式时序、事件和指标数据库
  7. 背景建模与前景检测3(Background Generation And Foreground Detection Phase 3)
  8. import提升导致Fundebug报错:“请配置apikey”
  9. NSDictionary
  10. jquery简单使用入门