一. namenode工作机制

1. 客户端上传文件时,namenode先检查有没有同名的文件,如果有,则直接返回错误信息。如果没有,则根据要上传文件的大小以及block的大小,算出需要分成几个block,指定每个block存在哪个datanode上,之后把这些元数据写到edits log中并返回给客户端。

2. 客户端拿到元数据后,驱动会把上传的文件分block,并把各个block上传到对应的datanode上,如果上传成功的话,客户端会收到上传成功信息,全部上传成功之后,客户端会把成功信息返回给namenode,namenode就把这次上传操作对应的元数据信息写到内存中。

3. edits log文件达到一定条件时,需要将内容整合到fsimage文件中去(fsimage是最终存储元数据的文件,很大),这就需要secondarynamenode上场了。

edits log整合到fsimage文件的条件:

① edits log文件大小达到最大值,默认64M,由hdfs-site.xml配置文件的fs.checkpoint.size配置项指定

② 两次checkpoint的时间达到最大时间间隔,默认3600秒,由 hdfs-site.xml配置文件的fs.checkpoint.period配置项指定

当满足以上2个条件的任一个时,namenode会立刻通知secondarynamenode进行checkpoint操作,同时停止往edits log文件写内容,而是写入一个新的edits log文件,比如说叫做edits.new。secondarynamenode会把namenode中的fsimage文件和edits log文件下载过来,然后进行合并操作,合并完之后再把新的fsimage文件上传到namenode中。namenode会把edits.new文件重命名为edits log文件,直到再次写满,再次让secondarynamenode帮助进行合并操作。

元数据在namenode节点主机存放路径:

/home/koushengrui/app/hadoop-2.7.4/data/dfs/name/current,其中/home/koushengrui/app/hadoop-2.7.4/data是在core-site.xml配置文件中hadoop.tmp.dir配置项指定的值。dfs代表hdfs,name代表namenode,与name同级的目录还有data目录、namesecondary目录,其中data目录存放datanode的数据,namesecondary目录存放secondarynamenode的数据。

元数据的格式:

/test/a.log, 3 ,{blk_1,blk_2}, [{blk_1:[h0,h1,h3]},{blk_2:[h0,h2,h4]}]

其中/test/a.log表示上传的文件的虚拟目录,3表示文件有3个副本,blk_1、blk_2分别表示block1、block2,{blk_1:[h0,h1,h3]}表示blk_1三个副本分别在h0、h1、h2主机上,{blk_2:[h0,h2,h4]}表示blk_2的三个副本分别放在h0、h2、h4主机上。

namenode的职责:

1.相应客户端请求

2.维护元数据信息

3.维护hdfs的目录树

二. datanode工作机制

datanode提供文件存储服务,换句话说上传的文件是以分block的方式存储在datanode节点上的。block的最大大小在hdfs-site.xml配置文件由dfs.block.size配置项指定,默认是128M,可以根据实际需求增大或者减小。

文件实际存储路径是/home/koushengrui/app/hadoop-2.7.4/data/dfs/data/current/BP-13819656-192.168.100.100-1502801926683/current/finalized/subdir0/subdir0,即datanode节点的主机的hadoop.tmp.dir目录,dfs/data子目录中(上面介绍namenode时也提到过)。在此目录中可以看到很多以blk_开头的文件,这些文件就是上传的、分块后的文件。其实利用这些block文件可以得到原来的文件,把这些block文件按顺序拼装好之后就与之前上传的文件完全相同。

