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文件系统架构详解的更多相关文章

  1. Hadoop(四)HDFS集群详解

    前言 前面几篇简单介绍了什么是大数据和Hadoop,也说了怎么搭建最简单的伪分布式和全分布式的hadoop集群.接下来这篇我详细的分享一下HDFS. HDFS前言: 设计思想:(分而治之)将大文件.大 ...

  2. adoop(四)HDFS集群详解

    阅读目录(Content) 一.HDFS概述 1.1.HDFS概述 1.2.HDFS的概念和特性 1.3.HDFS的局限性 1.4.HDFS保证可靠性的措施 二.HDFS基本概念 2.1.HDFS主从 ...

  3. Zookeeper系列二:分布式架构详解、分布式技术详解、分布式事务

    一.分布式架构详解 1.分布式发展历程 1.1 单点集中式 特点:App.DB.FileServer都部署在一台机器上.并且访问请求量较少 1.2  应用服务和数据服务拆分  特点:App.DB.Fi ...

  4. Hyperledger Fabric架构详解

    区块链开源实现HYPERLEDGER FABRIC架构详解 区块链开源实现HYPERLEDGER FABRIC架构详解 2018年5月26日 陶辉 Comments 10 Comments hyper ...

  5. NopCommerce源码架构详解--初识高性能的开源商城系统cms

    很多人都说通过阅读.学习大神们高质量的代码是提高自己技术能力最快的方式之一.我觉得通过阅读NopCommerce的源码,可以从中学习很多企业系统.软件开发的规范和一些新的技术.技巧,可以快速地提高我们 ...

  6. 领域驱动设计(Domain Driven Design)参考架构详解

    摘要 本文将介绍领域驱动设计(Domain Driven Design)的官方参考架构,该架构分成了Interfaces.Applications和Domain三层以及包含各类基础设施的Infrast ...

  7. WeChatAPI 开源系统架构详解

    WeChatAPI 开源系统架构详解 如果使用WeChatAPI,它扮演着什么样的角色? 从图中我们可以看到主要分为3个部分: 1.业务系统 2.WeChatAPI: WeChatWebAPI,主要是 ...

  8. NopCommerce源码架构详解

    NopCommerce源码架构详解--初识高性能的开源商城系统cms   很多人都说通过阅读.学习大神们高质量的代码是提高自己技术能力最快的方式之一.我觉得通过阅读NopCommerce的源码,可以从 ...

  9. RESTful 架构详解

    RESTful 架构详解 分类 编程技术 1. 什么是REST REST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征)性状态转移. 它首次 ...

随机推荐

  1. iOS textfield 限制输入字数长度

    iOS textfield限制输入的最大长度 [self.textFiled addTarget:self action:@selector(textFieldDidChange:) forContr ...

  2. SpringMVC中使用RedirectAttributes重定向传参,防止暴露参数

    RedirectAttributes是SpringMVC3.1版本之后出来的一个功能,专门用于重定向之后还能带参数跳转的. 当我从jsp页面函数中带参数到controller层方法,方法执行完毕后返回 ...

  3. [原创]CentOS实现智能DNS

    一.       环境: Centos-6.6-x64位操作系统,IP地址:210.38.248.7 二.       安装和配置bind服务: 1.      命令:yum install bind ...

  4. Lambda语言篇 —— lambda, 方法引用, 目标类型和默认方法

    本文介绍了Java SE 8中新引入的lambda语言特性以及这些特性背后的设计思想.这些特性包括: lambda表达式(又被成为"闭包"或"匿名方法") 方法 ...

  5. 东正王增涛浅析OA信息化整合平台系统在企业中的应用价值

    王增涛说OA信息化整合平台系统作为企业管理中最基础的管理软件,已在企业成长道路上存在多年,它的应用开启了智能移动办公的先河,也让企业的办公流程管理更加的便捷.高效.流畅.省时.省力,它的使用不但让企业 ...

  6. Spring Boot的properties配置文件读取

    我在自己写点东西玩的时候需要读配置文件,又不想引包,于是打算扣点Spring Boot读取配置文件的代码出来,当然只是读配置文件没必要这么麻烦,不过反正闲着也是闲着,扣着玩了.具体启动过程以前的博客写 ...

  7. 用java来实现验证码功能。

    昨天在网上看到了一篇关于验证码的文章,很不错,但是有些不尽人意的地方,比如没有考虑到前端传过来的验证码如果是小写的话,那么做验证的时候就会出现错误, 因为java是严格区分大小写的,还有就是验证码会重 ...

  8. 关于Myeclipse不能加载已有项目的问题

    如果缺少.project文件,你可以新建一个同名项目,把Use default location 去掉,选择要加载的项目,完成

  9. 再来写一个随机数解决方案,对Random再来一次封装

    本文提供对Random的封装,简化并扩展了其功能 获取随机数,确保同时调用不会重复 //new Random().Next(5); RandomTask.Next(); 从一个列表中,随机获取其中某个 ...

  10. JS语句

    JS语句包括: 1.顺序语句 2.分支语句:  if...else                   switch...case 3.循环语句 一.先看顺序语句: </body> < ...