一、HDFS运行机制

  概述:用户的文件会被切块后存储在多台datanode节点中,并且每个文件在整个集群中存放多个副本,副本的数量可以通过修改配置自己设定。

  HDFS:Hadoop Distributed file system,分布式文件系统。

  HDFS的机制:

   HDFS集群中,有两种节点,分别为Namenode,Datanode;

   Namenode它的作用时记录元数据信息,记录块信息和对节点进行统一管理。比如用户要存储一个很大的文件,HDFS系统会对这个文件进行切分,然后存储在多台Namenode节点当中,那么每个切的大小,存储的路径信息,文件的副本数等元数据信息会存储在元数据当中,由Namenode进行管理和记录。

   Datanode节点的作用是存储数据,Namenode将数据切块后的分配给多个Datanode节点,Datanode对数据块进行存储,Datanode它默认的块大小在hadoop1.x的版本中是64M,而hadoop2.x之后的版本默认块大小为128M。

   HDFS还有一个副本机制,它会默认给存在Datanode当中的每块文件进行备份,默认的副本数量(republication)为3,这样保证了数据的安全性。

   大致如图:

二、HDFS写数据流程

  1.客户端向Namenode请求上传文件数据Hunter.txt(大小:200M);

  2.Namenode响应可以上传文件;

  3.客户端向Namenode请求上传第一个block(0~128M),请求返回Datanode节点;

  4.Namenode返回三个Datanode节点(副本数默认为3),采用这三个节点存储数据;

  5.客户端向Datanode请求建立一个block的传输通道;

  6.Datanode应答通道建立成功;

  7.客户端向Datanode传输数据,数据写入到HDFS文件系统当中。

三、hdfs读数据流程

  1.客户端向Namenode请求下载文件hunter.txt(200M);

  2.Namenode返回目标文件的元数据信息(block所在的datanode);

  3.客户端向Datanode请求读取数据文件;

  4.Datanode以FSDataInputStream流的形式向客户端传输数据;

  5.客户端生成hunter.txt文件。

四、Namenode运行机制

  首先去到主节点namenode的元数据信息dfs目录中,可以看到很多种文件,如下:

  edits:存放HDFS系统所有的更新操作的日志文件

  fsimage:HDFS元数据的永久性的检查点,其中包含了hdfs系统所有的目录和文件

  seen_txid:最有一个edits文件的数字,即edits文件个数

  VERSION:记录了很多的id,如下:

    namespaceID:每个节点的id,每个节点都不同

    ClusterID:一个集群统一的id,是唯一的,一个集群中所有节点的ClusterID都相同

    CTime:Namenode存储系统的使用时间的时间戳

    storageType:节点类型

    blockpoolID:跨集群的全局唯一

    layoutVersion:版本号

  Namenode的运行机制:

   1.首先启动集群,会启动Namenode和SecondaryNamenode,两个节点的内存会加载日志文件和镜像文件(edits、fsimage文件);

   2.当客户端对HDFS集群进行增删改查等操作时,日志文件会更新滚动;

   3.当eidts文件数量达到默认阈值,或checkpoint时间到达默认触发时间时;

    (dfs.namenode.checkpoint.period :多久checkpoint一次、

    dfs.namenode.checkpoint.check.period:多久检查一次操作的次数、
      dfs.namenode.checkpoint.txns:多少次操作后chechpoint一次)

   4.Namenode将edits文件拷贝到SecondarNamenode;

   5.SecondarNamenode的内存会加载拷贝的edits文件并合并;

   6.SecondarNamenode会生成新的镜像文件fsimage.checkpoint;

   7.SecondarNamenode将新生产的镜像文件拷贝到Namenode;

   8.Namenode将收到的镜像文件重命名为fsimage;

   9.Namenode将新的fsimage镜像文件发送到SecondarNamenode

   这样两个节点的元数据信息就相同了!!!

五、Datanode运行机制

  1.HDFS集群启动后,Datanode现象Namenode发送注册信息;

  2.Namenode返回注册成功;

  3.每隔一段时间Datanode会上传所有的块信息到Namenode;

  (块信息:数据、数据长度、校验和、时间戳等)

  4.默认如果超过10分钟Namenode没有收到Datanode的信息信息,则认为节点不可用

