hdfs文件系统架构详解
hdfs文件系统架构详解
NameNode
*Namenode负责文件系统的namespace以及客户端文件访问
*NameNode负责文件元数据操作,DataNode负责文件内容的处理,跟文件有关的额数据不会经过NameNode
*NameNode负责安排数据存在那台机器上,负责控制和调配最近的副本给用户读取(调节hdfs的balance属性,执行balance命令)
For the common case, when the replication factor is three, HDFS’s placement policy is to put one replica on one node in the local rack, another on a different node in the local rack, and the last on a different node in a different rack.
通常,当备份数为3的时候,HDFS的分配策略会将一个放置在本地节点,另一个放在同一个机架的不同节点上,最后一个放置在不同机架的节点上
*NameNode管理数据块的复制,周期性地接收心跳包(3s/次 10分钟GG)和blockreport(1h/次)
Datanode
*一个块保存了两个文件1:元文件(长度,校验,时间戳) 2:数据文件
*可以随时安全加入退出机器
*周期性地发送心跳包(3s/次 10分钟GG)和blockreport(1h/次)
datanode路径如下(由etc/hadoop/core-site.xml文件决定)
data/tmp/dfs/data/current/BP-1645940924-127.0.1.1-1497948488160/current/finalized/
-rw-rw-r-- 1 cen cen 3589 6月 20 16:50 blk_1073741825 #(数据文件)
-rw-rw-r-- 1 cen cen 39 6月 20 16:50 blk_1073741825_1001.meta #(元数据)
!!!值得一提的是,文件一旦创建,不能修改文件内容
文件损坏处理
*datanode读取block的时候会计算checksum
*与创建时候的checksum进行比对,若不一致则执行损坏处理
*让客户端读取其他datanode节点的数据
*NameNode标记此block已GG,用其他块数据覆盖本节点
*datanode每三周进行一次cehecksum工作
HDFS-NameNode存储在
*内存
*本地磁盘
1.fsimage(镜像文件)
2.edits(编辑日志)
第一次启动HDFS过程详解
0-> format (初始化文件系统)
1-> fsimage (生成镜像文件)
2-> Start NameNode (启动NameNode)
*read fsimage (读取镜像文件)
=======>>> SafeMode(进入HDFS文件系统的安全模式)<<<=======
3-> Start DataNode (启动DataNode)
*注册 (向NameNode注册)
*block report (向Namenode反馈块报告)
当 DataNodes blocks / total blocks = 99.999%
=============>>> 30秒 CD 后退出安全模式<<<================
<<<安全模式期间,不能改变文件系统命名空间(元数据),如增 删 改,允许查看文件>>>
4-> create dir XXX (用户进行操作时候,内存中保存了修改,同时磁盘中修改了edits)
5-> put files XXX (同上)
6-> delete files XX (同上)
第二次启动HDFS
1-> NameNode
*read fsimage (读取镜像文件)
*read edits (读取编辑日志)
*gen write fsimage (合并编辑日志,生成新的镜像文件,替换原来的文件)
*gen write edits (生成空的编辑日志,替换原来的文件)
2-> DataNode
...
...
...
SecondaryNameNode
功能:定时合并编辑日志和镜像文件,用于辅助NameNode
手动进入安全模式
bin/hdfs dfsadmin -safemode <enter | leave | get | wait>
进入 |离开 |查看状态|等待|
hdfs文件系统架构详解的更多相关文章
- Hadoop(四)HDFS集群详解
前言 前面几篇简单介绍了什么是大数据和Hadoop,也说了怎么搭建最简单的伪分布式和全分布式的hadoop集群.接下来这篇我详细的分享一下HDFS. HDFS前言: 设计思想:(分而治之)将大文件.大 ...
- adoop(四)HDFS集群详解
阅读目录(Content) 一.HDFS概述 1.1.HDFS概述 1.2.HDFS的概念和特性 1.3.HDFS的局限性 1.4.HDFS保证可靠性的措施 二.HDFS基本概念 2.1.HDFS主从 ...
- Zookeeper系列二:分布式架构详解、分布式技术详解、分布式事务
一.分布式架构详解 1.分布式发展历程 1.1 单点集中式 特点:App.DB.FileServer都部署在一台机器上.并且访问请求量较少 1.2 应用服务和数据服务拆分 特点:App.DB.Fi ...
- Hyperledger Fabric架构详解
区块链开源实现HYPERLEDGER FABRIC架构详解 区块链开源实现HYPERLEDGER FABRIC架构详解 2018年5月26日 陶辉 Comments 10 Comments hyper ...
- NopCommerce源码架构详解--初识高性能的开源商城系统cms
很多人都说通过阅读.学习大神们高质量的代码是提高自己技术能力最快的方式之一.我觉得通过阅读NopCommerce的源码,可以从中学习很多企业系统.软件开发的规范和一些新的技术.技巧,可以快速地提高我们 ...
- 领域驱动设计(Domain Driven Design)参考架构详解
摘要 本文将介绍领域驱动设计(Domain Driven Design)的官方参考架构,该架构分成了Interfaces.Applications和Domain三层以及包含各类基础设施的Infrast ...
- WeChatAPI 开源系统架构详解
WeChatAPI 开源系统架构详解 如果使用WeChatAPI,它扮演着什么样的角色? 从图中我们可以看到主要分为3个部分: 1.业务系统 2.WeChatAPI: WeChatWebAPI,主要是 ...
- NopCommerce源码架构详解
NopCommerce源码架构详解--初识高性能的开源商城系统cms 很多人都说通过阅读.学习大神们高质量的代码是提高自己技术能力最快的方式之一.我觉得通过阅读NopCommerce的源码,可以从 ...
- RESTful 架构详解
RESTful 架构详解 分类 编程技术 1. 什么是REST REST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征)性状态转移. 它首次 ...
随机推荐
- iOS textfield 限制输入字数长度
iOS textfield限制输入的最大长度 [self.textFiled addTarget:self action:@selector(textFieldDidChange:) forContr ...
- SpringMVC中使用RedirectAttributes重定向传参,防止暴露参数
RedirectAttributes是SpringMVC3.1版本之后出来的一个功能,专门用于重定向之后还能带参数跳转的. 当我从jsp页面函数中带参数到controller层方法,方法执行完毕后返回 ...
- [原创]CentOS实现智能DNS
一. 环境: Centos-6.6-x64位操作系统,IP地址:210.38.248.7 二. 安装和配置bind服务: 1. 命令:yum install bind ...
- Lambda语言篇 —— lambda, 方法引用, 目标类型和默认方法
本文介绍了Java SE 8中新引入的lambda语言特性以及这些特性背后的设计思想.这些特性包括: lambda表达式(又被成为"闭包"或"匿名方法") 方法 ...
- 东正王增涛浅析OA信息化整合平台系统在企业中的应用价值
王增涛说OA信息化整合平台系统作为企业管理中最基础的管理软件,已在企业成长道路上存在多年,它的应用开启了智能移动办公的先河,也让企业的办公流程管理更加的便捷.高效.流畅.省时.省力,它的使用不但让企业 ...
- Spring Boot的properties配置文件读取
我在自己写点东西玩的时候需要读配置文件,又不想引包,于是打算扣点Spring Boot读取配置文件的代码出来,当然只是读配置文件没必要这么麻烦,不过反正闲着也是闲着,扣着玩了.具体启动过程以前的博客写 ...
- 用java来实现验证码功能。
昨天在网上看到了一篇关于验证码的文章,很不错,但是有些不尽人意的地方,比如没有考虑到前端传过来的验证码如果是小写的话,那么做验证的时候就会出现错误, 因为java是严格区分大小写的,还有就是验证码会重 ...
- 关于Myeclipse不能加载已有项目的问题
如果缺少.project文件,你可以新建一个同名项目,把Use default location 去掉,选择要加载的项目,完成
- 再来写一个随机数解决方案,对Random再来一次封装
本文提供对Random的封装,简化并扩展了其功能 获取随机数,确保同时调用不会重复 //new Random().Next(5); RandomTask.Next(); 从一个列表中,随机获取其中某个 ...
- JS语句
JS语句包括: 1.顺序语句 2.分支语句: if...else switch...case 3.循环语句 一.先看顺序语句: </body> < ...