Hadoop 学习(一)HDFS

IT迷途小书童 2020-11-09 13:13:43
大数据 学习 hadoop 博客园 HDFS


(一)HDFS

分布式文件系统,用于大数据的存储。具有高容错性、高可靠性、高可扩展型和高吞吐量等特征。

1. HDFS架构

HDFSmaster/slave架构设计模式。一个HDFS集群有一个元数据节点(NameNode)和一些数据节点(DataNode)组成。NameNode是主节点,主要用来存储管理文件的元数据【元数据大小为150byte 8条元数据为1K】(文件名称、大小、存放路径 )和处理来自客户端的请求。DataNode是从节点,用来管理对应节点的数据存储。即文件存储在DataNode上。

2. 主要组件
Block

HDFS中的数据是以数据块的形式存储的。默认大小为128M。(如果一个数据块小于128M,则按照具体大小存储。并不占用整个块空间)

NN

存储元数据信息和接收客户端请求。

元数据:文件名、文件大小、文件存储位置等。系统元数据保存在fsimageedits中。

FsImae:系统映射文件,主要存储源数据信息。

Edits:操作日志文件。HDFS对文件的操作日志都保存在其中。

DN

按块存放数据。

周期性的向Name Node发送心跳,汇报数据存储情况

 

DN的工作机制

  1. 数据块在DN以文件的形式存储。包含两个文件,其中一个是文件本身,另外一个是文件的验证文件(长度,数据块、校验和、时间戳)
  2. DN启动后,向NN注册。周期性(1小时)的向NN汇报块情况。
  3. DNNN之间有心跳机制(3S)。如果NN超过一段时间(10M)没有收到DN的心跳,则认为机器不可用。
SNN

为了解决系统启动时间长的问题。协助Name Node实现工作。

 

元数据存在内存中,可以快读相应请求。担心断电丢失,所以在磁盘中有备份文件。FsImage

 

内存元数据修改,同步更新FsImage太慢(修改操作),引入Edits,只追加,效率很高

 

SNN作用:系统启动流程。系统启动,Name Node会加载FSimageEdits。得到完整的元数据信息之后,会写入FSimage中。如果系统两次启动时间较长,edits会比较大。合并fsimageedits会比较耗时。启动时间较长。所以,secondNameNode就是协助NamaNode提前合并FsImageEdits文件。

 

SNN工作流程:

  1. SNN求情NN是否需要checkPoint。返回是否需要的结果。
  2. SNN请求NN执行Checkpoint
  3. NN滚动正在写的Edits日志
  4. 通过Http get 方法将镜像文集FsImage和编译日志Edits拷贝到SNN
  5. SNN加载镜像文件和日志文件到内存并合并。生成fsImage.chkpoint
  6. 通过Http post FsImage.chkPoint 发送到NNNN重命名为FsImage并覆盖原有的文件。

 

触发Second Name Node一般是时间出发或者是Edits条数量到达阈值触发。

 

3. 文件的读写流程

(1) 读文件流程

  1. 客户端向NameNode发读文件请求。C->NN
  2. NameNode返回元数据列表(文件分多个Block,每个Block对应一个文件列表)
  3. 遍历每个Block,根据Block的元数据列表,选择最近节点发送的DataNode请求。建立连接。
  4. 获得数据后,关闭和DataNode的连接。处理下一个Block节点的下载。
  5. 关闭任务。

(2) 写文件流程

  1. 客户端向NamaNode发送写文件请求。C->NN
  2. NameNode验证权限,文件是否存在等。返回是否可以上传。
  3. 客户端循环处理每一块Block,向NN发送请求。获得当前Block的元数据列表。[ds1ds2ds3]
  4. 对当前Block,选择最近的DataNode ds1,使用FSDataOutPutStream建立连接,写入数据。
  5. 备份机制负责将写入的数据一步备份到其它节点上ds1 数据写入ds2ds2数据写入 ds3
  6. 完成所有Block写入后,关闭任务。
4. 知识点

(1) 网络拓扑:节点的计算

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

(2) HADOOP副本节点选择

第一个副本,如果客户端在节点上,就是当前节点,如果客户端不在节点上,第一个副本随意选择。

第二个副本是和第一个副本在同一机架,不同节点上。

第三个副本是和前两个不同机架,节点随机。

