File HDFS文件何时可见

File HDFS文件何时可见,file,hadoop,hdfs,File,Hadoop,Hdfs,假设默认的Hadoop设置,如果我将128MB大小的文件写入HDFS。客户端需要向HDFS写入2个块。所以我的问题是 当第一个块写入HDFS时,文件是否可供读取,或者它必须等待第二个块写入 第二种方案的文件大小为64 MB, 2.是否有人可以读取当前写入HDFS的块?或者有人必须等待写入完成。HDFS以块为单位进行思考因此,如果文件由两个块组成,并且写入了一个块,则可以读取该块。但是,由于它只是文件的一块,而不是整个文件,因此您必须在dfs.data.dir中搜索它,并使用hadoop dfs-

假设默认的Hadoop设置,如果我将128MB大小的文件写入HDFS。客户端需要向HDFS写入2个块。所以我的问题是

  • 当第一个块写入HDFS时,文件是否可供读取,或者它必须等待第二个块写入
  • 第二种方案的文件大小为64 MB,

    2.是否有人可以读取当前写入HDFS的块?或者有人必须等待写入完成。

    HDFS以块为单位进行思考
    因此,如果文件由两个块组成,并且写入了一个块,则可以读取该块。但是,由于它只是文件的一块,而不是整个文件,因此您必须在
    dfs.data.dir
    中搜索它,并使用
    hadoop dfs-text
    读取它。或者您可以转到
    namenodeui
    阅读它

    对于第二个问题-否,您无法阅读当前正在编写的块。读卡器将看不到它。

    通常,当您写入HDFS时,一旦写入了超过一个数据块的数据,第一个数据块将对新读卡器可见。对于后续的数据块也是如此。写入的总是当前数据块,而其他读卡器不可见。但是,您可以使用FSDataOutputStream.sync()强制将所有缓冲区同步到数据节点。sync()返回成功后,写入该点的数据保证对所有新读卡器可见

    好的策略是将文件写入临时文件夹,然后将其移动到目标目录。在另一种情况下,可以在文件完全写入之前读取该文件。