ITPub博客

首页 > 大数据 > Hadoop > Hadoop学习笔记(一)Hadoop分布式文件系统:文件写入

Hadoop学习笔记(一)Hadoop分布式文件系统:文件写入

Hadoop 作者:pp18588241 时间:2013-12-15 12:59:57 0 删除 编辑

1.高性能计算(HPC)和网格计算(GC)与MapReduce的比较

 

HPC和GC,主要使用类似于消息传递接口(Message Passing Interface)的API。从广义上讲,是将作业分散到集群的各台机器上,这些机器访问由存储区域网络(SAN)组织的共享文件系统。这比较适合计算密集型的作业。但如果节点需要访问更大量的数据(几百个GB的数据,这时MapReduce开始发挥其优势),很多节点会英文网络带宽的瓶颈问题而空闲下来等待数据。

 

MapReduce会尽量在节点存储数据,以实现数据的本地快速访问。数据本地化(Data Locality)特征是MapReduce的核心特征,并因此获得良好的性能。



2. 文件写入剖析

step1. 客户端通过DistributedFileSystem对象调用create()函数来创建文件。

step2. DistributedFileSystem对namenode创建一个RPC调用,在文件系统的命名空间中创建一个新文件,此时该文件中还没有数据。

namenode执行检查确保文件不存在并且客户端有创建该文件的权限。通过检查,namenode会为创建新文件创建记录一条记录;否则,抛出IOException异常。DistributedFileSystem向客户端返回一个FSDataOutputStream对象,由此客户端可以开始写入数据。就像读取事件一样,FSDataOutputStream封装一个DFSoutPutstream对象,该对象负责处理datanode和namenode之间的通信。

step3. 客户端写入数据时,DFSOutputStream将它分成一个个的数据包,并写入内部队列,称为“数据队列”(data queue)。DataStreamer处理数据队列,他的任务是根据datanode列表来要求namenode分配合适的新块来存储数据备份。这一组datanode构成一个管线--假设复本数为3,所以管线有3个节点。DataStreamer将数据包流式传输到管线中第一个datanode,该datanode存储数据包并将它发送到管线的第二个datanode。同样的,第二个datanode存储并发送给第三个。

DFSOutputStream也维护着一个内部数据包队列来等待datanode的收到确认回执,称为“确认队列”(ack queue)。当收到管道中所有datanode确认信息后,该数据包才会从确认队列删除。

如果在数据写入期间,datanode发生故障,则执行以下操作,这对写入数据的客户端是透明的。首先关闭管线,确认把队列中的任何数据包都添加回数据队列的最前端,以确保故障节点下游的datanode不会漏掉任何一个数据包。为存储在另一正常datanode的当前数据块指定一个新的标识,并将该标识传送给namdenode,以便故障datanode在恢复后可以删除存储的部分数据块。从管线中删除故障数据节点并且把余下的数据块写入管线中的两个正常的datanode。namdenode注意到块复本不足时,会在另一个节点上创建一个新的复本。后续的数据块继续正常接受处理。

在一个块被写入期间可能会有多个datanode同时发生故障,但非常少见。只要写入了dfs.replication.min的复本书(默认为1),写操作就会成功,并且这个块可以在集群中异步复制,直到达到其目标复本(dfs.replication的默认值为*)。

setp4. 客户端完成数据的写入后,会对数据流调用close()方法。该操作将剩余的所有数据包写入datanode管线中,并在联系namenode且发送文件写入完成信号之前,等待确认。namenode已经知道文件由哪些块组成(通过DataStreamer询问数据块的分配),所以它在返回成功前只需要等待数据块进行最小量的复制。

Hadoop学习笔记(一)Hadoop分布式文件系统:文件写入
另:复本的布局

Hadoop的默认布局策略是,在运行客户端的节点上放置第一个复本,第二个复本放在于第一个不同且随机另外选择的机架中节点上。第三个与第二个放置相同的机架,且随机选择另一个节点。其他复本放在集群中随机选择的节点,不过系统会尽量避免在相同的机架上放太多复本。

<!-- 正文结束 -->

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23682027/viewspace-1120351/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2010-04-08