为什么HDFS客户端无法直接发送到DataNode? p>
HDFS客户端缓存的优势是什么?
答案 0 :(得分:2)
听起来您正在引用Apache Hadoop HDFS Architecture文档,特别是标题为Staging的部分。不幸的是,这些信息已经过时,不再是对当前HDFS行为的准确描述。
相反,客户端会立即向NameNode发出create
RPC调用。 NameNode在其元数据中跟踪新文件,并使用一组可以接收块数据写入的候选DateNode地址进行回复。然后,客户端开始将数据写入文件。当客户端写入数据时,它正在写入与DataNode的套接字连接。如果写入的数据变得足够大以跨越块大小边界,则客户端将再次与NameNode交互以使addBlock
RPC在NameNode元数据中分配新块并获得一组新的候选DataNode位置。客户端没有必要写入本地临时文件。
但请注意,与Amazon S3集成的替代文件系统(如S3AFileSystem
)可能支持缓冲到磁盘的选项。 (如果您对此更多详细信息感兴趣,请参阅Integration with Amazon Web Services的Apache Hadoop文档。)
我已提交Apache JIRA HDFS-11995来跟踪更正文档。