为什么hdfs客户机将文件数据缓存到一个临时本地文件中?

ippsafx7  于 2021-06-01  发布在  Hadoop
关注(0)|答案(1)|浏览(296)

为什么hdfs客户端不能直接发送到datanode?
hdfs客户机缓存的优点是什么?
创建文件的应用程序请求不会立即到达namenode。
实际上,最初hdfs客户机将文件数据缓存到一个临时本地文件中。
应用程序写入将透明地重定向到此临时本地文件。
当本地文件累积至少值一个hdfs块大小的数据时,客户机联系namenode来创建一个文件。
然后,namenode按照创建一节中的描述进行操作。客户端将数据块从本地临时文件刷新到指定的datanodes。
关闭文件时,临时本地文件中剩余的未刷新数据将传输到datanode。
然后,客户机告诉namenode文件已关闭。
此时,namenode将文件创建操作提交到持久存储中。如果namenode在文件关闭之前死亡,则文件将丢失。

vjrehmav

vjrehmav1#

听起来像是在引用apachehadoophdfs体系结构文档,特别是标题为staging的部分。不幸的是,这些信息已经过时,不再是当前hdfs行为的准确描述。
相反,客户机会立即发出 create 对namenode的rpc调用。namenode在其元数据中跟踪新文件,并用一组可以接收块数据写入的候选datenode地址进行应答。然后,客户机开始将数据写入文件。当客户机写入数据时,它正在向datanode的套接字连接写入数据。如果写入的数据变得足够大,足以跨越块大小边界,那么客户机将再次与namenode交互一次 addBlock rpc在namenode元数据中分配一个新块并获取一组新的候选datanode位置。客户端没有写入本地临时文件的时间点。
但是请注意,其他文件系统,例如 S3AFileSystem 它与amazons3集成,可能支持磁盘缓冲选项(如果您对此感兴趣,请参阅apachehadoop文档以了解与amazonweb服务的集成。)
我已经提交了apachejirahdfs-11995来跟踪文档的更正。

相关问题