hdfs文件上传机制与namenode元数据管理机制
1.hdfs文件上传机制
文件上传过程:
1.客户端想NameNode申请上传文件,
2.NameNode返回此次上传的分配DataNode情况给客户端
3.客户端开始依向dataName上传对应的block数据块。
4.上传完成之后通知namenode,namenode利用pipe管道机制进行文件的备份,也就是一个集群中文件有好几个副本。
5.如果备份失败会将失败信息返回给namenode然后重新分配备节点,并利用pipe管道备份文件
2.NameNode管理元数据的机制

过程:
1.客户端上传文件时,首先向NameNode申请上传文件
2.NameNode首先往edit logs记录元数据操作日志(也就是记录block分配情况等数据)
3.NameNode将文件上传分配blk情况返回给客户端
4.客户端向dateNode上传文件
5.上传成功之后,客户端通知namenode文件上传完成
6.namenode将本次分配的日志信息读取到内存中(内存中记录最新的文件上传的元数据),
7.为了防止内存数据丢失,需要将元数据进行持久化操作。每当editlogs快要写满时将这一段时间的log写入到fsimage中
3.NameNode将元数据持久化到磁盘的过程

过程:(为了防止进行editlog和fsimage合并浪费内存,因此将合并文件的操作在secondnode中进行)
1.当editlogs快要满的时候namenode通知secondnode进程checkpoint操作(合并操作)
2.secondnode收到通知后通知namenode停止向editlogs写日志,
3.此时为了不影响客户端继续上传文件,namenode新创一个文件叫做edits.new记录代替editlogs记录日志操作
4.secondnode将fsimage和editlogs下载进行合并,由于hadoop集成了jetty插件,因此通过http协议下载文件
5.下载完成之后secondnode利用自己的CPU,将editlogs按照fsimage的格式进行计算之后合并到fsimage完成合并,并将文件重命名为fsimage.chkpoint
6.合并完成之后上传给namenode。namenode删除原来的fsimage和edits,并将edits.new重命名为editlogs,将fsimage.chkpoint重新命名为fsimage。就可以进行正常的hdfs机制
1. 什么时候checkpiont
fs.checkpoint.period 指定两次checkpoint的最大时间间隔,默认3600秒。
fs.checkpoint.size 规定edits文件的最大值,一旦超过这个值则强制checkpoint,不管是否到达最大时间间隔。默认大小是64M
总结:
(1)上面的机制就保证断点之后fsimage有大部分的元数据信息,editlogs有最新的元数据信息,内存中也有最新的元数据信息,这样断电之后也不会丢失数据。同时客户端查询数据的时候也会从内存中读取而不会影响速度。
(2)NameNode的作用:
- 维护元数据信息
- 维护hdfs的目录树
- 响应客户端请求
(3)namenode工作特点
Namenode始终在内存中保存metedata,用于处理“读请求”
到有“写请求”到来时,namenode会首先写editlog到磁盘,即向edits文件中写日志,成功返回后,才会修改内存,并且向客户端返回
Hadoop会维护一个fsimage文件,也就是namenode中metedata的镜像,但是fsimage不会随时与namenode内存中的metedata保持一致,而是每隔一段时间通过合并edits文件来更新内容。Secondary namenode就是用来合并fsimage和edits文件来更新NameNode的metedata的。
hdfs文件上传机制与namenode元数据管理机制的更多相关文章
- Hadoop- NameNode和Secondary NameNode元数据管理机制
元数据的存储机制 A.内存中有一份完整的元数据(内存meta data) B.磁盘有一个“准完整”的元数据镜像(fsimage)文件(在namenode的工作目录中) C.用于衔接内存metadata ...
- HDFS文件上传
下图描述了Client向HDFS上传一个200M大小的日志文件的大致过程: 1)首先,Client发起文件上传请求,即通过RPC与NameNode建立通讯. 2)NameNode与各DataNode使 ...
- hadoop学习记录--hdfs文件上传过程源码解析
本节并不大算为大家讲接什么是hadoop,或者hadoop的基础知识因为这些知识在网上有很多详细的介绍,在这里想说的是关于hdfs的相关内容.或许大家都知道hdfs是hadoop底层存储模块,专门用于 ...
- Crontab中shell每分钟执行一次HDFS文件上传不执行的解决方案
一.Crontab -e 加入输出Log */1 * * * * /qiwen_list/upload_to_hdfs.sh > /qiwen_list/mapred.log 2>& ...
- HDFS文件上传下载过程(详图)
- 【Hadoop】hdfs文件上传流程图
- Hadoop之HDFS原理及文件上传下载源码分析(上)
HDFS原理 首先说明下,hadoop的各种搭建方式不再介绍,相信各位玩hadoop的同学随便都能搭出来. 楼主的环境: 操作系统:Ubuntu 15.10 hadoop版本:2.7.3 HA:否(随 ...
- Hadoop之HDFS原理及文件上传下载源码分析(下)
上篇Hadoop之HDFS原理及文件上传下载源码分析(上)楼主主要介绍了hdfs原理及FileSystem的初始化源码解析, Client如何与NameNode建立RPC通信.本篇将继续介绍hdfs文 ...
- HDFS的上传流程以及windows-idea操作文件上传的注意
HDFS的上传流程 命令:hdfs dfs -put xxx.wmv /hdfs的文件夹 cd进入到要上传文件的当前目录,再输入hdfs命令上传,注意-put后tab可以自动补全, 最后加上你要上传到 ...
随机推荐
- SpringMVC的工作流程-005
1.用户发送请求至前端控制器DispatcherServlet 2.DispatcherServlet收到请求调用HandlerMapping处理器映射器. 3. ...
- 使用 Python 操作 Git 版本库 - GitPython
GitPython 是一个用于操作 Git 版本库的 python 包, 它提供了一系列的对象模型(库 - Repo.树 - Tree.提交 - Commit等) 用于操作版本库中的相应对象. 版本库 ...
- 系统管理员需知:25个Linux服务器安全技巧(转)
来源:51CTO 作者:51CTO 大家都认为 Linux 默认是安全的,我大体是认可的 (这是个有争议的话题).Linux默认确实有内置的安全模型.你需要打开它并且对其进行定制,这样才能 ...
- ismember matlab
ismember 判断A中的元素在B中有没有出现 LIA = ismember(A,B) for arrays A and B returns an array of the same size as ...
- Ip合并
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.Fi ...
- 51nod1469 淋漓字符串(后缀自动机)
题目大意: 首先,我们来定义一下淋漓尽致子串. 1.令原串为S. 2.设子串的长度为len,在原串S中出现的次数为k,令其出现的位置为p1, p2, ....pk(即这个子串在原串中[pi,pi + ...
- jQuery全选反选实例
1. $('#tb:checkbox').each(function(){ 每次都会执行 全选-取消操作,注意$('#tb :checkbox').prop('checked',true); tb后面 ...
- [洛谷P5169]xtq的异或和
题目大意:给你一张$n(n\leqslant10^5)$个点$m(m\leqslant3\times10^5)$条边的无向图,每条边有一个权值,$q(q\leqslant2^{18})$次询问,每次询 ...
- Unresolved import *** (models) error on Eclipse
Eclipse version: Oxygen.2 Release (4.7.2) Python version: 3.6 问题:系统提示:from django.db import models 语 ...
- AIM Tech Round (Div. 2) B
B. Making a String time limit per test 1 second memory limit per test 256 megabytes input standard i ...
