`
文章列表
第七章:小朱笔记hadoop之源码分析-hdfs分析 第三节:hdfs实现分析 3.3 namenode (1)FSDirectory FSDirectory用来管理HDFS整个文件系统的namespace也就是整个目录树. HDFS是会将namespace保存到namenode的本地文件系统的fsimage的文件中。从该 ...
第七章:小朱笔记hadoop之源码分析-hdfs分析 第三节:hdfs实现分析 3.2 通讯协议 Hadoop中节点之间的通信是比较复杂的一个网络,若可以把它们之间的通信网络了解清楚,那么对于Hadoop的整体框架理解会有很大帮助。 HDFS中有5种 ...
第七章:小朱笔记hadoop之源码分析-hdfs分析 第三节:hdfs实现分析 3.1 基本概念      HDFS采用了主从 (Master/Slave)结构模型,一个HDFS集群是由一个NameNode和若干个DataNode组成的。其中NameNode作为主服务器, 管理文件系统的命名空间和客户端对文件的访问操作;集群中的DataNode管理存储的数据。HDFS允许用户以文件的形式存储数据。从内部来看,文件被分成若干个数据块,而且这若干个数据块存放在一组DataNode上。NameNode执行文件系统的命名空间操作,比如打开、关闭、重命名文件或目录 等,它也负责数据块到具体Dat ...
第一节:基本概念 1.1 数据块(block)          默认的最基本的存储单位是64M的数据块。和普通文件系统相同的是,HDFS中的文件是被分成64M一块的数据块存储的。不同于普通文件系统的是,HDFS中,如果一个文件小于一个数据块的大小,并不占用整个数据块存储空间。blk_<id>保存的是HDFS的数据块,其中保存了具体的二进制数据。blk_<id>.meta保存的是数据块的属性信息:版本信息,类型信息,和checksum。当一个目录中的数据块到达一定数量的时候,则创建子文件夹来保存数据块及数据块属性信息。 1.2 元数据节点文件夹结构 VE ...
第七章:小朱笔记hadoop之源码分析-hdfs分析 第四节:namenode分析 4.8 回收站机制       当用户写程序调用HDFS的API时,NameNode并不会把删除的文件或目录放入回收站Trash中。HDFS在客户端为用户提供了对文件系统的命令行操作, ...
第七章:小朱笔记hadoop之源码分析-hdfs分析 第五节:Datanode 分析 5.1 Datanode 启动过程分析5.2 Datanode 心跳分析5.3 Datanode 注册分析5.4 DataBlockScanner 文件校验 5.5 DataNode 数据块接受/发送     5.1 Datanode 启动过程分析 (1)shell脚本启动DataNode     start-dfs.sh "$bin"/hadoop-daemons.sh --config $HADOOP_CONF_DIR start datanode $da ...
第七章:小朱笔记hadoop之源码分析-hdfs分析 第六节:SecondaryNameNode分析  6.1 架构分析 6.2 SecondaryNameNode启动过程分析 6.3 Checkpoint分析 6.4 Import Checkpoint恢复数据         6.1 架构分析           SecondaryNameNode(snn)不是NameNode(nn)的热备进程。snn是HDFS架构中的一个组成部分,但是经常由于名字而被人误解它真正的用途,其实它真正的用途,是用来保存namenode中对HDFS metadata的信息的备份,并减少 ...
第七章:小朱笔记hadoop之源码分析-hdfs分析 第四节:namenode分析 4.1 namenode启动过程分析        org.apache.hadoop.hdfs.server.namenode.main 方法是系统的入口,它会调用 createNameNode 创建 NameNode 实例。 createNameNode 分析命令行参数,如果是 FORMAT 戒 FINALIZE,调用对应的方法后退出,如果是其他的参数,将创建NameNode 对象。NameNode的构造函数会调initialize,初始化NameNode的成员发量,包括创建 RPC 服务器,初始化 ...
第七章:小朱笔记hadoop之源码分析-hdfs分析 第四节:namenode分析  4.2 namenode format过程分析        namenode format操作是使用hadoop分布式文件系统前的步骤。如果不执行这个步骤,无法正确启动分布式文件系统。   (1)启动fo ...
第四节:namenode分析 4.3 namenode 副本监控分析ReplicationMonitor ReplicationMonitor主要有两个作用:   (1)负责为副本不足的数据块选择source 数据节点,选择冗余的target节点,等待DN节点下次心跳将这些工作带回给相应的DN执行块冗余操作。(2)将各个数据节点上无效的数据块副本加入无效集合,等待下次心跳将这些工作带回给相应的DataNode执行删除无效块操作。默认每3s执行一次,可以通过修改dfs.replication.interval来调整执行间隔(1)computeDatanodeWork    计算data ...
第七章:小朱笔记hadoop之源码分析-hdfs分析 第四节:namenode分析 4.4 namenode文件租约分析LeaseManagerMonitor       文件租约就是将操作的文件和操作它的客户端进行绑定,若文件不存在一个租约,则说明该文件当前没有被任何客户端写,否则,就表示它正在被该文件租约中 的客户端holder写。这中间可能会发生一些意想不到的异常情况,比如正在对某个文件进行写操作的客户端突然宕机了,那么与这个文件相关的租约会迟迟得 不到客户端的续租而过期,那么NameNode会释放这些过期的租约,好让其它的客户端能及时的操作该租约对应文件。      Lease ...
第七章:小朱笔记hadoop之源码分析-hdfs分析 第四节:namenode分析 4.5 namenode心跳检测分析HeartbeatMonitor       DataNode节点在注册时候就开始定期向NameNode节点发送心跳包,以此来告知 NameNode节点自己当前还是可用的,同时从NameNode节点那里得到对自己的控制命令并执行。然而,当一个 DataNode节点没有按时向NameNode节点发送心跳包时,NameNode就会判定这个数据节点已经不可用了,并清除与之相关的数据信息(比如 在改数据节点上的数据块信息)。自然NameNode也再不会把该数据节点分配给客户端 ...
第七章:小朱笔记hadoop之源码分析-hdfs分析 第四节:namenode分析 4.6 namenode任务线程之DecommissionManager$Monitor        DecommissionManager主要是负责节点退役或者说节点停用,Monitor负责定时来检测这些节点的退役状态。DataNode节点退役得等该节点上的所有数据块Blocks
第七章:小朱笔记hadoop之源码分析-hdfs分析 第四节:namenode分析 4.7 namenode 安全模式SafeModeMonitor       在分布式文件系统启动的时候,开始的时候会有安全模式,当分布式文件系统处于安全模式的情况下,文件系统中的内容不允许修改也不允许删除,直到安全模式结 束。安全模式主要是为了系统启动的时候检查各个DataNode上数据块的有效性,同时根据策略必要的复制或者删除部分数据块。运行期通过命令也可以进入 安全模式。在实践过程中,系统启动的时候去修改和删除文件也会有安全模式不允许修改的出错提示,只需要等待一会儿即可。       SafeMo ...
第七章:小朱笔记hadoop之源码分析-hdfs分析 第二节:fs抽象文件系统实现         在Hadoop框架源代码org.apache.hadoop.fs包中,都是关于Hadoop文件系统实现的相关类,主要包括文件系统模型的建立,及其在该文件系统定义、实现基本的文件操作。例如给出文件系统抽象,对文件系统上存储的文件执行基本操作进行抽象。       FileSystem类:     (1)实现了文件系统的抽象类,继承自org.apache.hadoop.conf.Configured,并实现Closeable接口,可以适用于多种 文件系统,如本地文件系统file://,ft ...
Global site tag (gtag.js) - Google Analytics