同样的, 当写入数据时, 客户端会要求Name Node指定一组Data Node存储文件块和文件块的副本, 之后以管道的方式向Data Nodes写入数据....当HDFS Client写入数据时, 首先请求Name Node选择第一个块的备份Data Node列表, Client会组织一个node-to-node的管道并写入数据....若是应用程序需要边写边可读, 可以通过hflush操作: 当前数据包被立马发送到管道, 并同步等待管道中的ACK回复再继续写入.
HDFS write.png
上图是HDFS写入的例子....当读取失败, 就会尝试下一个. 可能会有疑问, 什么时候读取会失败呢? 有三个原因:
目标Data Node挂了...."The Hadoop Distributed File System"
总结
综上, HDFS是基于GFS的开源分布式文件系统, 具有高容错性, 可以部署在廉价不可靠的机器上.