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. Linux如何安装VMware Tools

    第一步:安装VMware Tools 桌面上会出现一个光盘,并且会弹出一个框框,里面是VMware Tools的安装包,将其拖到桌面上 就像下面这样 进入终端,将文件拷贝到/tmp目录下面,并解压(也 ...

  2. ReentrantLock深入学习

    ReentrankLock  分为 非公平锁及公平锁 首先我们看一下它里面有哪些属性: private final Sync sync;Sync 这个类是 ReentrantLock的 一个静态内部类 ...

  3. Http学习之使用HttpURLConnection发送post和get请求(1)

    最常用的Http请求无非是get和post,get请求可以获取静态页面,也可以把参数放在URL字串后面,传递给servlet,post与get的不同之处在于post的参数不是放在URL字串里面,而是放 ...

  4. 汉字转拼音,TinyPinyin、Pinyin4j与JPinyin哪个库更快

    1. 介绍 本文对TinyPinyin.Pinyin4j与JPinyin三个汉字转拼音库的用法.测试代码及转换的结果做一个简单的总结. TinyPinyin 适用于Java和Android的快速.低内 ...

  5. 你知道现在有一种新的OCR技术叫“移动端车牌识别”吗?

    核心内容:车牌识别.OCR识别技术.移动端车牌识别.手机端车牌识别.安卓车牌识别.Android车牌识别.iOS车牌识别 一.移动端车牌识别OCR技术研发原理 移动端车牌识别是基于OCR识别的一种应用 ...

  6. java中File类中list()和listFiles()方法区别

    list()和listFiles()方法区别: 1.返回值类型不同:前者为String数组,后者为File对象数组 2.数组中元素内容不同:前者为string类型的[文件名](包含后缀名),后者为Fi ...

  7. NLTK学习笔记(一):语言处理和Python

    目录 [TOC] nltk资料下载 import nltk nltk.download() 其中,download() 参数默认是all,可以在脚本里面加上nltk.download(需要的资料库) ...

  8. Visual Studio Code 使用心得

    Visual Studio Code 使用心得 最好用的跨平台编辑器,没有之一! 修改编辑器的显示语言 起因:vsCode又升级了(1.13.0),重启之后发现熟悉的中文菜单没有了,而且设置文件 se ...

  9. 第一次使用idea从SVN什么checkout项目,一直都是用的eclipse

    IntelliJ IDEA 14 拉取SVN maven 多模块项目 部署tomcat 详细图解!   二话不说 进入主题 我们创建空项目实际上是项目空间 进入主界面 想用svn必须先启用它 选择Su ...

  10. ES6 常用总结——第一章(简介、let、const)

    ES6整理 1. ECMAScript 6简介 ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准.它的目标,是使得 JavaScript 语言可以用来编写复杂 ...