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可以自动补全, 最后加上你要上传到 ...
随机推荐
- 在c++中调用exe程序进行操作
#include <Windows.h> #include <iostream> #include <direct.h> #define picNum 228 us ...
- TScreen 类 - 通过 Screen 更换光标
//更换窗体或某个控件的光标可以不通过 Screen 对象, 譬如: begin Self.Cursor := crAppStart; Panel1.Cursor := crHandPoint ...
- jQuery的动画与特效
显示与隐藏 show() 和 hide() 方法 动画效果的show() 和 hide() show(speed,[]callback) hide(speed,[]callback) speed:表示 ...
- jQuery实现三级联动
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- vmware 虚拟机下安装centOS7.0
当时安装的是 CentOS-7.0-1406-x86_64-DVD.iso 这个版本的镜像,提示: 您已经配置此虚拟机使用64位客户操作系统.但是64位操作系统不可用.此主机具有虚拟化支持能力的,可是 ...
- java获取时间整点工具代码
/**获取上n个小时整点小时时间 * @param date * @return */ public static String getLastHourTime(Date date,int n){ C ...
- Sparse autoencoder implementation 稀疏自编码器实现
任务:在这个问题中,你将实现稀疏自编码器算法,并且展示它怎么发现边缘是自然图像的一个好的表示. 在文件 sparseae_exercise.zip中,我们已经提供了一些Matlab中的初始代码,你应该 ...
- javascript中面向对象的5种写法
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- openstack之Glance介绍
什么是Glance glance即image service(镜像服务),是为虚拟机的创建提供镜像服务 为什么要有Glance 我们基于openstack是构建基本的Iaas平台对外提供虚机,而虚机在 ...
- BZOJ3456:城市规划——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=3456 求出n个点的简单(无重边无自环)无向连通图数目 模数很熟悉,先敲一个NTT. 然后通过推导式 ...
