为什么我们需要HDFS

文件系统由三部分组成:与文件管理有关软件、被管理文件以及实施文件管理所需数据结构。

既然读取一块磁盘的所有数据需要很长时间,写入更是需要更长时间(写入时间一般是读取时间的3倍)。我们需要一个巨大文件难道得换传输速度10GB/S的磁盘(现在没有这样的磁盘),而且即使有文件为1ZB,或者小点10EB时,这样的磁盘也无法做到随读随取。

当数据集的大小超过一台独立物理计算机的存储能力时,就有必要对它进行分区并存储到若干台单独的计算机上。

从概念图上看,分布化的文件系统会因为分布后的结构不完整,导致系统复杂度加大,并且引入的网络编程,同样导致分布式文件系统更加复杂。

对于以上的问题我们来HDFS是如何迎刃而解的?

HDFS以流处理访问模式来存储文件的。

一次写入,多次读取。数据源通常由源生成或从数据源直接复制而来,接着长时间在此数据集上进行各类分析,大数据不需要搬来搬去。

DFS是用流处理方式处理文件,每个文件在系统里都能找到它的本地化映像,所以对于用户来说,别管文件是什么格式的,也不用在意被分到哪里,只管从DFS里取出就可以了。

一般来说,文件处理过程中无法保证文件安全顺利到达,传统文件系统是使用本地校验方式保证数据完整,文件被散后,难道需要特意安排每个分片文件的校验码?

分片数量和大小是不确定的,海量的数据本来就需要海量的校验过程,分片后加入每个分片的跟踪校验完全是在数满天恒星的同时数了他们的行星。×

HDFS的解决方案是分片冗余,本地校验。

数据冗余式存储,直接将多份的分片文件交给分片后的存储服务器去校验

冗余后的分片文件还有个额外功能,只要冗余的分片文件中有一份是完整的,经过多次协同调整后,其他分片文件也将完整。

经过协调校验,无论是传输错误,I/O错误,还是个别服务器宕机,整个系统里的文件是完整的

分布后的文件系统有个无法回避的问题,因为文件不在一个磁盘导致读取访问操作的延时,这个是HDFS现在遇到的主要问题。

现阶段,HDFS的配置是按照高数据吞吐量优化的,可能会以高时间延时为代价。但万幸的是,HDFS是具有很高弹性,可以针对具体应用再优化。

HDFS的概念

HDFS可以用下面这个抽象图的具体实现

何为元数据?

元数据是用于描述要素、数据集或数据集系列的内容、覆盖范围、质量、管理方式、数据的所有者、数据的提供方式等有关的信息。更简单的说,是关于数据的数据。

HDFS就是将巨大的数据变成大量数据的数据。

PS: 磁盘存储文件时,是按照数据块来存储的,也就是说,数据块是磁盘的读/写最小单位。数据块也称磁盘块。构建于单个磁盘上的文件系统是通过磁盘块来管理文件 系统,一般来说,文件系统块的大小是磁盘块的整数倍。特别的,单个磁盘文件系统,小于磁盘块的文件会占用整个磁盘块。磁盘块的大小一般是512字节。

在HDFS中,也有块(block)这个概念,默认为64MB,每个块作为独立的存储单元。

与其他文件系统不一样,HDFS中每个小于块大小的文件不会占据整个块的空间。具体原因在后面的介绍。下面介绍为什么是64MB一个文件块

在文件系统中,系统存储文件时,需要定位该数据在磁盘中的位置,再进行传输处理。

定位在磁盘的位置是需要时间的,同样文件传输也是需要时间。

T(存储时间)=T(定位时间)+T(传输时间)

如果每个要传输的块设置得足够大,那么从磁盘传输数据的时间可以明显大于定位这个块开始位置的时间

T(存储时间)=T(定位时间) )[-∞]+T(传输时间)[∞]

近似等于:T(存储时间)=T(传输时间)

举个例子:我们来传输一个10000MB的文件

单个磁盘下:

存储1个10000MB的文件我们需要时间是

10msX100+1000msX100=101s

10台数据节点: 传输10000MB的文件所花的时间:10msX10+10ms+10s=10.11s

此例子是理论数据,实际比这个稍长。

总结:

这样的设定使存储一个文件主要时间就花在传输过程中,块大小决定传输由多个快组成文件的存储速率,这也是HSDF的核心技术。

当然不是设置每个块越大越好。

HDFS提供给MapReduce数据服务,而一般来说MapReduce的Map任务通常一次处理一个块中的数据,如果任务数太少(少于集群中节点的数量),就没有发挥多节点的优势,甚至作业的运行速度就会和单节点一样。

分布式的文件抽象能够带来的优势是:

1、一个文件可以大于每个磁盘

2、文件不用全在一个磁盘上。

3、简化了存储子系统的设计。

不仅如此,基于元数据块的存储方式非常适合用于备份,利用备份可提供数据容错能力和可用性。

HDFS的关键运作机制

HDFS是基于主从结构(master/slaver)构件。

详细运行机制将在下篇文章介绍。。。。。。

如何使用HDFS