版权声明
本文为[IT迷途小书童]所创,转载请带上原文链接,感谢
https://www.cnblogs.com/maopneo/p/13947993.html

  1. 【计算机网络 12(1),尚学堂马士兵Java视频教程
  2. 【程序猿历程,史上最全的Java面试题集锦在这里
  3. 【程序猿历程(1),Javaweb视频教程百度云
  4. Notes on MySQL 45 lectures (1-7)
  5. [computer network 12 (1), Shang Xuetang Ma soldier java video tutorial
  6. The most complete collection of Java interview questions in history is here
  7. [process of program ape (1), JavaWeb video tutorial, baidu cloud
  8. Notes on MySQL 45 lectures (1-7)
  9. 精进 Spring Boot 03:Spring Boot 的配置文件和配置管理,以及用三种方式读取配置文件
  10. Refined spring boot 03: spring boot configuration files and configuration management, and reading configuration files in three ways
  11. 精进 Spring Boot 03:Spring Boot 的配置文件和配置管理,以及用三种方式读取配置文件
  12. Refined spring boot 03: spring boot configuration files and configuration management, and reading configuration files in three ways
  13. 【递归,Java传智播客笔记
  14. [recursion, Java intelligence podcast notes
  15. [adhere to painting for 386 days] the beginning of spring of 24 solar terms
  16. K8S系列第八篇(Service、EndPoints以及高可用kubeadm部署)
  17. K8s Series Part 8 (service, endpoints and high availability kubeadm deployment)
  18. 【重识 HTML (3),350道Java面试真题分享
  19. 【重识 HTML (2),Java并发编程必会的多线程你竟然还不会
  20. 【重识 HTML (1),二本Java小菜鸟4面字节跳动被秒成渣渣
  21. [re recognize HTML (3) and share 350 real Java interview questions
  22. [re recognize HTML (2). Multithreading is a must for Java Concurrent Programming. How dare you not
  23. [re recognize HTML (1), two Java rookies' 4-sided bytes beat and become slag in seconds
  24. 造轮子系列之RPC 1:如何从零开始开发RPC框架
  25. RPC 1: how to develop RPC framework from scratch
  26. 造轮子系列之RPC 1:如何从零开始开发RPC框架
  27. RPC 1: how to develop RPC framework from scratch
  28. 一次性捋清楚吧,对乱糟糟的,Spring事务扩展机制
  29. 一文彻底弄懂如何选择抽象类还是接口,连续四年百度Java岗必问面试题
  30. Redis常用命令
  31. 一双拖鞋引发的血案,狂神说Java系列笔记
  32. 一、mysql基础安装
  33. 一位程序员的独白:尽管我一生坎坷,Java框架面试基础
  34. Clear it all at once. For the messy, spring transaction extension mechanism
  35. A thorough understanding of how to choose abstract classes or interfaces, baidu Java post must ask interview questions for four consecutive years
  36. Redis common commands
  37. A pair of slippers triggered the murder, crazy God said java series notes
  38. 1、 MySQL basic installation
  39. Monologue of a programmer: despite my ups and downs in my life, Java framework is the foundation of interview
  40. 【大厂面试】三面三问Spring循环依赖,请一定要把这篇看完(建议收藏)
  41. 一线互联网企业中,springboot入门项目
  42. 一篇文带你入门SSM框架Spring开发,帮你快速拿Offer
  43. 【面试资料】Java全集、微服务、大数据、数据结构与算法、机器学习知识最全总结,283页pdf
  44. 【leetcode刷题】24.数组中重复的数字——Java版
  45. 【leetcode刷题】23.对称二叉树——Java版
  46. 【leetcode刷题】22.二叉树的中序遍历——Java版
  47. 【leetcode刷题】21.三数之和——Java版
  48. 【leetcode刷题】20.最长回文子串——Java版
  49. 【leetcode刷题】19.回文链表——Java版
  50. 【leetcode刷题】18.反转链表——Java版
  51. 【leetcode刷题】17.相交链表——Java&python版
  52. 【leetcode刷题】16.环形链表——Java版
  53. 【leetcode刷题】15.汉明距离——Java版
  54. 【leetcode刷题】14.找到所有数组中消失的数字——Java版
  55. 【leetcode刷题】13.比特位计数——Java版
  56. oracle控制用户权限命令
  57. 三年Java开发,继阿里,鲁班二期Java架构师
  58. Oracle必须要启动的服务
  59. 万字长文!深入剖析HashMap,Java基础笔试题大全带答案
  60. 一问Kafka就心慌?我却凭着这份,图灵学院vip课程百度云