Hadoop分布式文件系统架构和设计要点翻译.docx

上传人:b****2 文档编号:17098488 上传时间:2023-07-22 格式:DOCX 页数:21 大小:28.12KB
下载 相关 举报
Hadoop分布式文件系统架构和设计要点翻译.docx_第1页
第1页 / 共21页
Hadoop分布式文件系统架构和设计要点翻译.docx_第2页
第2页 / 共21页
Hadoop分布式文件系统架构和设计要点翻译.docx_第3页
第3页 / 共21页
Hadoop分布式文件系统架构和设计要点翻译.docx_第4页
第4页 / 共21页
Hadoop分布式文件系统架构和设计要点翻译.docx_第5页
第5页 / 共21页
Hadoop分布式文件系统架构和设计要点翻译.docx_第6页
第6页 / 共21页
Hadoop分布式文件系统架构和设计要点翻译.docx_第7页
第7页 / 共21页
Hadoop分布式文件系统架构和设计要点翻译.docx_第8页
第8页 / 共21页
Hadoop分布式文件系统架构和设计要点翻译.docx_第9页
第9页 / 共21页
Hadoop分布式文件系统架构和设计要点翻译.docx_第10页
第10页 / 共21页
Hadoop分布式文件系统架构和设计要点翻译.docx_第11页
第11页 / 共21页
Hadoop分布式文件系统架构和设计要点翻译.docx_第12页
第12页 / 共21页
Hadoop分布式文件系统架构和设计要点翻译.docx_第13页
第13页 / 共21页
Hadoop分布式文件系统架构和设计要点翻译.docx_第14页
第14页 / 共21页
Hadoop分布式文件系统架构和设计要点翻译.docx_第15页
第15页 / 共21页
Hadoop分布式文件系统架构和设计要点翻译.docx_第16页
第16页 / 共21页
Hadoop分布式文件系统架构和设计要点翻译.docx_第17页
第17页 / 共21页
Hadoop分布式文件系统架构和设计要点翻译.docx_第18页
第18页 / 共21页
Hadoop分布式文件系统架构和设计要点翻译.docx_第19页
第19页 / 共21页
Hadoop分布式文件系统架构和设计要点翻译.docx_第20页
第20页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

Hadoop分布式文件系统架构和设计要点翻译.docx

《Hadoop分布式文件系统架构和设计要点翻译.docx》由会员分享,可在线阅读,更多相关《Hadoop分布式文件系统架构和设计要点翻译.docx(21页珍藏版)》请在冰点文库上搜索。

Hadoop分布式文件系统架构和设计要点翻译.docx

Hadoop分布式文件系统架构和设计要点翻译

Hadoop分布式文件系统:

