Hadoop分布式文件系统

上传人:ji****72 文档编号:37542774 上传时间:2018-04-18 格式:DOC 页数:6 大小:58.50KB
返回 下载 相关 举报
Hadoop分布式文件系统_第1页
第1页 / 共6页
Hadoop分布式文件系统_第2页
第2页 / 共6页
Hadoop分布式文件系统_第3页
第3页 / 共6页
Hadoop分布式文件系统_第4页
第4页 / 共6页
Hadoop分布式文件系统_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《Hadoop分布式文件系统》由会员分享,可在线阅读,更多相关《Hadoop分布式文件系统(6页珍藏版)》请在金锄头文库上搜索。

1、翻译原文地址翻译原文地址http:/ Hadoop 分布式文件系统(一)分布式文件系统(一) 编辑 | 删除 | 权限设置 | 更多 更多 设置置顶 推荐日志 转为私密日志 开心延年 发表于 2009 年 12 月 06 日 01:40 阅读(12) 评论(0) 分类: 搜索与存储 权限: 公开 当你的数据突破了单台物理极其的存储能力后,将数据存储在一些列的其他机器上是必须 的。通过网络来组织的跨越物理机器的文件系统被称为分布式文件系统。首先他们是基于 网络的,通过分布式文件系统处理来自网络所有的并发处理,就像实用本地文件系统一样。 举例来说,其中最大的挑战就是对数据的容灾处理。 Haddop

2、 的分布式文件系统叫做 HDFS(在就的文档中,曾经叫过 DFS) ,HDFS 是 HADOOP 的核心,也是本章讲解的主要焦点。Hadoop 的分布式文件按照通用文件系统做 了抽象,跟我们平时实用的其他存储系统(比如说本地文件系统和 Amazon0 S3).HDFSHDFS 的设计的设计HDFS 用于设计成基于流数据访问模式,超大文件,运行在由普通硬件环境组成的集群上 的文件系统。让我们进一步解释这些特性。超大的文件超大的文件 这里所说的超大文件至的是上百 M 和 G,或上百 T 大小的数据。如今的 hadoop 已经 存储了 PB 级的数据了。基于流模式的数据访问基于流模式的数据访问 HD

3、FS 的构建通常是围绕着这种思想,大多数的数据处理通常是写入一次,但是要从 源生成或拷贝,这样就会被被读很多次(write once ,read many times),随着时间的推移进行 着各种分析。每次分析都有可能用到这些数据中相当大的比例,所以读取整个数据文件通 常要比延迟读取第一条记录更重要。普通的硬件环境普通的硬件环境 Hadoop 并不需要昂贵,高性能的硬件环境去执行。他被设计成由一些普通的硬件环境 组成的集群来降低节点的失效影响。HDFS 用于设计当硬件中断对用户的影响最小。当然这里也要列出一些值得注意的那些 HDFS 并不适合或目前来说工作并不是很好的应用 场景,也许将来我们会

4、改变。低延迟的数据访问低延迟的数据访问 如果应用需要低延迟(微妙级)的数据访问,HDFS 对这种应用支持的并不是很好。 HDFS 还是致力于提供高吞吐能力的数据,这在某些方面是以数据的延迟为代价的。HBase 目前是一个比较好的解决方案来应对低延迟的数据访问。 大量的小文件大量的小文件 目前保存文件系统数据信息的名字节点信息是存储在内存中的。所以内存的使用量是 跟随着文件系统的名字节点 namenode 的数量上升而上升。假如每个文件,每个目录,和 块将要实用 150 字节,那么如果你有 1 百万的文件,每个占用一个数据块,你就至少要实 用 300M 的内存,百万级的也许是可行的,但是十亿级的

5、在当前硬件环境下是不可行的。 多重的写文件或修改文件多重的写文件或修改文件 HDFS 中的文件,通常之允许一个单独的写,每次写总是追加到文件的末尾。多个写 是不会被支持的或者通过设置偏移量来修改文件(也许将来会支持,但实现的优先级可能 会放低)HDFSHDFS 的概念的概念Blocks(块)(块)一块磁盘会有一个块的大小,表示他能够读或写的最小的数据,文件系统都是一块单独的 磁盘上在块的基础上进行处理的,数据处理的但与都是基于磁盘处理块的整数倍。磁盘的 通常是 512 字节,典型的文件系统的块通常都是几 KB,这些都取决于文件系统的普通用 户所操作的文件大小。通常会有 df 和 fsck 这些

