为什么Hadoop文件系统不支持随机I / O?

时间:2011-04-24 07:59:08

标签: file-io filesystems hadoop distributed-system gfs

像Google文件系统和Hadoop这样的分布式文件系统不支持随机I / O. (它不能修改之前写过的文件。只能写入和追加。)

他们为什么设计这样的文件系统?
设计有哪些重要优势?

P.S我知道Hadoop将支持修改所写的数据 但是他们说,它的表现会非常不好。为什么呢?

2 个答案:

答案 0 :(得分:6)

Hadoop分发和复制文件。由于文件是复制的,因此任何写操作都必须通过网络查找每个复制的部分并更新文件。这将大大增加操作的时间。更新文件可能会将其推过块大小,并要求将文件拆分为2个块​​,然后复制第2个块。我不知道内部以及它何时/如何分裂块...但这可能是一个复杂的因素。

如果作业失败或被杀死已经进行了更新并重新运行怎么办?它可以多次更新文件。

不更新分布式系统中的文件的好处是,在更新文件时,您不知道还有谁在使用该文件,您不知道文件的存储位置。有可能超时(块的节点没有响应),所以你最终可能会得到不匹配的数据(同样,我不知道hadoop的内部结构,并且可能会处理节点关闭的更新,这只是我头脑风暴的事情)

在HDFS上更新文件时存在许多潜在问题(上面列出的一些问题)。它们都不是不可克服的,但它们需要一个性能损失来检查和解释。

由于HDFS的主要目的是存储用于mapreduce的数据,因此在此阶段行级更新并不重要。

答案 1 :(得分:0)

我认为这是因为数据的块大小和Hadoop的整体想法是你不移动数据,而是将算法移动到数据。

Hadoop专为非实时批处理数据而设计。如果您正在研究如何在响应时间和随机访问方面实现更像传统RDBMS的方法,请查看构建在Hadoop之上的HBase