hadoop3
文章平均质量分 86
知识的游牧民族
这个作者很懒,什么都没留下…
展开
-
2021-12-30 hadoop3 写数据流程(五):BlockService
参考源码hadoop-3.3.0,如有理解问题,敬请指出,不胜感激。1 概述上一篇介绍到,写数据块请求通过流式接口到达Datanode之后, Datanode上监听流式接口请求的DataXceiverServer会接收这个请求, 并构造一个DataXceiver对象, 然后在DataXceiver对象上调用DataXceiver.writeBlock()方法响应这个请求。 当前Datanode的DataXceiver.writeBlock()方法会级联向数据流管道中的下一个Datanode发送写数据原创 2021-12-30 21:36:39 · 651 阅读 · 0 评论 -
hadoop3 写数据流程(四):写数据1
参考源码hadoop-3.3.0,这部分代码写的质量真的不太行,好些方法几百行。1 概述HDFS使用数据流管道方式(数据管道的建立可以参见写数据系列第三篇)来写数据。 DFSClient通过使用写数据流程(一)创建的数据输出流out调用write方法完成数据的传输,传输中将数据切分成多个packet,而后往dataQueue中存储切分之后的packet,在写入完成后调用notifyAll方法重新激活在wait等待的DataStreamer线程,而后在此线程中的run()方法中调用DataStreaa原创 2021-12-27 22:00:39 · 1364 阅读 · 0 评论 -
2021-12-23 hadoop3 写数据流程(三):DataStreamer
1 概述见名知意,此类主要用于数据传输,是一个守护线程,在创建DFSOutputStream的过程中被启动,启动之后再run方法之中使用一个while死循环(直到流或者客户端关闭)才停止运行,里面主要的逻辑是通过维护一个dataQueue队列,等待主线程往其中添加packet数据,等到添加了packet数据之后,会触发数据的发送,将数据发送到对应pipeline对应的dn之中,从而完成数据的传输。2 源码分析2.1 DataStreamer的前提调用根据前文,在DFSOutputStream原创 2021-12-23 22:35:33 · 1677 阅读 · 0 评论 -
hadoop3.3.0 编译环境搭建
hadoop 3.3.0 编译原创 2021-12-22 11:08:57 · 2072 阅读 · 3 评论 -
2021-12-21 hadoop 写数据流程(二):租约管理
hadoop租约管理器原创 2021-12-21 22:44:53 · 572 阅读 · 0 评论 -
2021-12-18 hadoop3 写数据流程(一):创建输出流
源码根据hadoop-3.3.0,欢迎指正(主要关注重点流程,过程中很多未注释)。1 概述发送创建文件请求:调用分布式文件系统 DistributedFileSystem.create( )方法; NameNode 创建文件记录:分布式文件系统 DistributedFileSystem 发送 RPC 请求给 NameNode,NameNode 检查权限(读写权限以及是否已经存在)后创建一条记录,返回输出流 FSDataOutputStream,封装了输出流 DFSOutputDtream;原创 2021-12-18 22:07:12 · 1348 阅读 · 0 评论 -
2021-12-16 hadoop3:目录树
本文基于源码hadoop-3.3.0,个人理解欢迎指正。目录1 概述2 FSDirectory源码2.1 构造函数2.2 变量2.3 关于此类的方法3 INode3.1 构造函数3.2 主要变量3.3 操作权限3.4 INodeDirectory3.5 INodeFile1 概述namenode的一个重要作用就是维护集群中的文件目录树。对于hdfs的namespace的状态,Hadoop中提供了FSDirectory和FSNamesystem两个类进行原创 2021-12-16 22:19:31 · 1369 阅读 · 0 评论 -
2021-12-13 hadoop3 编辑日志:FsEditLog
基于源码hadoop-3.3.01 概述我们知道,hdfs中的操作和状态等数据都存在与元数据中,而元数据通过fsimage和edit log管理。当我们进行第一次namenode格式化的时候,我们会创建fsimage和editlog文件,而如果不是第一次启动,就会加载对应目录下的fsimage和edit log完成namenode的启动,可参见FSNamesystem。FSImage 是 NameNode 中关于元数据的镜像,一般称为检查点的镜像;会在内存和磁盘中各保存一份,包含了整个HDF原创 2021-12-13 22:15:09 · 1802 阅读 · 0 评论 -
2021-12-12 hadoop3:FsImage
hadoop3 fsimage的源码阅读笔记原创 2021-12-12 21:44:21 · 1778 阅读 · 0 评论 -
2021-12-08 datanode存储相关(二):数据块管理
1 概述上文主要了解了dn数据存储的存储管理,这里主要分析一下数据块的管理。从上一篇我们知道,在dn数据存储中,DataStorage管理dn提供的数据目录,一个数据目录对应一台机器上的数据卷。FsDatasetImpl会通过持有一个 FsVolumeList 对象对 Datanode 上定义的所有存储目录下的数据块进行管理与操作,而 FsVolumeList 对象统一管理 Datanode 上定义的多个 FsVolumelmpl 对象。FsDatasetlmpl 还会持有一个DataStora原创 2021-12-08 22:44:10 · 1017 阅读 · 0 评论 -
2021-12-05 datanode存储相关(一):storage管理
基于源码hadoop-3.3.01 概述众所周知,dn主要是用来存储hadoop集群中的具体的数据的。但实际上,Datanode还是需要保存一部分Datanode自身的元数据的, 这些元数据是通过Datanode磁盘存储上的一些文件和目录来保存的。Datanode可以定义多个存储目录保存数据块,Datanode的多个存储目录存储的数据块并不相同,并且不同的存储目录可以是异构的, 这样的设计可以提高数据块IO的吞吐率[比如多块磁盘]。1.1 实际存储下面看一个实际中的存储:我们原创 2021-12-05 17:46:09 · 2429 阅读 · 0 评论 -
2021-12-03 DataNode注册与心跳
本文基于hadoop-3.3.0目录1 概述2 注册过程2.1 注册前置过程2.2 注册过程2.3 心跳发送1 概述dn在完成启动(源码阅读)之后,需要向nn进行注册,才能提供后续的数据存储服务,注册完成后定时进行心跳检测,确保dn的存活。而注册的流程是在DataNode的构造函数中的startDataNode方法中调用refreshNamenode方法完成:blockPoolManager.refreshNamenodes(getConf());2 注册过程原创 2021-12-03 22:53:20 · 3356 阅读 · 0 评论 -
2021-11-28 DataNode启动
hadoop-3.3.0 dn启动源码原创 2021-11-28 20:46:06 · 2083 阅读 · 0 评论 -
2021-11-14 hadoop3 BlockManager
源码基于hadoop-3.3.01 BlockManager简介BlockManager主要负责管理hadoop集群中的block信息。对于block的块,它始终保持着在任何事件下都能保持存活的副本数等于预期冗余。BlockManager中存储的数据块信息包含两个部分:数据块与存储这个数据块的数据节点存储的对应关系,这部分信息保存在数据块对应的BlockInfo对象的storages[]数组中, Namenode内存中的所有BlockInfo对象则保存在BlockManager.blocks原创 2021-11-14 21:09:54 · 1446 阅读 · 0 评论 -
2021-11-11 Hadoop3 FSNamesystem
本文主要介绍一下FSNamesystem,依赖代码为hadoop-3.3.0。1 简介FSNamesystem 是瞬态和持久namespace状态的容器,并在 NameNode 上完成所有记录工作。主要作用如下:1. 是 BlockManager、DatanodeManager、DelegationTokens、LeaseManager 等服务的容器。2. 委托处理修改或检查namespace的 RPC 调用3. 任何只涉及块的东西(例如块报告),它都委托给 BlockManager原创 2021-11-11 22:44:03 · 1626 阅读 · 0 评论 -
2021-11-06 hadoop 安全模式
1 什么是安全模式安全模式是HDFS所处的一种特殊状态,在这种状态下,文件系统只接受读数据请求,而不接受删除、修改等变更请求。在NameNode主节点启动时,HDFS首先进入安全模式,DataNode在启动的时候会向namenode汇报可用的block等状态,当整个系统达到安全标准时,HDFS自动离开安全模式。如果HDFS出于安全模式下,则文件block不能进行任何的副本复制操作,因此达到最小的副本数量要求是基于datanode启动时的状态来判定的,启动时不会再做任何复制(从而达到最小副本数量要求)原创 2021-11-06 21:14:35 · 4417 阅读 · 0 评论 -
2021-11-03 hadoop NameNode启动
ps: 本文参考hadoop-3.3.01 NameNode简介namenode是hadoop架构中最重要的角色之一,NameNode主要管理管理着名称空间表(文件名与block的映射,存储在磁盘上且十分重要)和inodes表(块与机器的映射,只要namenode出现就会存在),通常情况下一个集群中有且仅有一个活跃的NameNode,从Hadoop2开始,为了保证集群中的高可用,可以配置两个namenode,一个active另一个为standby。但这种情况下,当集群规模达到一定程度时,nameno原创 2021-11-03 21:58:13 · 2051 阅读 · 0 评论