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. 开涛spring3(3.3) - DI 之 3.3 更多DI的知识

    3.3.1  延迟初始化Bean 延迟初始化也叫做惰性初始化,指不提前初始化Bean,而是只有在真正使用时才创建及初始化Bean. 配置方式很简单只需在<bean>标签上指定 “lazy- ...

  2. 一个gif远程crash你的微信!

    测试了一下iPhone6,iPhone7不同版本的 iOS上,收到某个天线宝宝的gif,最新版本的微信都会挂. demo视频:演示视频 通过 crash log可以看到微信最新的6.5.8版本在打开 ...

  3. VR全景智慧城市—你的掌上步行街

    "春风十里,不如有你",不知不觉间,身边的人已对VR不再陌生,VR眼镜的热销,VR体验店的火爆,VR游戏的向往等等.可见VR就是为生活而诞生! 2015年被称作VR行业的产业元年, ...

  4. nodejs集成sqlite

    正在物色node上面的轻量级嵌入式数据库,作为嵌入式数据库的代表,sqlite无疑是个理想的选择方案.npm上集成sqlite的库主要有两个——sqlite3和realm. realm是一个理想的选择 ...

  5. Java中设计模式之工厂模式-4

    一.工厂模式由来 1)还没有工厂时代:假如还没有工业革命,如果一个客户要一款宝马车,一般的做法是客户去创建一款宝马车,然后拿来用. 2)简单工厂模式:后来出现工业革命.用户不用去创建宝马车.因为客户有 ...

  6. iOS项目评估报告

    1.整体项目无分层概念,结构混乱,代码耦合严重. 影响:后期扩展困难,维护困难. 解决方案:1.整体采用mvc模式. 2.在原来的基础再抽离出业务层 3.业务层按模块管理,合理分层分包. 4.做好共用 ...

  7. 高性能队列Disruptor系列1--传统队列的不足

    在前一篇文章Java中的阻塞队列(BlockingQueue)中介绍了Java中的阻塞队列.从性能上我们能得出一个结论:数组优于链表,CAS优于锁.那么有没有一种队列,通过数组的方式实现,而且采用无锁 ...

  8. JS事件及其兼容用法

    JavaScript与HTML之间的交互是通过事件实现的.事件,就是文档或浏览器窗口中发生的一些特定的交互瞬间. 1.事件流:描述的是从页面中接收事件的顺序. IE提出的事件冒泡流:事件开始由最具体的 ...

  9. SICP-Elements of program

    编程语言=组合简单形成复杂的工具 简单的声明和表达式 简单元素之间的组合方式 组合后元素的抽象方式 程序=数据+函数 数据是我们要处理的内容 函数是我们处理数据的方式 函数式与中缀式 函数式不会出现歧 ...

  10. node.js如何制作命令行工具(一)

    之前使用过一些全局安装的NPM包,安装完之后,可以通过其提供的命令,完成一些任务.比如Fis3,可以通过fis3 server start 开启fis的静态文件服务,通过fis3 release开启文 ...