Hadoop之旅(3)— HDFS 原理讲解

1、HDFS 介绍

       Hadoop 实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。 Hadoop是Apache Lucene创始人Doug Cutting开发的使用广泛的文本搜索库。它起源于Apache Nutch,后者是一个开源的网络搜索引擎,本身也是Luene项目的一部分。Aapche Hadoop架构是MapReduce算法的一种开源应用,是Google开创其帝国的重要基石。

       是Google GFS论文的强化版、HDFS具有良好的扩容性,高容错性、适合大量数据的存储。原理是将文件切割成等份的块数据,存储到多台的机器上。



      从架构图来看、其NameNode(NN)和DataNode(DN)是很重要节点,还有SecondaryNameNode(SNN)。



2、NameNode

       NameNode是主节点,主要负责接收客户端的读写服务、NameNode会保存元数据(metadate)信息。元数据信息包括:文件包含的块(Block)、Block保存在DataNode的信息(在哪一个DataNode)、文件的权限信息、生成的时间、副本数、文件目录结构等。NameNode还管理数据的复制,它周期性的检查DataNode接收的心跳和块数据报告。如果接收到心跳报告说明DataNode是存活的,心跳报告上存放着DataNode的所有块数据信息。

       NameNode的存储位置是在内存和本地磁盘。元数据信息在启动后会加载到内存,而本地磁盘有两个重要文件:fsimage(镜像文件edites(编辑日志),元数据信息和Block(块数据)的位置存储到(fsimage镜像文件)、日志记录存储到edites。



3、DataNode

       DataNode 在本地文件系统是存储文件块数据、以及块数据的校验和。DataNode启动再NameNode注册后,会周期性的向NameNode发送所有块数据的报告。还有文件副本存放在DataNode上,并且由NameNode控制,NameNode会根据情况做出放块的位置。当读取文件时一般都先读取最近的副本数据,这样减少了消耗。

       可以在DataNode上操作文件,创建、删除、重命名等,特别注意的是当文件写入后不能修改文件内容。



4、SecondaryNameNode

SecondaryNameNode 是用来监控HDFS状态的辅助后台程序,辅助NameNode工作,合并两个文件(定时周期性)。


SecondaryNameNode的工作流程









  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Hadoop是一个开源的分布式计算框架,其中的Hadoop Distributed File System(HDFS)是其核心组件之一。HDFS是一个设计用于存储大规模数据的分布式文件系统,其目标是提供高可靠性、高性能和高可扩展性。下面对Hadoop 2.x HDFS的源码进行剖析。 HDFS的源码主要包含以下几个关键模块:NameNodeDataNode、BlockManager和FileSystem。 首先,NameNodeHDFS的主节点,负责管理文件系统的命名空间和元数据(例如文件的名称和位置等)。它通过解析客户端的请求,维护了一个表示文件和目录路径的层次结构,并使用高效的数据结构(如内存中的树状结构)来存储和管理元数据。 其次,DataNodeHDFS的工作节点,负责存储和处理实际的数据块。每个DataNode都与一个或多个存储介质(如磁盘)相连,可以提供数据的读取和写入操作。DataNode定期向NameNode报告其存储的数据块的状态,并接收来自NameNode的指令,如复制、移动和删除数据块。 BlockManager是NameNode的重要组成部分,负责管理数据块的复制和位置信息。它通过与DataNode的交互,监控和维护数据块的复制系数(即数据块的副本数),确保数据块的可靠性和可用性。 最后,FileSystem是用户与HDFS进行交互的接口。它提供了一系列的API和命令,例如创建、读取和写入文件等,以便用户可以对HDFS中的文件进行操作。 Hadoop 2.x HDFS的源码剖析主要涉及上述模块的实现细节,包括具体数据结构的设计和实现、请求处理的流程、数据块的复制策略以及与底层存储介质的交互等。剖析源码可以深入了解HDFS的内部工作原理,帮助开发者理解和优化系统的性能,同时也有助于扩展和改进HDFS的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值