gpt4 book ai didi

hadoop - hsync()如何在HDFS中工作?

转载 作者:行者123 更新时间:2023-12-02 18:39:51 26 4
gpt4 key购买 nike

Apache的文档说

Similar to posix fsync, flush out the data in client's user buffer 
all the way to the disk device (but the disk may have it in its cache).

这很容易理解,但是当我在代码中使用它时,我却不明白出现以下行为的原因。
  • 我在每个write()之后都调用hsync()。当我在另一个事件中缓慢地抽取数据时,在编写第一个事件之后,当我对该文件执行cattail时,我在文件中看到该事件。但是,在再编写2或3个事件之后,我看不到它们。我必须关闭流以查看那些数据被刷新到文件中。
  • 当我一次以10个事件或一次20个或更多事件的规模泵送数据时,我一直在查看文件中的数据,而不关闭流
  • 与方案1类似,但这里不是在每次写入后都执行hsync(),而是将其安排为计时器任务。在这里我也看到了文件中的数据而没有关闭流,但是在这里,hsycn()的调用数大于write()的调用数。例如,如果我编写了3个事件,则在hsync()的第4次或第5次调用之后,我在文件中看到了它们。

  • 谁能解释这个现象的原因?希望我的描述清楚。

    最佳答案

    Hsync操作是非常昂贵的IO操作,它将数据从os缓冲区写入磁盘。每次写入后,您必须调用hflush而不是hsync。

    有关更详细的解释,请在下面浏览我的帖子

    https://medium.com/@kiran.palaka/how-hflush-works-in-hdfs-hadoop-52d782ed92d3

    关于hadoop - hsync()如何在HDFS中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33257397/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com