HDFS原理

HDFS包括三个组件:

NameNode、DataNode、SecondaryNameNode

  • NameNode的作用是存储元数据(文件名、创建时间、大小、权限、与block块映射关系等)
  • DataNode的作用是存储真实数据信息
  • SecondaryNameNode作用合并edits和fsimage文件

hadoop.tmp.dir  -> /tmp/hadoop-root

dfs.namenode.dfs.dir ->/dfs/name/current

see_txid  :操作事务id, 编号,用于显示操作次数,每次操作自增1

VERSION:显示namespaceID clusterID

修改namenode的存储位置:

<configuration>

  <property>

    <name>dfs.replication</name>

    <value>1</value>

  <property>

  <property>

    <name>dfs.namenode.name.dir<name>

    <value>/opt/module/hadoop-2.6.0/data</value>

  </property>

</configuration>

dfs.datanode.data.dir -> /tmp/hadoop-root/dfs/data

修改datanode的存储目录

<configuration>

  <property>

    <name>dfs.replication</name>

    <value>1</value>

  <property>

  <property>

    <name>dfs.datanode.data.dir<name>

    <value>/opt/module/hadoop-2.6.0/data</value>

  </property>

</configuration>

修改secondarynamenode的目录

file://${hadoop.tmp.dir}/dfs/namesecondary

重新格式化

hdfs namenode -format -force

多次格式化namenode的问题解释

hdfs格式化会改变VERSION文件中的clusterID,首次格式化时datannode和namenode会产生相同的clusterID;

如果重新执行格式化,namenode的 clusterID会改变,就会与datanode的clusterID不一致,如果重新启动或读写hdfs就会挂掉

需要手动修改

DataNode

  数据存储:在hdfs-site.xml的dfs.datanode.data.dir属性配置中

  存储内容:数据本身和数据长度,校验和以及时间戳

  文件块(Block):基本的存储单元,默认大小是128M,通过dfs.blocksize属性配置

  副本策略:默认是3哥,通过dfs.replication属性配置

  第一个block副本放在与client所在的机器里,(如果client不在集群的范围内,则这第一个node是随机选取的,当然系统会尝试不选择哪些太忙或太满的node)

  第二个block副本放置在与第一个节点不同机架的node中(随机选择)

  第三个副本和第二个在同一机架,随机放在不同的node中

  如果还有更多副本就随机放在集群的node里

DataNode与Namenode通信

<1>DataNode启动后向NameNode注册,注册后会周期性(1小时)向NameNode上报块信息(BlockReport)

BlockReport: Block与Datanode的映射关系(第二映射关系)

说明:blockreport作用,DataNode通过上传块报告能更新NameNode内存中的映射关系(哪个地方坏了,不能使用了)

<2>心跳机制:3s 发送心跳给Namenode,心跳带有NameNode下发给DataNode的命令

超过10分钟,datanode未给namendoe发送心跳,这认为该节点不可用

SecondaryNameNode(SNN)执行流程

<1>周期性向NameNode发送请求edits和fsimage文件

<2>请求完成后,NameNode将edits文件转成edits.new文件

<3>NameNode将fsimage文件加载到内存,合并edits和fsimage文件,命名为fsimage.ckpt

<4>SecondaryNmaeNode将文件发送给NameNode

<5>NameNode用新的fsimage.ckpt替换旧的fsimage,重命名edits.new为edits文件

