Hadoop中Staging(客户端缓存)机制

客户端创建文件的请求其实并没有立即发送给 NameNode,事实上,在刚开始阶 段 HDFS 客户端会先将文件数据缓存到本地的一个临时文件。应用程序的写操作被透明地重定向到这个临时文件。当这个临时文件累积的数据量超过一个数据块的大小, 客户端才会联系 NameNode。
NameNode 将文件名插入文件系统的层次结构中,并且 分配一个数据块给它。然后返回 DataNode 的标识符和目标数据块给客户端。接着客 户端将这块数据从本地临时文件上传到指定的 DataNode 上。当文件关闭时,在临时 文件中剩余的没有上传的数据也会传输到指定的 DataNode 上。然后客户端告诉 NameNode 文件已经关闭。此时 NameNode 才将文件创建操作提交到日志里进行存 储。如果 NameNode 在文件关闭前宕机了,则该文件将丢失。 上述方法是对在 HDFS 上运行的目标应用进行认真考虑后得到的结果。这些应用 需要进行文件的流式写入。如果不采用客户端缓存,由于网络速度和网络堵塞会对吞 估量造成比较大的影响。
这种方法并不是没有先例的,早期的文件系统,比如 AFS, 就用客户端缓存来提高性能。为了达到更高的数据上传效率,已经放松了 POSIX 标准 的要求。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值