架构和设计要点(翻译

一、前提和设计目标

1、硬件错误是常态,而非异常情况,HDFS可能是有成

百上千的server组成,任何一个组件都有可能一直失

效,因此错误检测和快速、自动的恢复是HDFS的核心

架构目标。

2、跑在HDFS上的应用与一般的应用不同,它们主要

是以流式读为主,做批量处理;比之关注数据访问的

低延迟问题,更关键的在于数据访问的高吞吐量。

3、HDFS以支持大数据集合为目标,一个存储在上面的

典型文件大小一般都在千兆至T字节,一个单一HDFS

实例应该能支撑数以千万计的文件。

4、HDFS应用对文件要求的是write-one-read-many

访问模型。

一个文件经过创建、写,关闭之后就不需

要改变。

这一假设简化了数据一致性问题,使高吞吐

量的数据访问成为可能。

典型的如MapReduce框架,

或者一个webcrawler应用都很适合这个模型。

5、移动计算的代价比之移动数据的代价低。

一个应用

请求的计算,离它操作的数据越近就越高效,这在数

据达到海量级别的时候更是如此。

将计算移动到数据

附近,比之将数据移动到应用所在显然更好,HDFS提供给应用这样的接口。

6、在异构的软硬件平台间的可移植性。

二、Namenode和Datanode

HDFS采用master/slave架构。

一个HDFS集群是有一个Namenode和一定数目的Datanode组成。

Namenode是一个中心服务器,负责管理文件系统的namespace

和客户端对文件的访问。

Datanode在集群中一般是一个节点一个,负责管理节点上它们附带的存储。

在内部,一个文件其实分成一个或多个block,这些block存储在Datanode集合里。

Namenode执行文件系统的namespace操作,例如打开、关闭、重命名文件和目录,同时决定block到具体Datanode节点的映射。

Datanode在Namenode的指挥下进行block的创建、删除和复制。

Namenode和Datanode都是设计成可以跑在普通的廉价的运行linux的机器上。

HDFS采用java语言开发,因此可以部署在很大范围的机器上。

一个典型的部署场景是一台机器跑一个单独的Namenode节点,集群中的其他机器各跑一个Datanode实例。

这个架构并不排除一台机器上跑多个Datanode,不过这比较少见。

单一节点的Namenode大大简化了系统的架构。

Namenode负责保管和管理所有的HDFS元数据,因而用户数据就不需要通过Namenode(也就是说文件数据的读写是直接在Datanode上。

三、文件系统的namespace

HDFS支持传统的层次型文件组织,与大多数其他文件系统类似,用户可以创建目录,并在其间创建、删除、移动和重命名文件。

HDFS不支持userquotas和访问权限,也不支持链接(link,不过当前的架构并不排除实现这些特性。

真的不掉线吗?

?

、?

?

?

?

?

?

?

?

?

?

?

?

Namenode维护文件系统的namespace,任何对文件系统namespace和文件属性的修改都将被Namenode记录下来。

应用可以设臵HDFS保存的文件的副本数目,文件副本的数目称为文件的replication因子,这个信息也是由Namenode保存。

四、数据复制

HDFS被设计成在一个大集群中可以跨机器地可靠

地存储海量的文件。

它将每个文件存储成block序列,除了最后一个block,所有的block都是同样的大小。

文件的所有block为了容错都会被复制。

每个文件的block大小和replication因子都是可配臵的。

Replication因子可以在文件创建的时候配臵,以后也可以改变。

HDFS中的文件是write-one,并且严格要求在任何时候只有一个writer。

Namenode全权管理block的复制,它周期性地从集群中的每个Datanode接收心跳包和一个Blockreport。

心跳包的接收表示该Datanode节点正常工作,而Blockreport包括了该Datanode上所有的block组成的列表。

1、副本的存放,副本的存放是HDFS可靠性和性能的关键。

HDFS采用一种称为rack-aware的策略来改进数据的可靠性、有效性和网络带宽的利用。

这个策略实现的短期目标是验证在生产环境下的表现,观察它的行为,构建测试和研究的基础,以便实现更先进的策略。

庞大的HDFS实例一般运行在多个机架的计算机形成的集群上,不同机架间的两台机器的通讯需要通过交换机,显然通常情况下,同一个机架内的两个节点间的带宽会比不同机架间的两台机器的带宽大。

通过一个称为RackAwareness的过程,Namenode决定了每个Datanode所属的rackid。

一个简单但没有优化的策略就是将副本存放在单独的机架上。

这样可以防止整个机架(非副本存放失效的情况,并且允许读数据的时候可以从多个机架读取。

这个简单策略设臵可以将副本分布在集群中,有利于组件失败情况下的负载均衡。

但是,这个简单策略加大了写的代价,因为一个写操作需要传输block到多个机架。

在大多数情况下,replication因子是3,HDFS的存放策略是将一个副本存放在本地机架上的节点,一个副本放在同一机架上的另一个节点,最后一个副本放在不同机架上的一个节点。

机架的错误远远比节点的错误少,这个策略不会影响到数据的可靠性和有效性。

三分之一的副本在一个节点上,三分之二在一个机架上,其他保存在剩下的机架中,这一策略改进了写的性能。

2、副本的选择,为了降低整体的带宽消耗和读延时,HDFS会尽量让reader读最近的副本。

如果在reader的同一个机架上有一个副本,那么就读该副本。

如果一个HDFS集群跨越多个数据中心,那么reader也将首先尝试读本地数据中心的副本。

3、SafeMode

Namenode启动后会进入一个称为SafeMode的特殊状态,处在这个状态的Namenode是不会进行数据块的复制的。

Namenode从所有的Datanode接收心跳包和Blockreport。

Blockreport包括了某个Datanode所有的数据块列表。

每个block都有指定的最小数目的副本。

当Namenode检测确认某个Datanode的数据块副本的最小数目,那么该Datanode就会被认为是安全的;如果一定百分比(这真的不掉线吗?

?

、?

?

?

?

?

?

?

?

?

?

?

?

个参数可配臵的数据块检测确认是安全的,那么Namenode将退出SafeMode状态,接下来它会确定还有哪些数据块的副本没有达到指定数目,并将这些block复制到其他Datanode。

五、文件系统元数据的持久化

Namenode存储HDFS的元数据。

对于任何对文件元数据产生修改的操作,Namenode都使用一个称为Editlog的事务日志记录下来。

例如,在HDFS中创建一个文件,Namenode就会在Editlog中插入一条记录

来表示;同样,修改文件的replication因子也将往Editlog插入一条记录。

Namenode在本地OS的文件系统中存储这个Editlog。

整个文件系统的namespace,包括block到文件的映射、文件的属性,都存储在称为FsImage的文件中,这个文件也是放在Namenode所在系统的文件系统上。

Namenode在内存中保存着整个文件系统namespace和文件Blockmap的映像。

这个关键的元数据设计得很紧凑,因而一个带有4G内存的Namenode足够支撑海量的文件和目录。

当Namenode启动时,它从硬盘中读取Editlog和FsImage,将所有Editlog中的事务作用(apply在内存中的FsImage,并将这个新版本的FsImage从内存中flush到硬盘上,然后再truncate这个旧的Editlog,因为这个旧的Editlog的事务都已经作用在FsImage上了。

这个过程称为checkpoint。

在当前实现中,checkpoint只发生在Namenode启动时,在不久的将来我们将实现支持周期性的checkpoint。

Datanode并不知道关于文件的任何东西,除了将文件中的数据保存在本地的文件系统上。

它把每个HDFS数据块存储在本地文件系统上隔离的文件中。

Datanode并不在同一个目录创建所有的文件,相反,它用启发式地方法来确定每个目录的最佳文件数目,

并且在适当的时候创建子目录。

在同一个目录创建所有的文件不是最优的选择,因为本地文件系统可能无法高效地在单一目录中支持大量的文件。

当一个Datanode启动时,它扫描本地文件系统,对这些本地文件产生相应的一个所有HDFS数据块的列表,然后发送报告到Namenode,这个报告就是Blockreport。

六、通讯协议

所有的HDFS通讯协议都是构建在TCP/IP协议上。

客户端通过一个可配臵的端口连接到Namenode,通过ClientProtocol与Namenode交互。

而Datanode是使用DatanodeProtocol与Namenode交互。

从ClientProtocol和Datanodeprotocol抽象出一个远程调用(RPC,在设计上,Namenode不会主动发起RPC,而是是响应来自客户端和Datanode的RPC请求。

七、健壮性

HDFS的主要目标就是实现在失败情况下的数据存储可靠性。

常见的三种失败:

Namenodefailures,Datanodefailures和网络分割(networkpartitions。

1、硬盘数据错误、心跳检测和重新复制

每个Datanode节点都向Namenode周期性地发送心跳包。

网络切割可能导致一部分Datanode跟Namenode失去联系。

Namenode通过心跳包的缺失检测到这一情况,并将这些Datanode标记为dead,不会将新的IO请求发给它们。

寄存真的不掉线吗?

?

、?

?

?

?

?

?

?

?

?

?

?

?

在deadDatanode上的任何数据将不再有效。

Datanode的死亡可能引起一些block的副本数目低于指定值,Namenode不断地跟踪需要复制的block,在任何需要的情况下启动复制。

在下列情况可能需要重新复制:

某个Datanode节点失效,某个副本遭到损坏,Datanode上的硬盘错误,或者文件的replication因子增大。

2、集群均衡

HDFS支持数据的均衡计划,如果某个Datanode节点上的空闲空间低于特定的临界点,那么就会启动一个计划自动地将数据从一个Datanode搬移到空闲的Datanode。

当对某个文件的请求突然增加,那么也可能启动一个计划创建该文件新的副本,并分布到集群中以满足应用的要求。

这些均衡计划目前还没有实现。

3、数据完整性

从某个Datanode获取的数据块有可能是损坏的,这个损坏可能是由于Datanode的存储设备错误、网络错误或者软件bug造成的。

HDFS客户端软件实现了HDFS文件内容的校验和。

当某个客户端创建一个新的HDFS文件,会计算这个文件每个block的校验和,并作为一个单独的隐藏文件保存这些校验和在同一个HDFSnamespace下。

当客户端检索文件内容,它会确认从Datanode获取的数据跟相应的校验和文件中的校验和是否匹配,如果不匹配,客户端可以选择从其他Datanode获取该block的副本。

4、元数据磁盘错误

FsImage和Editlog是HDFS的核心数据结构。

这些文件如果损坏了,整个HDFS实例都将失效。

因而,Namenode可以配臵成支持维护多个FsImage和

Editlog的拷贝。

任何对FsImage或者Editlog的修改,都将同步到它们的副本上。

这个同步操作可能会降低Namenode每秒能支持处理的namespace事务。

这个代价是可以接受的,因为HDFS是数据密集的,而非元数据密集。

当Namenode重启的时候,它总是选取最近的

一致的FsImage和Editlog使用。

Namenode在HDFS是单点存在,如果Namenode所在的机器错误,手工的干预是必须的。

目前,在另一台机器上重启因故障而停止服务的Namenode这个功能还没实现。

5、快照

快照支持某个时间的数据拷贝,当HDFS数据损坏的时候,可以恢复到过去一个已知正确的时间点。

HDFS目前还不支持快照功能。

八、数据组织

1、数据块

兼容HDFS的应用都是处理大数据集合的。

这些应用都是写数据一次,读却是一次到多次,并且读的速度要满足流式读。

HDFS支持文件的write-

once-read-many语义。

一个典型的block大小是64MB,因而,文件总是按照64M切分成chunk,每个chunk存储于不同的Datanode

2、步骤

某个客户端创建文件的请求其实并没有立即发给Namenode,事实上,HDFS客户端会将文件数据缓存到

本地的一个临时文件。

应用的写被透明地重定向到这个临时文件。

当这个临时文件累积的数据超过一个block的大小(默认64M,真的不掉线吗?

?

、?

?

?

?

?

?

?

?

?

?

?

?

客户端才会联系Namenode。

Namenode将文件名插入文件系统的层次结构中,并真的不掉线吗?

?

、?

?

?

?

?

?

?

?

?

?

?

?

且分配一个数据块给它,然后返回Datanode的标识符和目标数据块给客户端。

客户端将本地临时文件flush到指定的Datanode上。

当文件关闭时,在临时文件中剩余的没有flush的数据也会传输到指定的Datanode,然后客户端告诉Namenode文件已经关闭。

此时Namenode才将文件创建操作提交到持久存储。

如果Namenode在文件关闭前挂了,该文件将丢失。

上述方法是对通过对HDFS上运行的目标应用认真考虑的结果。

如果不采用客户端缓存,由于网络速度和网络堵塞会对吞估量造成比较大的影响。

3、流水线复制

当某个客户端向HDFS文件写数据的时候,一开始是写入本地临时文件,假设该文件的replication因子设臵为3,那么客户端会从Namenode获取一张Datanode列表来存放副本。

然后客户端开始向第一个Datanode传输数据,第一个Datanode一小部分一小部分(4kb地接收数据,将每个部分写入本地仓库,并且同时传输该部分到第二个Datanode节点。

第二个Datanode也是这样,边收边传,一小部分一小部分地收,存储在本地仓库,同时传给第三个Datanode,第三个Datanode就仅仅是接收并存储了。

这就是流水线式的复制。

九、可访问性

HDFS给应用提供了多种访问方式,可以通过DFSShell通过命令行与HDFS数据进行交互,可以通过javaAPI调用,也可以通过C语言的封装API访问,并且提供了浏览器访问的方式。

正在开发通过WebDav协议访问的方式。

具体使用参考文档。

十、空间的回收

1、文件的删除和恢复

用户或者应用删除某个文件,这个文件并没有立刻从HDFS中删除。

相反,HDFS将这个文件重命名,并

转移到/trash目录。

当文件还在/trash目录时,该文件可以被迅速地恢复。

文件在/trash中保存的时间是可配臵的,当超过这个时间,Namenode就会将该文件从namespace中删除。

文件的删除,也将释放关联该文件的数据块。

注意到,在文件被用户删除和HDFS空闲空间的增加之间会有一个等待时间延迟。

当被删除的文件还保留在/trash目录中的时候,如果用户想恢复这个文件,可以检索浏览/trash目录并检索该文件。

/trash目录仅仅保存被删除文件的最近一次拷贝。

/trash目录与其他文件目录没有什么不同,除了一点:

HDFS在该目录上应用了一个特殊的策略来自动删除文件,目前的默认策略是删除保留超过6小时的文件,这个策略以后会定义成可配臵的接口。

2、Replication因子的减小

当某个文件的replication因子减小,Namenode会选择要删除的过剩的副本。

下次心跳检测就将该信息传递给Datanode,Datanode就会移除相应的block并释放空间,同样,在调用setReplication方法和集群中的空闲空间增加之间会有一个时间延迟。

参考资料:

HDFSJavaAPI:

http:

//hadoop.apache.org/core/docs/current/api/

HDFSsourcecode:

http:

//hadoop.apache.org/core/version_control.html

真的不掉线吗?

?

、?

?

?

?

?

?

?

?

?

?

?

?

八年级上册词组

M1-M3

Module1

1、weleback欢迎回来

2、writeitdown写下来

3、inclass在课堂上

4、nextto紧邻着……

5、whatelse?

还有什么

6、listentotheradio听收音机

7、eachother彼此,互相

8、helpsb.withsth.帮助某人做某事

9、helpsb.(todosth.帮助某人做某事

10、askfor寻求

11、thenumberof……的数量

12、takeadeepbreath深呼吸

13、makeyoushy使你害羞

14、allthetime一直

15、Bestwishes.良好的祝愿。

16、begoodat在……方面擅长

17、makealist列个清单

18、themeaningof……的意思

19.advisesb.todosth.建议某人做某事

20、thebestwaytodosth.

做……的最好方法

21、enjoyoneself玩得愉快

22、showsb.around带领某人参观

23、makefriends结交朋友

24、thinkabout考虑

25、thinkof想出

26、Britishaccents英国口音

27、trytodosth.尽力做……

28、trynottodosth.尽量不去做某事

trydoingsth尝试着做某事

29、makemistakes犯错误

30、givesbsomeadviceonsth

给某人一些建议

31、It’sagoodideatodosth.

做某事是个好的主意

32、Ho真的不掉线吗?

?

、?

?

?

?

?

?

?

?

?

?

?

?

waboutdoingsth?

做某事怎么样?

33、Sbshoulddosth

谋人应该做某事。

34、Writeemailtoeachother:

相互写电子邮件

35、meetsb:

接某人,和某人会面

36、sendsbemailmessages

给某人寄电子邮件

37、send…to发送…给

38、LanguageDoctor语言博士

39、improveEnglish提高英语

40、basicquestions主要问题

41、realEnglish地道的英语

42、takealongtime花费长时间

43、guessthemeaningofthenewwords猜生词含义

44、aforeignteacher一个外国教师

45、startaconversation开始对话

46、beshy害羞

47、placetheminyourbedroom放臵它们在你卧室

48、counttheEnglishwords

数英语单词

49、getbetter变得更好

50、invitesbtodosth/aplace邀请某人干某事/到某地

51、leavemyhomeworkathome

把我的作业忘在了家里

Module2

1.travelaroundtheworld周游世界

2.thepriceof…的价格

3.today’snewspaper今天的报纸

4.takeoff飞机起飞

5.enterapetition参加竞赛

6.ontelevision在电视上

7.innewspaper在报纸上

8.etrue成为现实

9.invitesbtodo邀请某人干某事

10.dreamabout/ofdoing梦见做某事

11.alloverChina全中国

12.trywesternfood品尝西餐

真的不掉线吗?

?

、?

?

?

?

?

?

?

?

?

?

?

?

13.giveconcernt举办音乐会

14.sellout卖光

15.pickupsb/sth接上某人/捡起某物

16.sincethen自从那时

17.againandagain一次又一次

18.Itsoundsbrilliant.听起来好极了

19.liveinanothercountry

居住在另一个国家

Module3

1.Whatareyouupto?

你正在干什么?

2.Don’tpanic.别紧张。

3.ontheradio通过收音机

4.onTV通过电视

5.hearabout听说

6.thereandback往返

7.showsthtosb/showsbsth给某人看某物

8.onbusiniss在出差

9.inspace在太空

10.apartof一部分

11.atnight在晚上

12.inthelastthereyears

在最近的三年里

13.finishdoingsth完成做某事

14.asgoodas和…一样好

15.asksbforsth向某人寻求某物

16.besure确信

17.sofar到目前为止

18.expecttodosth期望做某事

takeoff起飞,脱下衣服

M1-3教材重点句子

Module1

1.你何不把正确的拼写和语法写在出错的地方?

Andwhydon’tyouwritedownthecorrectspellingandgrammarnexttothemistakes?

2.还有什么吗?

Whatelse?

3.许多人在讲英语时不好意思,所以,在开口前,深吸一口气,笑一笑。

真的不掉线吗?

?

、?

?

?

?

?

?

?

?

?

?

?

?

ManypeopleareshywhentheyspeakEnglish,sobeforeyoubegin,takeadeepbreathandsmile.

4.微笑总能起作用的。

Smilingalwayshelps.

5.每天查看你的单词本是个好主意。

It’sagoodideatocheckyourvocabularynotebookeveryday.

6.用英语听收音机或读报纸如何呢?

HowaboutlisteningtotheradioorreadinganewspaperinEnglish?

7.尽量不要翻译每个词。

Trynottotranslateeveryword.

8.她可以帮助我做作业。

Shecanhelpmewithmyhomework.

9.许多学生征求提高英语水平的建议。

Ma

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2