分布式文件系统:结构与设计外文翻译资料

 2022-12-12 05:12

英语原文共 14 页,剩余内容已隐藏,支付完成后下载完整资料


分布式文件系统:结构与设计

作者: Dhruba Borthakur

目 录

1.介绍 1

2.假设和目标 1

2.1硬件故障 1

2.2流媒体数据访问 1

2.3大数据集 1

2.4简单的单一模型 1

2.5移动计算比移动数据便宜 2

2.6跨异构硬件和软件平台的可移植性 2

3.Namenode和Datanode 2

4.文件系统命名空间 3

5.数据复制 3

5.1副本位置:第一小步 4

5.2副本的选择 4

5.3安全模式 4

6.文件系统的元数据的持久化 5

7.通信协议 5

8.鲁棒性 5

8.1数据磁盘故障,心跳和重新复制 6

8.2集群经济再平衡 6

8.3数据完整性 6

8.4元数据失效 6

8.5快照 6

9.数据组织 7

9.1数据组织 7

9.2阶段状态 7

9.3流水线式复制 7

10.可访问性 7

10.1FS Shell 7

10.2 DFSAdmin 8

10.3浏览器接口 8

11.存储空间回收 8

11.1文件删除和恢复删除 8

11.2减少复制因子 9

12.引用 9

1.介绍

分布式文件系统(HDFS)是一种被设计用来运行在商业硬件上的分布式系统。它与现有的分布式文件系统有很多相似之处。但是它和其他的分布式系统的差异还是非常显著的。HDFS是高容错并且设计用来部署在低廉的硬件上。HDFS提供高吞吐量访问应用程序数据和适用于大型数据集的应用程序。HDFS放松了一些POSIX的要求,使的能以流访问文件系统数据。HDFS最初是被设计用来作为Apache Nutch web搜索引擎醒目的基础建设的。HDFS是Apache Hadoop核心项目的一部分。这个项目的访问路径是:http://hadoop.apache.org/core/.

2.假设和目标

2.1硬件故障

硬件故障是一种常态,而不是例外。一个HDFS实例可能由成百或者上千的服务器,每隔一个都会存储文件系统的部分数据。事实上,如此大量的组件意味着每个组件的失效概率是非常大的,这就意味着HDFS的部分组件是非功能的。因此错误的检测和快速,自动的修复它们是HDFS的核心架构。

2.2流媒体数据访问

运行在HDFS上的应用需要流媒体访问他们的数据集,他们不是通用的应用程序,而是通用的文件系统。HDFS被设计更多的用来做批处理而不是和用户的交互。它的重点是高吞吐量的数据访问而不是低延迟的数据访问。POSIX加强了许多针对HDFS的的应用所不需要的困难的需求,因此POSIX的语义在一些关键领域被改变来提高吞吐量。

2.3大数据集

在HDFS上运行的应用有很大的数据集。HDFS中一个典型的文件的大小从g字节到兆字节。因此HDFS支持大文件。他应该提供高聚合数据和带宽并且在一个集群中扩展到数百个节点。它应当支持数以百计的文件在一个单一的实例中。

2.4简单的单一模型

HDFS文件应用需要一个一次写入多次读取的访问模型.一个文件一旦被创建,写入,关闭后就不再修改。这一假设简化了数据一致性问题,并且提高了数据吞吐量的。Map/Reduce应用程序或者web爬虫程序完全符合这个模型。有一个计划去支持未来的appending-write 文件。

2.5移动计算比移动数据便宜

如果计算请求的程序,执行位置的靠近他所执行的数据,他会更有效.当数据集庞大时它是很有效的。这最大限度的减少网络拥塞,提高整个系统的吞吐量。这个假设是,最好经常移动计算到更接近数据的位置,而不是移动数据到应用程序中。HDFS为借口提供应用去移动到更接近数据的地方。

2.6跨异构硬件和软件平台的可移植性

HDFS被设计成更容易从一个平台移动都另一个平台。这有助于广泛采用HDFS作为首选平台的大量应用程序。

3.Namenode和Datanode

HDFS是一个主从结构,一个HDFS集群是由一个名字节点,它是一个管理文件命名空间和调节客户端访问文件的主服务器,当然还有一些数据节点,通常是一个节点一个机器,它来管理对应节点的存储。HDFS对外开放文件命名空间并允许用户数据以文件形式存储。内部机制是将一个文件分割成一个或多个块,这些块被存储在一组数据节点中。名字节点用来操作文件命名空间的文件或目录操作,如打开,关闭,重命名等等。它同时确定块与数据节点的映射。数据节点负责来自文件系统客户的读写请求。数据节点同时还要执行块的创建,删除,和来自名字节点的块复制指令。

