HDFS设计基础与目标

  • 硬件错误是常态。因此需要冗余
  • 流式数据访问。即数据批量读取而非随机读写,Hadoop擅长做的是数据分析而不是事务处理(随机性的读写数据等)。
  • 大规模数据集
  • 简单一致性模型。为了降低系统复杂度,对文件采用一次性写多次读的逻辑设计,即是文件一经写入,关闭,就再也不能修改
  • 程序采用“数据就近“原则分配节点执行

HDFS体系结构

Namenode:

  • 管理文件系统的命名空间
  • 记录每个文件数据块在各个Datanode上的位置和副本信息
  • 协调客户端对文件的访问
  • 记录命名空间内的改动或空间本身属性的改动
  • Namenode使用事务日志记录HDFS元数据的变化。使用映像文件存储文件系统的命名空间,包括文件映射(fsimage),文件属性等

Datanode:

  • 负责所在物理节点的存储管理
  • 一次写入,多次读取(不修改),因此不需要考虑一致性问题
  • 文件由数据块组成,典型的块大小是64MB
  • 数据块尽量散布道各个节点

Hadoop读取HDFS数据的流程:

  • 客户端要访问HDFS中的一个文件
  • 首先从namenode获得组成这个文件的数据块位置列表
  • 根据列表知道存储数据块的datanode
  • 访问datanode获取数据
  • Namenode并不参与数据实际传输

  

HDFS可靠性:

  • 冗余副本策略

  hdfs-site.xml中指定,副本越大越安全,但是资源利用率越低。

  • 机架策略

  3份副本策略:本地,本机架,其他机架。

  • 心跳机制

  Namenode周期性从datanode接收心跳信号和块报告,根据块报告验证元数据,没有按时发送心跳的datanode会被标记为宕机,不会再给它任何I/O请求,如果datanode失效造成副本数量下降,并且低于预先设置的阈值,namenode会检测出这些数据块,并在合适的时机进行重新复制,引发重新复制的原因还包括数据副本本身损坏、磁盘错误,复制因子被增大等。

  • 安全模式

Namenode启动时会先经过一个“安全模式”阶段,安全模式阶段不会产生数据写,在此阶段Namenode收集各个datanode的报告,当数据块达到最小副本数以上时,会被认为是“安全”的。在一定比例(可设置)的数据块被确定为“安全”后,再过若干时间,安全模式结束。当检测到副本数不足的数据块时,该块会被复制直到达到最小副本数。

  • 校验和
  • 回收站

删除一个文件时,其实放入回收站/trash中,回收站中的文件可以快速恢复,通过设定时间阈值,当超过这个阈值,就被彻底删除并释放占用的数据块。

  • 元数据保护
  • 快照机制

HDFS中Namenode的持久化机制:

HDFS 在解决namenode元数据持久性问题时,采用了一种事物日志(transaction log,called EditLog) + 文件系统镜像文件(FsImage)的办法。日志文件和镜像文件都存储在主机本地文件系统中。  当HDFS运行时,在内存中有一份整个文件系统元数据的镜像。当对HDFS进行修改性操作时,系统只修改内存中的文件系统元数据镜像,并在事物日志中添加操作记录,并不及时修改硬盘中的FsImage文件。只有当namenode下次启动时,系统会从磁盘上同时读取EditLog 和 FsImage两个文件,并根据EditLog中记录的操作来修改(或者叫更新)FsImage,然后将新版本的FsImage写回磁盘并清空EditLog。这时候,磁盘和内存中的FsImage文件都是最新的。

HDFS文件操作

命令行方式

  

hadoop fs –put <local path> <hdfs path> //将本地文件放入HDFS中
hadoop fs –ls <hdfs path> //显示文件目录
hadoop fs –get <hdfs path> <local path> //将Hdfs中的数据拷贝到本地
hadoop fs –rmr <file> //删除文件,如果开启回收站了会到回收站里面
hadoop fs –cat <file path> //查看文件内容
hadoop dfsadmin –report //查看hdfs目前状态

注:有些地方命令是hadoop dfs …..这个跟hadoop fs一样的,没什么区别。

JAVA API方式

这个就不多说了。。。