hadoop学习之HDFS原理的更多相关文章

  1. hadoop学习(五)----HDFS的java操作

    前面我们基本学习了HDFS的原理,hadoop环境的搭建,下面开始正式的实践,语言以java为主.这一节来看一下HDFS的java操作. 1 环境准备 上一篇说了windows下搭建hadoop环境, ...

  2. Hadoop学习笔记—HDFS

    目录 搭建安装 三个核心组件 安装 配置环境变量 配置各上述三组件守护进程的相关属性 启停 监控和性能 Hadoop Rack Awareness yarn的NodeManagers监控 命令 hdf ...

  3. Hadoop学习笔记-HDFS命令

    进入 $HADOOP/bin 一.文件操作 文件操作 类似于正常的linux操作前面加上“hdfs dfs -” 前缀也可以写成hadoop而不用hdfs,但终端中显示 Use of this scr ...

  4. Hadoop学习笔记---HDFS

    Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统.HDFS是一个高度容错性的系统,适合部署在廉价的机器上.HDFS能提供高吞吐 ...

  5. hadoop学习(二)----HDFS简介及原理

    前面简单介绍了hadoop生态圈,大致了解hadoop是什么.能做什么.带着这些目的我们深入的去学习他.今天一起看一下hadoop的基石--文件存储.因为hadoop是运行与集群之上,处于分布式环境之 ...

  6. [Hadoop]Hadoop章2 HDFS原理及读写过程

    HDFS(Hadoop Distributed File System )Hadoop分布式文件系统. HDFS有很多特点: ① 保存多个副本,且提供容错机制,副本丢失或宕机自动恢复.默认存3份. ② ...

  7. hadoop学习记录--hdfs文件上传过程源码解析

    本节并不大算为大家讲接什么是hadoop,或者hadoop的基础知识因为这些知识在网上有很多详细的介绍,在这里想说的是关于hdfs的相关内容.或许大家都知道hdfs是hadoop底层存储模块,专门用于 ...

  8. hadoop学习之HDFS

    1.什么是大数据?什么是云计算?什么是hadoop? 大数据现在很火,到底什么是大数据,多大的数据才算大,一般而言对于TB级以上的数据我们成为大数据,对于这些数据它的价值在哪?大数据的价值就是我们大量 ...

  9. hadoop学习(七)----mapReduce原理以及操作过程

    前面我们使用HDFS进行了相关的操作,也了解了HDFS的原理和机制,有了分布式文件系统我们如何去处理文件呢,这就的提到hadoop的第二个组成部分-MapReduce. MapReduce充分借鉴了分 ...

随机推荐

  1. Python - Win10系统下Python3.x环境配置

    Win10系统下Python3.x环境配置 https://blog.csdn.net/qq_41952474/article/details/82630551

  2. Git本地有未提交文件,直接拉取远端最新版本

    git pull = git fetch + git merge 1.修改不同的文件: 用户D和用户L在本地提交中修改了不同的文件,如果用户D将改动推送到服务器后,用户L再推送就会遇到非快进式推送错误 ...

  3. JVM:带你查看常见的问题,以及分析处方法

    一.前言 各位开发和运维同学,在项目实施落地的过程中,尤其是使用EDAS.DRDS.MQ这些java中间件时,肯定会遇到不少JAVA程序运行和JVM的问题.我结合过去遇到的各种各样的问题和实际处理经验 ...

  4. Zifencei扩展

    fence 指令对外部可见的访存请求,如设备 I / O 访问,内存访问等进行串行化.外部可见是指对处理器的其他核心.线程,外部设备或协处理器可见. fence.i 指令同步指令和数据流.在执行 fe ...

  5. Android.mk 使用说明

    Android.mk 详解https://blog.csdn.net/dearsq/article/details/50585537  Android.mk中的主要配置参数: 1.LOCAL_JACK ...

  6. Test CMake run finished with errors

    Test CMake run finished with errors 记录一个安装 CLion 过程中的错误. CLion的安装和破解教程网上有很多,大家可以自行搜索. 安装了之后在 Setting ...

  7. 深浅拷贝、集合set、函数、日志

    #-----深浅拷贝---- import copy a = ["xiaoming",111,[5000,2000]] b = a print("b:%s" % ...

  8. UiPath: Selectors repair 选择器的修复,即被选择的按钮发生改变如何选择第二按钮

    实现批量注册用户功能时,出现第一个用户注册完时,弹出确认按钮,点击即可,但是第二个用户注册完成时,弹出的按钮与第一个有差异,图形用户界面元素及其父元素的属性都发生改变.所以就点不了按钮,就卡死在这.如 ...

  9. 00-赵志勇机器学习-Logistics_Regression-data.txt(转载)

    4.45925637575900 8.22541838354701 0 0.0432761720122110 6.30740040001402 0 6.99716180262699 9.3133933 ...

  10. ajax中responseText与responseXML区别

    1."responseText”属性以字符串形式返回HTTP响应:“responseXML”属性以XML形式返回HTTP响应.function getTel() {  var telText ...