像Google file System和Hadoop这样的分布式文件系统不支持随机I/o
它不能修改以前写过的文件。只能写入和追加。)
为什么他们设计这样的文件系统?
设计的重要优点是什么?
p。我知道Hadoop会支持修改写入的数据。但是他们说,它的性能会很不好。为什么?
Hadoop分发和复制文件。由于文件是复制的,因此任何写操作都必须在网络中找到每个复制的部分并更新文件。这将大大增加手术的时间。更新文件可能会使其超过块大小,并需要将文件分成2个块,然后复制第二个块。我不知道内部和何时/如何它会分裂一个块…但这是一个潜在的并发症。
如果作业失败或被杀死,并且已经进行了更新并重新运行该怎么办?它可以多次更新文件。
在分布式系统中不更新文件的好处是,当你更新文件时,你不知道还有谁在使用它,你不知道这些碎片存储在哪里。有潜在的超时(节点与块是无响应的),所以你可能最终与不匹配的数据(再次,我不知道hadoop的内部和更新与节点可能会处理,只是一些我头脑风暴)
在HDFS上更新文件有很多潜在的问题(上面列出了一些)。没有一个是不可克服的,但它们需要性能上的打击来检查和解释。
由于HDFS的主要目的是存储用于mapreduce的数据,因此行级更新在此阶段并不那么重要。
我认为这是因为数据的块大小和Hadoop的整个思想是你不移动数据,而是将算法移动到数据上。
Hadoop是为非实时批处理数据而设计的。如果你正在寻找在响应时间和随机访问方面更像传统RDBMS的实现方法,可以看看建立在Hadoop之上的HBase。