Hadoop学习-HDFS篇的更多相关文章

  1. Hadoop 学习 HDFS

    1.HDFS的设计 HDFS是什么:HDFS即Hadoop分布式文件系统(Hadoop Distributed Filesystem),以流式数据访问模式来存储超大文件,运行于商用硬件集群上,是管理网 ...

  2. hadoop学习;hdfs操作;执行抛出权限异常: Permission denied;api查看源代码方法;源代码不停的向里循环;抽象类通过debug查找源代码

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u010026901/article/details/26587251 eclipse快捷键alt+s ...

  3. Hadoop学习-hdfs安装及其一些操作

    hdfs:分布式文件系统 有目录结构,顶层目录是:  /,存的是文件,把文件存入hdfs后,会把这个文件进行切块并且进行备份,切块大小和备份的数量有客户决定. 存文件的叫datanode,记录文件的切 ...

  4. hadoop学习笔记(四):HDFS文件权限,安全模式,以及整体注意点总结

    本文原创,转载注明作者和原文链接! 一:总结注意点: 到现在为止学习到的角色:三个NameNode.SecondaryNameNode.DataNode 1.存储的是每一个文件分割存储之后的元数据信息 ...

  5. Hadoop学习之旅二:HDFS

    本文基于Hadoop1.X 概述 分布式文件系统主要用来解决如下几个问题: 读写大文件 加速运算 对于某些体积巨大的文件,比如其大小超过了计算机文件系统所能存放的最大限制或者是其大小甚至超过了计算机整 ...

  6. Hadoop学习笔记—2.不怕故障的海量存储:HDFS基础入门

    一.HDFS出现的背景 随着社会的进步,需要处理数据量越来越多,在一个操作系统管辖的范围存不下了,那么就分配到更多的操作系统管理的磁盘中,但是却不方便管理和维护—>因此,迫切需要一种系统来管理多 ...

  7. Hadoop基础-HDFS安全管家之Kerberos实战篇

    Hadoop基础-HDFS安全管家之Kerberos实战篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我们都知道hadoop有很多不同的发行版,比如:Apache Hadoop ...

  8. 【Hadoop学习之四】HDFS HA搭建(QJM)

    环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk8 hadoop-3.1.1 由于NameNode对于整个HDF ...

  9. hadoop之HDFS学习笔记(一)

    主要内容:hdfs的整体运行机制,DATANODE存储文件块的观察,hdfs集群的搭建与配置,hdfs命令行客户端常见命令:业务系统中日志生成机制,HDFS的java客户端api基本使用. 1.什么是 ...

随机推荐

  1. Ubuntu14.04配置arm-linux-gcc 4.4.3交叉编译环境

    首先下载交叉编译:不多说,直接贴地址了 http://arm9download.cncncn.com/mini2440/linux/arm-linux-gcc-4.4.3-20100728.tar.g ...

  2. (转) mac 下的eclipse 配置 python 2.7

    原地址: http://marsfreewill.blogspot.it/2012/08/mac-ospythonpydeveclipse.html   在MAC OS上配置Python开发环境(Py ...

  3. build opencv with python support

    cmake -DPYTHON_LIBRARY=/opt/anaconda/lib/libpython2.7.so -DPYTHON_INCLUDE_DIR=/opt/anaconda/include/ ...

  4. DOM2定位与高宽类属性专题学习【DOM专题学习系列(一)】

    网页可见区域宽: document.body.clientWidth;网页可见区域高: document.body.clientHeight;网页可见区域宽: document.body.offset ...

  5. 不到30行JS代码实现的Excel表格

    不到30行JS代码实现的Excel表格,jQuery并非不可替代 某国外程序员展示了一个由原生JS写成不依赖第三方库的,Excel表格应用,有以下特性: 由不足30行的原生JavaScript代码实现 ...

  6. ecos编译redboot,vmware运行redboot,执行hello world(图形配置)

    1- 下载源文件 :~/ecos$ ls -lrt total 80 drwxr-xr-x 7 XXXX XXXX  4096 Mar 27  2009 ecos-3.0 -rw-r--r-- 1 X ...

  7. PHP API反射实例

    *反射是操纵面向对象范型中元模型的API,其功能十分强大,可帮助我们构建复杂,可扩展的应用.其用途如:自动加载插件,自动生成文档,甚至可用来扩充PHP语言.php反射api由若干类组成,可帮助我们用来 ...

  8. STM32之------独立看门狗(IWDG)和窗体看门狗(WWDG)

    一     前沿废语: 之前有很风靡的游戏,名字叫<看门狗>.该游戏用了很新的引擎技术,打造出了一个辽阔庞大的世界,内容是玩家Aiden·Pearce(主角)是一名精通黑客技术的高手,当时 ...

  9. 汇编写函数:关于PUBLIC和EXTRN的区别

    PUBLIC伪指令的格式:PUBLIC 标识符,标识符... 该伪指令告诉汇编程序放在PUBLIC之后的标识符(本模块的定义的)可为其他模块使用,这些标识符可以是变量.标号或者过程名.言外之意,它不仅 ...

  10. SQL Server 2008空间数据应用系列六:基于SQLCRL的空间数据可编程性

    原文:SQL Server 2008空间数据应用系列六:基于SQLCRL的空间数据可编程性 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server 2008 ...