linux - HDFS单写入器多读取器模型-读取不一致?

标签 linux hadoop hdfs

HDFS 允许单写入器多读取器模型。在这个模型中——是否会面临读取的数据与写入者写入的数据不一致的情况?在执行显式 h-flush 操作之前,HDFS 不保证数据的可见性,但是如果读取器读取的数据被写入器更改了怎么办 - 这不会是数据不一致问题吗?

最佳答案

读取器读取的数据会被写入器更改的情况在 HDFS 中根本不会发生。

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

因此,一旦调用FSDataOutputStream.hsync(),数据就会写入磁盘,客户端可以读取数据,写入者将无法修改刷新的数据。

修改内容的唯一方法是复制相同的数据并进行所需的更改。

编辑:-

HDFS 中的设计事实让我们在被复制的文件的最近写入的 block 被刷新后立即读取这些 block ,主要是为了跟踪整个文件写入操作的进度,以避免文件关闭失败,并支持 hadoop fs -tail 命令。

请引用,

https://issues.apache.org/jira/browse/HADOOP-89

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

--礼貌@sunrise76

关于linux - HDFS单写入器多读取器模型-读取不一致?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32558065/

相关文章:

c++ - 在 32 位环境中链接到 32 位共享目标文件会产生 ELFCLASS64 错误

linux - 如何在 bash shell 中重定向命令输出?

java - 使用 Hadoop MapReduce 将序列号添加到文本文件中的每条记录

Hadoop 独立 - hdfs 命令很慢

linux - 使用 Fedora 安装 Fedora

linux - 替代 setpriority(PRIO_PROCESS, thread_id, priority)

hadoop - 使用 oozie 协调器安排每月工作

java - 使用 Java 对启用 Kerberos 的 Hadoop 集群进行身份验证

hadoop - 如何将文件从远程服务器复制到HDFS

hadoop - Hive MapReduce作业提交失败 “Target is a directory”