6、命令来统计文件系统的块使用的情况。HDFS 同样也有块的概念,但是相比之下这个块要大的很多-默认是 64M,跟普通磁盘的 文件系统一样,HDFS 中的文件也是由这些独立的块单元来组成的。与普通文件系统不同 的是在底层存储中 HDFS 中的文件,也许根本占用不到一个整块的大小。为什么为什么 HDFS 中的块这么大?中的块这么大? HDFS 中的块比文件系统中的块相比要大很多,这样做的原因是降低寻址的代价,如果一 个块足够大,更多的时间就会用在数据传输上,而不是在寻找块的地址上。这样大文件的 操作就能提高多个块的的传输比率。 一个计算显示,块的寻址时间通常是在 10MS 左右,数据传输的比率是 1

7、00M/s,这样的话我 们节省了 1%的寻址时间,我们选中块的大小在 100MB 左右,默认我们实用 64M,但也有 很多 HDFS 应用实用 128MB,这取决于磁盘驱动器传输速度的增长。 也许没必要把话题扯得怎么远,但是 MapRecude 中的 Map任务通常是一次只操作一个BLOCK 所以如果你有很少的 tasks(集群中的机器不多),你的 jobs 将会比其他的运行的慢点。分布式文件系统通过这种块的抽象带来了很多好处。首先最大的益处就是通过网络一个文件可以比任何其他的单独的文件系统都要大,同样一个块也不是必须被存储在同样一块硬盘上,以便更能充分利用集群的优势。实际上,在 HDFS 集

8、群中存储一个独立的文件,他的 BLOCK 也许会在集群中的每个磁盘中都存在。第二,通过一系列的单元块抽象,一个文件被存储在子系统中,易用性是所有系统努力的目标,但是对于一个分布式文件系统来说数据的管理显得也很重要。存储子系统按照块来设计,简单的存储管理(通过固定的块管理,容易计算出在给定的磁盘存储了多少块) ,并且消除数据概念(块仅仅是一个被存储的原始数据-文件的权限信息等属性数据是不是必须存储在块里的,另外一个子系统可能会存储这些信息)在深入一些,块是可以被重复存储的,用于对数据的容错保障很有必要,每个重复的数据块被不同的物理机器分开存储,如果其中一块数据变得不可用,那么还可以从另外一个地点

9、传输给客户端。与其他的磁盘文件系统类似,HDFS 也提供 fsck 命令,用于列出组成这个文件的所有的块% hadoop fsck files -blocks待续待续.第三章第三章 HadoopHadoop 分布式文件系统分布式文件系统 ( (二二) ) 编辑 | 删除 | 权限设置 | 更多 更多 设置置顶 推荐日志 转为私密日志 开心延年 发表于 2009 年 12 月 10 日 00:16 阅读(20) 评论(0) 分类: 搜索与存储 权限: 公开 名称节点与数据节点名称节点与数据节点(Namenodes and Datanodes)HDFS 集群的主从操作模式下有两种类型的节点操作:名

10、称节点(master 主)和数据节点 (worker 工作节点),名称节点管理着文件系统的名称空间。他包含文件系统中的所有目录 和文件的树形结构和数据信息.这些信息持久化的存储在本地磁盘的两个文件中:名称镜像 以及修改记录。名称节点同样也知道本地文件的所有数据块(blocks),当系统开始启动后,这 些信息就会重建,他们并不存储块的位置。当客户端访问文件系统是通过与名字节点和数据节点进行交互来完成的一种行为。客户端 提供一种类 POSIX 文件系统接口,所有用户的代码并不需要知道任何关于名称节点和数据 节点的函数信息。数据节点是文件系统的工作平台(马匹?) ,他们存储并且检索块(blocks)