名字节点和数据节点都是运行在普通的机器之上的软件,机器典型的都是GNU/Linux,HDFS是用java编写的,任何支持java的机器都可以运行名字节点或数据节点,利用java语言的超轻便型,很容易将HDFS部署到大范围的机器上。典型的部署是由一个专门的机器来运行名字节点软件,集群中的其他每台机器运行一个数据节点实例。体系结构不排斥在一个机器上运行多个数据节点的实例,但是实际的部署不会有这种情况。集群中只有一个名字节点极大地简单化了系统的体系结构。名字节点是仲裁者和所有HDFS元数据的仓库,用户的实际数据不经过名字节点。

4.文件系统命名空间

HDFS支持传统的继承式的文件组织结构。一个用户或一个程序可以创建目录,存储文件到很多目录之中。文件系统的名字空间层次和其他的文件系统相似。可以创建、移动文件,将文件从一个目录移动到另外一个,或重命名。HDFS还没有实现用户的配额和访问控制。HDFS还不支持硬链接和软链接。然而,HDFS结构不排斥在将来实现这些功能。名字节点维护文件系统的命名空间,任何文件命名空间的改变和或属性都被名字节点记录。应用程序可以指定文件的副本数,文件的副本数被称作文件的复制因子,这些信息由命名空间来负责存储。

5.数据复制

HDFS设计成能可靠地在集群中大量机器之间存储大量的文件,它以块序列的形式存储文件。文件中除了最后一个块,其他块都有相同的大小。属于文件的块为了故障容错而被复制。块的大小和复制数是以文件为单位进行配置的,应用可以在文件创建时或者之后修改复制因子。HDFS中的文件是一次写的,并且任何时候都只有一个写操作。名字节点负责处理所有的块复制相关的决策。它周期性地接受集群中数据节点的心跳和块报告。一个心跳的到达表示这个数据节点是正常的。一个块报告包括该数据节点上所有块的列表。

5.1副本位置:第一小步

块副本存放位置的选择严重影响HDFS的可靠性和性能。副本存放位置的优化是HDFS区分于其他分布式文件系统的的特征,这需要精心的调节和大量的经验。机架敏感的副本存放策略是为了提高数据的可靠性,可用性和网络带宽的利用率。副本存放策略的实现是这个方向上比较原始的方式。短期的实现目标是要把这个策略放在生产环境下验证,了解更多它的行为,为以后测试研究更精致的策略打好基础。HDFS运行在跨越大量机架的集群之上。两个不同机架上的节点是通过交换机实现通信的,在大多数情况下,相同机架上机器间的网络带宽优于在不同机架上的机器。在开始的时候,每一个数据节点自检它所属的机架id,然后在向名字节点注册的时候告知它的机架id。HDFS提供接口以便很容易地挂载检测机架标示的模块。一个简单但不是最优的方式就是将副本放置在不同的机架上,这就防止了机架故障时数据的丢失,并且在读数据的时候可以充分利用不同机架的带宽。这个方式均匀地将复制分散在集群中,这就简单地实现了组建故障时的负载均衡。然而这种方式增加了写的成本,因为写的时候需要跨越多个机架传输文件块。默认的HDFS block放置策略在最小化写开销和最大化数据可靠性、可用性以及总体读取带宽之间进行了一些折中。一般情况下复制因子为3,HDFS的副本放置策略是将第一个副本放在本地节点,将第二个副本放到本地机架上的另外一个节点而将第三个副本放到不同机架上的节点。这种方式减少了机架间的写流量,从而提高了写的性能。机架故障的几率远小于节点故障。这种方式并不影响数据可靠性和可用性的限制,并且它确实减少了读操作的网络聚合带宽,因为文件块仅存在两个不同的机架, 而不是三个。文件的副本不是均匀地分布在机架当中,1/3在同一个节点上,1/3副本在同一个机架上,另外1/3均匀地分布在其他机架上。这种方式提高了写的性能,并且不影响数据的可靠性和读性能。

5.2副本的选择

为了尽量减小全局的带宽消耗读延迟,HDFS尝试返回给一个读操作离它最近的副本。假如在读节点的同一个机架上就有这个副本,就直接读这个,如果HDFS集群是跨越多个数据中心,那么本地数据中心的副本优先于远程的副本。

5.3安全模式

在启动的时候,名字节点进入一个叫做安全模式的特殊状态。安全模式中不允许发生文件块的复制。名字节点接受来自数据节点的心跳和块报告。一个块报告包含数据节点所拥有的

您需要先支付 30元 才能查看全部内容!立即支付

课题毕业论文、文献综述、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。