hdfs namenode/datanode工作机制的更多相关文章

  1. HDFS中DataNode工作机制

    1.DataNode工作机制 1)一个数据块在datanode上以文件形式存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据(包括数据块的长度,块数据的校验和,以及时间戳). 2)DataNod ...

  2. HDFS Namenode&Datanode

    HDFS Namenode&Datanode HDFS 机制粗略示意图 客户端写入文件流程: NN && DN Namenode(NN)工作机制 NN是整个文件系统的管理节点. ...

  3. DataNode 工作机制

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/qq_35641192/article/d ...

  4. Hadoop(五)—— HDFS NameNode、DataNode工作机制

    一.NN与2NN工作机制 NameNode(NN) 1.当HDFS启动时,会加载日志(edits)和镜像文件(fsImage)到内存中. 2-4.当元数据的增删改查请求进来时,NameNode会先将操 ...

  5. Hadoop_10_HDFS 的 DataNode工作机制

    1.DataNode的工作机制: 1.DataNode工作职责:存储管理用户的文件块数据  定期向namenode汇报自身所持有的block信息(通过心跳信息上报) (这点很重要,因为,当集群中发生某 ...

  6. Hadoop框架:DataNode工作机制详解

    本文源码:GitHub·点这里 || GitEE·点这里 一.工作机制 1.基础描述 DataNode上数据块以文件形式存储在磁盘上,包括两个文件,一个是数据本身,一个是数据块元数据包括长度.校验.时 ...

  7. HDFS成员的工作机制

    NameNode工作机制 nn负责管理块的元数据信息,元数据信息为fsimage和edits预写日志,通过edits预写日志来更新fsimage中的元数据信息,每次namenode启动时,都会将磁盘中 ...

  8. hdfs的datanode工作原理

    datanode的作用: (1)提供真实文件数据的存储服务. (2)文件块(block):最基本的存储单位.对于文件内容而言,一个文件的长度大小是size,那么从文件的0偏移开始,按照固定的大小,顺序 ...

  9. Hadoop的namenode的管理机制,工作机制和datanode的工作原理

    HDFS前言: 1) 设计思想 分而治之:将大文件.大批量文件,分布式存放在大量服务器上,以便于采取分而治之的方式对海量数据进行运算分析: 2)在大数据系统中作用: 为各类分布式运算框架(如:mapr ...

随机推荐

  1. java中的全局变量与静态变量的区别与联系?有时候为什么专门定义静态变量。(标题党~~)

    static代表“每个类一个”而不是“每个对象一个”.即静态变量是类的所有对象共有的. 1 static JFrame f; static MyDrawPanel ml; 整个应用程序如下: 定义在p ...

  2. Luogu 2827 [NOIP2016] 蚯蚓

    原来真的是按题意模拟啊,还以为有高能的算法可以直接算每个$t$的值. 考虑到先切的蚯蚓一定比后切的蚯蚓长,于是可以弄三个队列分别存放原来的序列和两个切开后的序列,每次取出三个队头的最大值进行扩展. 考 ...

  3. python3-while与if

    # Auther: Aaron Fan age_of_oldboy = 56 #定义一个while循环的起始判断值countcount = 0#当count小于3的情况下一直执行while循环whil ...

  4. windows平台下用C#访问HBase

    Hadoop中的HBase有多种数据访问方式,ubuntu里可以用hbase shell查看操作hbase数据库,但windows平台下需要用thrift对它进行访问. 例如hadoop安装在/usr ...

  5. 使用python进行数据转码

    大数据最烦的就是数据质量差,为了把数据导入到sequoiadb中,需要要求文本是UTF-8模式的,使用enca查看文件编码是gb2312,然后是enca转utf-8报错.google了整个地球都不知道 ...

  6. 监控linux系统的简易脚本

    我先把脚本粘贴在这吧,方便大家观看,其中也是借鉴了不少其他大神的东西,这个脚本主要是用来监控服务器.用户.日志,还得创建备份,等等等等.最近学的shell比较多,就用这个来练练手了,比较简单,大家凑合 ...

  7. oracle安装和使用问题解决方案

    1.Enter the full pathname for java.exe 要输入的是32位系统的jdk中的java.exe路径,比如  C:\Program Files\Java\jdk1.6.0 ...

  8. Linux下管理员强行踢出用户的命令使用方法

    Linux强制踢出用户命令: 一.输入w命令查看已登录用户信息 [root@KW_S01_192.168.1.106_A ~]# w 19:22:31 up  2:11,  3 users,  loa ...

  9. Blockade(Bzoj1123)

    Description Byteotia城市有n个 towns m条双向roads. 每条 road 连接 两个不同的 towns ,没有重复的road. 所有towns连通. Input 输入n&l ...

  10. 【bzoj3209】: 花神的数论题 数论-DP

    [bzoj3209]: 花神的数论题 首先二进制数中1的个数最多就是64个 设所有<=n的数里二进制中1的个数为i的有a[i]个 那么答案就是  然后快速幂 求a[i]可以用DP 设在二进制中从 ...