HDFS及其各组件的机制的更多相关文章

  1. HDFS 09 - HDFS NameNode 的高可用机制

    目录 1 - 为什么要高可用 2 - NameNode 的高可用发展史 3 - HDFS 的高可用架构 3.1 Standby 和 Active 的命名空间保持一致 3.2 同一时刻只有一个 Acti ...

  2. Delphi的组件读写机制

    Delphi的组件读写机制(一) 一.流式对象(Stream)和读写对象(Filer)的介绍在面向对象程序设计中,对象式数据管理占有很重要的地位.在Delphi中,对对象式数据管理的支持方式是其一大特 ...

  3. Hadoop HDFS概念学习系列之HDFS升级和回滚机制(十二)

    不多说,直接上干货! HDFS升级和回滚机制 作为一个大型的分布式系统,Hadoop内部实现了一套升级机制,当在一个集群上升级Hadoop时,像其他的软件升级一样,可能会有新的bug或一些会影响现有应 ...

  4. React: React的组件状态机制

    一.简介 在React中,有两个核心的默认属性,分别是state和props.state会记录组件的状态,React根据状态的变化,会对界面做相应的调整或渲染.props则是数据流向属性,React通 ...

  5. 【React 6/100】 React原理 | setState | JSX语法转换 | 组件更新机制

    ****关键字 | setState | JSX语法转换 | 组件更新机制 组件更新机制 setState() 的两个作用 修改state 更新组件 过程:父组件重新渲染时,也会重新渲染子组件,但只会 ...

  6. Vue总结第五天:vue-router (使用模块化(创建Vue组件)机制编程)、router-link 标签的属性、路由代码跳转、懒加载、路由嵌套(子路由)、路由传递数据、导航守卫)

    Vue总结第五天:vue-router ✿ 路由(器)目录: □  vue中路由作用 □  vue-router基本使用 □  vue-router嵌套路由 □  vue-router参数传递 □  ...

  7. HDFS原理分析之HA机制:avatarnode原理

    一.问题描述 由于namenode 是HDFS的大脑,而这个大脑又是单点,如果大脑出现故障,则整个分布式存储系统就瘫痪了.HA(High Available)机制就是用来解决这样一个问题的.碰到这么个 ...

  8. hdfs深入:03、hdfs的架构以及副本机制和block块存储

    HDFS分布式文件系统设计目标 1.            硬件错误  由于集群很多时候由数量众多的廉价机组成,使得硬件错误成为常态 2.            数据流访问  所有应用以流的方式访问数 ...

  9. Hadoop(五)—— HDFS NameNode、DataNode工作机制

    一.NN与2NN工作机制 NameNode(NN) 1.当HDFS启动时,会加载日志(edits)和镜像文件(fsImage)到内存中. 2-4.当元数据的增删改查请求进来时,NameNode会先将操 ...

随机推荐

  1. 怎样在ISE14.7中固化FLASH文件

    前言 当工程开发完成后,bit文件类型掉电后会消失,而此时采用FLASH固化就很重要了. 软件版本:ISE14.7 流程 1.对生成FLASH文件进行设置:配置速率为33,选择66貌似配置失败,中庸之 ...

  2. android实用软件tasker应用设置

    设置连接wifi和充电两个调试都满足的情况下打开同步和psiphon3:在端任意wifi是断开或断电时同步和关掉psiphon3. 其他没有问题去到关掉psiphon3时出现小意外,不能直接关闭程序( ...

  3. zabbix存储history_text

    有一个监控项存储一个目录的所有文件(递归)信息,字符数量比较大,history_str表的value的字段字符数限制为255长度,所以就想存储到history_text表中,在最新数据中一直显示不出新 ...

  4. 关于进程、线程、应用程序域(AppDomain)

    什么是进程?什么是线程?什么是应用程序集?及三者之间的关系(以下做一些简单的概念性的理解) 三者共同的基础对象!!!——应用程序 1.进程是操作系统用于隔离众多正在运行的应用程序的机制,进程的缺点是降 ...

  5. Mac新手必看教程—让你离熟练操作mac只差十分钟

    本文收录于:风云社区(提供各类mac软件资源下载) 本文源自:什么值得买 无论轻薄办公本.还是赶超台式性能的游戏本,关注#笔记本攻略#栏目,解决笔记本电脑从选购到使用的各种问题. 引子 大部分用户接触 ...

  6. mysql 端口修改

    mysql 修改端口 1.  停止mysql服务 2.  打开文件夹下my.ini文件.(E:\mysql-5.7-3307) 修改文件中的port值,注意两个地方: [client]default- ...

  7. linux中使用gdb调试程序

     ref:https://blog.csdn.net/tenfyguo/article/details/8159176 一,什么是coredump 我们经常听到大家说到程序core掉了,需要定位解决, ...

  8. SpringBoot(七):SpringBoot整合Swagger2

    原文地址:https://blog.csdn.net/saytime/article/details/74937664 手写Api文档的几个痛点: 文档需要更新的时候,需要再次发送一份给前端,也就是文 ...

  9. [家里蹲大学数学杂志]第057期图像复原中的改进 TV 模型

    $\bf 摘要$: 本文给出了王大凯等编的<图像处理中的偏微分方程方法>第 6.2 节的详细论述. $\bf 关键词$: 图像复原; TV 模型; matlab 编程 1. 前言 图像在形 ...

  10. Pandas时间处理的一些小方法

    一.以下有两种方式可以创建一个Timestamp对象: 1. Timestamp()的构造方法 import pandas as pd from datetime import datetime as ...