11、,当他们被客户 端或名称节点被告知,并且他们名称节点所包含的块的报告响应。如果没有名称节点,这个文件系统同样无法使用。实际上,如果机器的名字节点崩溃,而 且无法重建的话,所有在文件系统中的文件将会丢失。所以让名称节点更加弹性来应对失 败是非常重要的,并且 hadoop 提供了两种机制来应对这些。第一种机制是备份文件,将这些变成文件系统的持久化数据。Hadoop 可以配置这些,以便 名字节点能够被持久化到多种文件系统里面。这些写操作是同步和自动的。通常的配置是 将其写入到本地的文件磁盘或通过 NFS 挂载的远程节点。另外一种是运行一个二级名称节点,他实际上并不扮演这一个名称节点的角色。他的主要

12、作用是通过日志定期的合并,作为名称节点的镜像也防止修改日志的文件变得太大。二级 名称节点通常运行在一台单独分离的物理机器上,因为在进行合并的过程中他需要消耗大 量的 CPU 资源和大量的内存。他保存了名称节点的镜像,当名称节点出问题后可以用他来 进行恢复。然而二级名称节点照比主名称节点来说是有延迟的,但是几乎能保障主要数据 的不丢失。通常的做法将二级节点的名称数据复制过去,将其作为新的主节点执行。 更多的信息 那就看后面 “文件系统的镜像和编辑日志” 。命令行接口命令行接口从下面开始我们将要介绍写 HTFS 的命令行接口,HDFS 有很多形式的接口,但是命令行 模式是最简单的,也是很多开发者最

13、为熟悉的。我们先在一台机器上去运行 HDFS,所以先将你的 HADOOP 设置成伪分布模式。然后你会 看到怎样在一个拓展和容错良好的集群上去运行。在伪分布模式有两个属性需要进步一部解释。第一个是 fs.default.name,通常 hadoop 文件系 统的默认值会将其设置成 hdfs:/localhost/,文件系统以 URI 的方式指定,并且现在我们可 以实用 hdfs URI 去配置 hadoop,并且使用默认的 HDFS。HDFS 守护进程将会实用这些属 性来配置 HOST 和 HDFS 名称节点。那现在我们在 localhost 模式执行他,默认情况下 HDFS 的端口是 8020

14、,并且 HDFS 客户端将会在名称节点上使用这些属性以便于去连接他 们。我们将要设置第二个属性, dfs.replication,的值为 1,以便 HDFS 不会将文件系统的块按照默 认值复制成 3 分,因为在伪分布模式下一个单独的数据节点是不能被复制成 3 分的,这样 将会产生警告,通过这个设置我们解决了这个问题。基本的文件系统操作基本的文件系统操作当文件系统可以使用后,我们几乎做所有的通用文件系统可以做的操作,比如说读文件, 创建文件夹,移动文件,删除文件,或者列目录,你可以通过键入 hadoop fs help 来获取 几乎每个命令的帮助描述。从本地文件系统像 HDFS 去复制文件 %

15、hadoop fs -copyFromLocal input/docs/quangle.txt hdfs:/localhost/user/tom/quangle.txt 这条命令调用 hadoop 文件系统的 shell 命令 fs ,他支持一些列的子命令,在这个例子中 我们使用了 copyFromLocal. 将本地的文件 quangle.txt 复制到在 localhost 运行的远程 HDFS 文件系统上。事实上我们是可以省略 URI 中的协议和 HOST 来用在 core-site 中指定 的默认值 hdfs:/localhost % hadoop fs -copyFromLocal

16、input/docs/quangle.txt /user/tom/quangle.txt 我们同样也可以使用相对路径来复制到我们 HDFS 中的 HOME 目录,在这个例子中是 /user/tom: % hadoop fs -copyFromLocal input/docs/quangle.txt quangle.txt 让我们在将他从远程复制到本地,看他们是否相同 % hadoop fs -copyToLocal quangle.txt quangle.copy.txt % md5 input/docs/quangle.txt quangle.copy.txt MD5 (input/docs/quangle.txt) = a16f231da6b05e2ba7a339320e7dacd9 MD5 (quangle.copy.txt) = a16f231da6b05e2ba7a339320e7dacd9Md5 值是

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号