hdfs namenode/datanode工作机制
一. 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工作机制的更多相关文章
- HDFS中DataNode工作机制
1.DataNode工作机制 1)一个数据块在datanode上以文件形式存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据(包括数据块的长度,块数据的校验和,以及时间戳). 2)DataNod ...
- HDFS Namenode&Datanode
HDFS Namenode&Datanode HDFS 机制粗略示意图 客户端写入文件流程: NN && DN Namenode(NN)工作机制 NN是整个文件系统的管理节点. ...
- DataNode 工作机制
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/qq_35641192/article/d ...
- Hadoop(五)—— HDFS NameNode、DataNode工作机制
一.NN与2NN工作机制 NameNode(NN) 1.当HDFS启动时,会加载日志(edits)和镜像文件(fsImage)到内存中. 2-4.当元数据的增删改查请求进来时,NameNode会先将操 ...
- Hadoop_10_HDFS 的 DataNode工作机制
1.DataNode的工作机制: 1.DataNode工作职责:存储管理用户的文件块数据 定期向namenode汇报自身所持有的block信息(通过心跳信息上报) (这点很重要,因为,当集群中发生某 ...
- Hadoop框架:DataNode工作机制详解
本文源码:GitHub·点这里 || GitEE·点这里 一.工作机制 1.基础描述 DataNode上数据块以文件形式存储在磁盘上,包括两个文件,一个是数据本身,一个是数据块元数据包括长度.校验.时 ...
- HDFS成员的工作机制
NameNode工作机制 nn负责管理块的元数据信息,元数据信息为fsimage和edits预写日志,通过edits预写日志来更新fsimage中的元数据信息,每次namenode启动时,都会将磁盘中 ...
- hdfs的datanode工作原理
datanode的作用: (1)提供真实文件数据的存储服务. (2)文件块(block):最基本的存储单位.对于文件内容而言,一个文件的长度大小是size,那么从文件的0偏移开始,按照固定的大小,顺序 ...
- Hadoop的namenode的管理机制,工作机制和datanode的工作原理
HDFS前言: 1) 设计思想 分而治之:将大文件.大批量文件,分布式存放在大量服务器上,以便于采取分而治之的方式对海量数据进行运算分析: 2)在大数据系统中作用: 为各类分布式运算框架(如:mapr ...
随机推荐
- p1627 [CQOI2009]中位数
传送门 分析 https://www.luogu.org/blog/user43145/solution-p1627 代码 #include<iostream> #include<c ...
- vue 之 介绍及简单使用
浏览目录 vue的介绍 vue的使用 vue的介绍 简介 vue官网说:Vue.js(读音 /vjuː/,类似于 view) 是一套构建用户界面的渐进式框架.与其他重量级框架不同的是,Vue 采用自底 ...
- Integer类的parseInt和valueOf的区别
我们平时应该都用过或者见过parseInt和valueOf这两个方法.一般我们是想把String类型的字符数字转成int类型.从这个功能层面来说,这两个方法都一样,都可以胜任这个功能. 但是,我们进入 ...
- Java分层概念(转)
Java分层概念(转) 对于分层的概念,似乎之间简单的三层,多了,就有点难以区分了,所以收藏了这个. ervice是业务层 action层即作为控制器 DAO (Data Access Object) ...
- springMvc参数传递的方法
package cn.edu.hj.controller; import java.util.Map; import javax.servlet.http.HttpServletRequest; im ...
- [译]Javascript中的for循环
本文翻译youtube上的up主kudvenkat的javascript tutorial播放单 源地址在此: https://www.youtube.com/watch?v=PMsVM7rjupU& ...
- 内存不足导致的java.lang.OutOfMemoryError: java heap space引出java工程启动参数设置
今天做分类实验,生成了190m的kernel文件,在读到svm中的时候跳出了java.lang.OutOfMemoryError: java heap space异常.随便搜了一下,发现与eclips ...
- WPF之MVVM模式(3)
有种想写一个MVVM框架的冲动!!! 1.Model中的属性应不应该支持OnPropertyChanged事件? 不应该.应该有ViewModel对该属性进行封装,由ViewModel提供OnProp ...
- 搭建邮件服务器 Postfix + Dovecot (CentOS)
最近分配到一台ECS服务器,需要搭建一台邮件服务器. 查了一波资料选择了Postfix (smtp)和 Dovecot(pop3). 推荐教程:http://www.cnblogs.com/zlbei ...
- Unity自带IAP插件使用(googleplay)
https://blog.csdn.net/ar__ha/article/details/64439872 Unity Services里的Unity IAP对于IOS和GooglePlay的支付用这 ...