《hdfs入门 推荐》由会员分享,可在线阅读,更多相关《hdfs入门 推荐(42页珍藏版)》请在金锄头文库上搜索。
1、HDFSThe Hadoop Distributed File System (Hadoop分布式文件系统)版权声明: 本文档中涉及到hadoop、CDH、Apache等文字和图标皆来源于网络,其所有权归 原始所有者所有。说明: 本文是基于Hadoop :The Definitive GuideOReilly Media , Inc.编写,同时参考 论坛上的最新资料,如有错误和疏漏请指正。 Hadoop是由nutch一个开放源代码(open-source)的web搜索引擎的子项目带来 的意外收获;是基于MapReduce模型实现;由Apache软件基金会主持研发,由大 量行业领先软件商共同维护
2、的平台软件。 Apache软件基金会(也就是Apache Software Foundation,简称为ASF),是 Apache基金会专门为运作一个开源软件项目的 Apache 的团体提供支持的非盈利 性组织,这个开源软件项目就是 Apache 项目。这个组织把自己作为有着相同目 标的开发者与用户的团体,而不是简单的共享在一个服务器上的一组项目的组织 团体。 Cloudera是一家行业领先的Hadoop软件和服务供应商。 Clouderas Distribution for Hadoop(CDH) 是一个基于Apache Hadoop的综合性数据 管理平台,Cloudera Enterpri
3、se 则包括一些工具、平台和支持,供应生产环境中 使用的Hadoop时使用。2011年10月 北京中电飞华 田然在介绍HDFS之前要说的为什么我们需要HDFS如何使用HDFSHDFS的概念HDFS关键运行机制目录相关背景资料Hadoop:一个分布式系统基础架构 ,由Apache基金会开发。用户可以 在不了解分布式底层细节的情况下 ,开发分布式程序。充分利用集群 的威力高速运算和存储。Distributed:分布式计算是利用互联 网上的计算机的 CPU 的共同处理能 力来解决大型计算问题的一种计算科 学。File system:文件系统是操作系统用于明确磁盘 或分区上的文件的方法和数据结构;即在
4、磁盘 上组织文件的方法。也指用于存储文件的磁盘 或分区,或文件系统种类。Hadoop的由来Hadoop这个名字不是一个缩写,它是一个虚构 的名字。该项目的创建者,Doug Cutting如此解 释Hadoop的得名:“这个名字是我孩子给一个棕 黄色的大象样子的填充玩具命名的。我的命名 标准就是简短,容易发音和拼写,没有太多的 意义,并且不会被用于别处。小孩子是这方面 的高手。Google就是由小孩命名的。Hadoop和HDFS的关系Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。对外部客户机而言,HDFS 就像一个传统的 分级
5、文件系统。可以创建、删除、移动或 重命名文件,等等。很多时候,我们就叫 它DFS(Distributed File System)。Hadoop 是一个以一种可靠、高效、可伸缩的 方式进行处理的,能够对大量数据进行分布 式处理的系统框架。Hadoop和HDFS的关系HDFS是Hadoop兼容最好的标准级文件系统, 因为Hadoop是一个综合性的文件系统抽象, 所以HDFS不是Hadoop必需的。所以可以理解为hadoop是一个框架,HDFS是 hadoop中的一个部件。在介绍HDFS之前要说的为什么我们需要HDFS如何使用HDFSHDFS的概念HDFS关键运行机制目录为什么我们需要HDFS要说
6、明需要HDFS,首先得说明一下,为什么在 计算机系统中需要文件系统。操作系统中负责管理和存储文件信息的软件机 构称为文件管理系统,简称文件系统。简单的理解为,只要有 文件管理,就得有文件 系统。文件系统由三部分组成:与文件管理有关软件 、被管理文件以及实施文件管理所需数据结构 。从系统角度来看,文件系统是对文件存储器空 间进行组织和分配,负责文件存储并对存入的 文件进行保护和检索的系统。文件管理软件文件存储结构被管理文件常见的有 Explorer、 Total Commander在每台存储设 备里有很多被 管理文件比如通用结构 ,由超级块、 节点、数据块 、目录块、间 接块组成文件系统是用于存
7、储文件的,但是我们发现 现有的文件系统忙于处理什么文件呢?为什么我们需要HDFS看起来现有的磁盘能够胜任目前的数据处理,但 对于我们来说有一个好消息和坏消息。为什么我们需要HDFS好消息是磁盘为我们存 储数据,并且数据越来 越大,磁盘在我们的生 活中变成必需品。坏消息是如今数据量巨 大,磁盘开始很纠结的 处理我们需要的海量信 息。磁盘面对的海量信息有证券交易所的每天1TB的信息 ;社交网站上2PB的图片;计算机每天产生的100GB到 10TB的机器日志,缓存文件,RFID检测器等等。1990年,一块普通磁盘存储 1370MB数据,传输速度4.4MB/S, 读取整个磁盘需要5min。2011年,
8、普及的1TB一块磁盘,其传 输速度是100MB/S,读取整个磁盘 需要100min左右。既然读取一块磁盘的所有数据需要很长时间 ,写入更是需要更长时间(写入时间一般是 读取时间的3倍)。我们需要一个巨大文件难 道得换传输速度10GB/S的磁盘(现在没有这 样的磁盘),而且即使有文件为1ZB,或者小 点10EB时,这样的磁盘也无法做到随读随取 。为什么我们需要HDFS1块磁盘传输 能力有限文件存储在很多块磁盘同时传输网络跨系统分布式当数据集的大小超过一立物理计算机的 存储能力时,就有必要对它进行分区并存储 到若干台单独的计算机上。为什么我们需要HDFS数据集数据块超级块目录块间接块经典文件存储结
9、构分布化概念图从概念图上看,分布化的文件系统会因为分 布后的结构不完整,导致系统复杂度加大, 并且引入的网络编程,同样导致分布式文件 系统更加复杂。为什么我们需要HDFS完整文件系统文件分布式后文件种类很多到底分到哪好?文件分布处理过程丢失了怎么办?文件分布后调用会效率很低吗?HDFS以流处理访问模式来存储文件的。为什么我们需要HDFS对于以上的问题我们来HDFS是如何迎刃而解的一次写入,多次读取。数据源通常由源生成或 从数据源直接复制而来,接着长时间在此数据 集上进行各类分析,大数据不需要搬来搬去。流处理源文件目的文件源数据写入分布式文件 系统本地化 映像读取读取分析分析分析数据中间数据DF
10、S是用流处理方式处理文件,每个文件在系统 里都能找到它的本地化映像,所以对于用户来说 ,别管文件是什么格式的,也不用在意被分到哪 里,只管从DFS里取出就可以了。为什么我们需要HDFS一般来说,文件处理过程中无法保证文件安 全顺利到达,传统文件系统是使用本地校验 方式保证数据完整,文件被散后,难道需要 特意安排每个分片文件的校验码?完整文件经由DFS存储后分片文件分片文件分片文件分片文件HDFS的回答是NO!分片数量和大小是不确定的,海量的数据本 来就需要海量的校验过程,分片后加入每个 分片的跟踪校验完全是在数满天恒星的同时 数了他们的行星。为什么我们需要HDFSHDFS的解决方案是分片冗余,
11、本地校验。完整文件HDFS处理后分片文件分片文件分片文件分片文件直观上看,我们是给文件系统添堵,文件越 来越多,实际上,DFS更加喜欢这样的架构。为什么我们需要HDFS完整文件校验经由分片存储后每个分片文件需要分片服务器校验数据冗余式存储,直接将多份的分片文件交 给分片后的存储服务器去校验。校验工作冗余后的分片文件还有个额外功能,只要冗 余的分片文件中有一份是完整的,经过多次 协同调整后,其他分片文件也将完整。为什么我们需要HDFS协同校验的后完整 分片文件错误分片文件完整分片文件协 同 校 验经过协调校验,无论是传输错误,I/O错误,还是个 别服务器宕机,整个系统里的文件是完整的虽然HDFS
12、很通用而且安全分布后的文件系统有个无法回避的问题,因 为文件不在一个磁盘导致读取访问操作的延 时,这个是HDFS现在遇到的主要问题。为什么我们需要HDFS现阶段,HDFS的配置是按照高数据吞吐量优 化的,可能会以高时间延时为代价。但万幸 的是,HDFS是具有很高弹性,可以针对具体 应用再优化。HDFS 调优是使用时最应该注意的。在介绍HDFS之前要说的为什么我们需要HDFS如何使用HDFSHDFS的概念HDFS关键运行机制目录HDFS的概念虚拟磁盘元化的数据本地化磁盘映像元化的数据本地化磁盘映像元化的数据本地化磁盘映像通过上一节的得到的信息,我们了解了HDFS就 是下面这个抽象图的具体实现。解
13、释一下,何为元数据。HDFS的概念元数据是用于描述要素、数据集或数据集系 列的内容、覆盖范围、质量、管理方式、数 据的所有者、数据的提供方式等有关的信息 。更简单 的说,是关于数据的数据。HDFS就是将巨大的数据变成大量数据的数据。HDFS的概念HDFS磁盘块磁盘块整个海量数据元化数据块磁盘块磁盘块标识后磁盘存储文件时,是按照数据块 来存储的,也就是说,数据块是 磁盘的读/写最小单位。数据块 也称磁盘块。HDFS的概念构建于单个磁盘上的文件系统是通过磁盘块 来管理文件系统,一般来说,文件系统块的 大小是磁盘块的整数倍。特别的,单个磁盘文件系统,小于 磁盘块的文件会占用整个磁盘块。 磁盘块的大小
14、一般是512字节。在HDFS中,也有块(block)这个概念,默认 为64MB,每个块作为独立的存储单元。HDFS的概念与其他文件系统不一样,HDFS中每个小于块大 小的文件不会占据整个块的空间。具体原因在后 面的介绍。下面介绍为什么是64MB一个文件块HDFS64MB64MB64MB64MB为什么HDFS中的小文件不会占用整个块,而 且需要64MB或者更大的一个块?HDFS的概念在文件系统中,系统存储文件时,需要定位 该数据在磁盘中的位置,再进行传输处理。数据开始定位到0x00f0000开始定位到0x00f0820传输数据块定位在磁盘的位置是需要时间的,同样文件 传输也是需要时间。T(存储时
15、间)=T(定位时间)+T(传输时间)如果每个要传输的块设置得足够大,那么从 磁盘传输数据的时间可以明显大于定位这个 块开始位置的时间。HDFS的概念T(存储时间)=T(定位时间) )-+T(传输时间)T(存储时间)=T(传输时间)近似等于 :数据开始定位到0x00f0000每个数据块需要时间10ms 传100文件得寻址100次数据 传输具体 应用数据块传输速率 100MB/s每块100MB的话,需要100s存储1个10000MB的文件 我们需要时间是10msX100+1000msX100=101s。单个磁盘下此例子是理论数据 实际比这数据稍大我们来传输一个 10000MB的文件数据开始定位到0
16、x00f0000数据开始定位到0x00f0000数据开始定位到0x00f000010台数据节点HDFS的概念数据块传输具体 应用10台数据节点每块100MB的话,每个节点需要10s传输速率 100MB/s每台需要时间10ms每个文件寻址仍然是分别 寻址需要时间和单台一样 100个文件寻址需要10次 加上调度需要的10ms传输10000MB的文件所花时间10台数据节点10msX10+10ms+10s=10.11s此例子是理论 数据 实际比这数据 稍长这样的设定使存储一个 文件主要时间就花在传 输过程中,块大小决定 传输由多个快组成文件 的存储速率,这也是 HSDF的核心技术。总结一下当然不是设置每个块越大越好。 HDFS提供给MapReduce数据服务 ,而一般来说MapReduce的Map 任务通常一次处理一个块中的数 据,如果任务数太少(少于集群 中节点的数量),就没有发挥多 节点的优势,甚至作业的运行速 度就会和单节点一样。HDFS的概念分布式的文件抽象能够带来的优势是: 1、一个文件可以大于每个磁盘 2、文件不用全在一个磁盘上。 3、简