Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux HDFS单写多读模型-读取不一致?_Linux_Hadoop_Hdfs - Fatal编程技术网

Linux HDFS单写多读模型-读取不一致?

Linux HDFS单写多读模型-读取不一致?,linux,hadoop,hdfs,Linux,Hadoop,Hdfs,HDFS允许单写多读模型。在这个模型中,它能否面对这样一种情况:读取的数据与写入者正在写入的数据不一致?在执行显式h-flush操作之前,HDFS不能保证数据的可见性,但如果读卡器读取的数据被写入器更改,会不会出现数据不一致的问题?读卡器读取的数据将被写入器更改的场景在HDFS中根本不会发生 正如您正确观察到的,HDFS支持一次写入模型,在该模型中,它不允许对写入的数据进行任何修改 因此,一旦调用FSDataOutputStream.hsync,数据将写入磁盘,客户端可以读取数据,写入程序将无法

HDFS允许单写多读模型。在这个模型中,它能否面对这样一种情况:读取的数据与写入者正在写入的数据不一致?在执行显式h-flush操作之前,HDFS不能保证数据的可见性,但如果读卡器读取的数据被写入器更改,会不会出现数据不一致的问题?

读卡器读取的数据将被写入器更改的场景在HDFS中根本不会发生

正如您正确观察到的,HDFS支持一次写入模型,在该模型中,它不允许对写入的数据进行任何修改

因此,一旦调用FSDataOutputStream.hsync,数据将写入磁盘,客户端可以读取数据,写入程序将无法修改刷新的数据

修改内容的唯一方法是复制具有所需更改的相同数据

编辑:-

HDFS中的设计事实使我们能够在刷新块后立即读取正在复制的文件中最近写入的块,主要用于跟踪完整文件写入操作的进度,避免文件关闭失败,并支持hadoop fs-tail命令

请参阅

HDFS仅保证最终的一致性,即只有在客户端关闭文件写入操作后,文件块才会在分布式系统中保持一致


-日出时的礼貌是有道理的。一种情况是:Writer要写512KB,但他刚刚刷新了读卡器读取的256KB数据。最终,writer将写入512KB,但由于读取器只读取了256KB的新数据,在这种情况下,它不会影响读取一致性吗?或者我们在这里遵循最终一致性模型?它遵循最终一致性模型consistency@yguw,我已经编辑了答案。请检查它是否有用。