HDFS是在安装hadoop-0.20.2.tar.gz并成功配置后即可使用。具体安装过程不再赘述。参见:《安装并运行hadoop》、《Ubuntu 14.04下安装JDK8 》

无论是使用shell脚本,或者使用WEB UI进行操作,使用前必须得明白HDFS的配置。便于存储操作或者操作优化。

hdfs是nas_HDFS 协议是怎么回事相关推荐

  1. modbus rtu与计算机通讯,Modbus通讯协议原来是这么回事!看完秒懂了

    原标题:Modbus通讯协议原来是这么回事!看完秒懂了 [www.gkwo.net]工程师必备网站 导语:ModBus网络是一个工业通信系统,由带智能终端的可编程序控制器和计算机通过公用线路或局部专用 ...

  2. 竞业协议“下沉”,普通程序员逃不过的坑

    本文转载自 InfoQ "公司最大的敌人不是竞争者而是公司内部的职员,因为从竞争者那里失去的只是利润,而从不忠的员工那里失去的将是真正的财富." 如今在互联网圈子里,几乎没人不知道 ...

  3. 压箱底总结:流系统端到端一致性对比

    点击上方"朱小厮的博客",选择"设为星标" 回复"666"获取公众号专属资料 分布式最难的2个问题: 1.Exactly Once Mess ...

  4. 吐血之作 | 流系统Spark/Flink/Kafka/DataFlow端到端一致性实现对比

    长文预警, 全文两万五千多字, 37页word文档的长度 (略有杂乱,有些非常复杂的地方可能需要更多的例子来说明,使得初学者也能很容易看懂,但是实在花的时间已经太多太多了,留待后边利用起碎片时间一点点 ...

  5. 端到端一致性,流系统Spark/Flink/Kafka/DataFlow对比总结(压箱宝具呕血之作)

    前 这篇文章可以说是作者压箱底儿的知识总结(之一,毕竟作者学的东西很杂 ╮( ̄▽ ̄"")╭ )了. 断断续续写了将近三个月, 耗费了大量的精力, 本来的目的本来只是想对比一下各个s ...

  6. 对话“互联网先驱”:星际互联网究竟可不可行?

    Vinton Cerf曾在四十年前协助创造了互联网,如今他仍在努力帮助世界各地的人们建立联系. 来源丨Quantamagazine 作者丨Susan D'Agostino 编译丨科技行者 Vinton ...

  7. CDH5离线安装手册

    Cloudera manage(离线)安装手册 (按步骤操作) 1.       准备工作 1.1.    系统环境 硬件设备:vm虚拟机 网络组成: 192.168.210.131master 19 ...

  8. 加密、解密、摘要、签名、证书一文搞懂

    概念 是否可逆 意思 算法举例 说明 能力 可逆 加密过后的数据可以解密出来 AES,DES,3DES等 对称加密 快 RSA,RSA2等 非对称,公钥加密私钥解密或者反过来,用于验签 加密的数据越多 ...

  9. hadoop入门小知识点

    注意各个主机之间的通信 文件的复制 scp指令 scp /etc/profile acm03:/etc 所有历史版本: archive.apache.org hdfs://acm01:9000     ...

最新文章

  1. HashSet的使用
  2. qt调用linux系统的线程函数吗,Qt之主线程与子线程通讯(linux下)
  3. iphone降级_iOS 14升级体验与问题总结,附降级教程
  4. subpress installed post-installation script returned error exit status 1
  5. 『操作系统』微内核结构的操作系统几何?(优缺点)
  6. antd Table/ProList中rowClassName用法(补充记录)
  7. python go rpc_Go实现简易RPC框架的方法步骤
  8. Error: 未绑定为第三方平台的开发小程序
  9. lamda表达式修改数据_正则表达式学习教程
  10. Linux电源管理-wakeup events framework
  11. 制作纯净版WinPE2.0
  12. 论文查重 降重复度?如何进行毕业论文查重--总结贴
  13. 圆柱体积怎么算立方公式_圆柱体积公式怎么算
  14. python调用迅雷下载引擎_GitHub - cryzlasm/ThunderOpenSDK: 迅雷开放下载引擎, 收集, 使用...
  15. Memcached缓存
  16. 大规模异构图召回在美团到店推荐广告的应用
  17. 不间断:即使被刺破,新的软电子设备也不会损坏
  18. 关于第一期SWTC社区开发者大赛赛果的公告
  19. 中国机器人大赛之中型组仿真比赛程序
  20. Matlab预测人口

热门文章

  1. 物理层协议:RS-232-C、RS-449、V.35、X.21
  2. Python库:time库
  3. 怎么用python打开csv文件_使用Python从CSV文件读取数据
  4. win10连接VMWare下的Ubutun系统进行FPT文件传输
  5. laravel查询重复的数据_php – 使用Laravel Collection获取重复值
  6. java quartz job_用 Quartz 进行作业调度
  7. java声明代码是什么_java安全编码指南之:声明和初始化说明
  8. signature=01a8bb5f15835faa2985256d36b2fe94,Point of Maintenance
  9. CMake-add_executable()
  10. Vue 3 最新进展