gpt4 book ai didi

java - Hadoop:使用 Filesystem.append() 在 Map 阶段更新 HDFS 中的文件时同步?

转载 作者:可可西里 更新时间:2023-11-01 16:26:13 26 4
gpt4 key购买 nike

我想知道当多个节点尝试使用 FileSystem append(Path p) 方法访问 HDFS 上的同一文件时,Hadoop 是否有任何类型的同步保护?

我在作业的映射器阶段将值附加到文本文件,我想知道如果两个映射器同时尝试访问同一个文件会发生什么情况?我不希望它们相互覆盖,最好是我希望节点等待获得对文件的访问权限,直到其他节点完成对文件的访问,以便在任何时候只有一个节点打开文件。

        BufferedWriter br=new BufferedWriter(new OutputStreamWriter(fs.append(new Path(tempFilePath))));
br.append("value");
br.close();

我知道这不是正确的 MapReduce,但对于我正在运行的一些作业,我别无选择,只能这样做,因为我需要存储一些独立于最终输出的文本值。

最佳答案

根据FAQ :

HDFS supports exclusive writes only.

When the first client contacts the name-node to open the file for writing, the name-node grants a lease to the client to create this file. When the second client tries to open the same file for writing, the name-node will see that the lease for the file is already granted to another client, and will reject the open request for the second client.

关于java - Hadoop:使用 Filesystem.append() 在 Map 阶段更新 HDFS 中的文件时同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25223949/

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