2

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

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

PS 我知道 Hadoop 将支持修改写入的数据。
但是他们说,它的性能会很不好。为什么?

4

2 回答 2

8

Hadoop 分发和复制文件。由于文件被复制,任何写操作都必须在网络上找到每个复制的部分并更新文件。这将大大增加操作时间。更新文件可能会超过块大小,并需要将文件分成 2 个块,然后复制第 2 个块。我不知道内部结构以及它何时/如何拆分一个块......但这是一个潜在的并发症。

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

在分布式系统中不更新文件的好处是,当您更新文件时,您不知道还有谁在使用该文件,也不知道这些文件存储在哪里。存在潜在的超时(带有块的节点无响应),因此您最终可能会得到不匹配的数据(同样,我不知道 hadoop 的内部结构,并且可能会处理节点关闭的更新,这只是我正在集思广益的事情)

更新 HDFS 上的文件存在很多潜在问题(上面列出了一些)。它们都不是不可逾越的,但它们需要对性能造成影响才能检查和解释。

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

于 2011-04-24T17:36:15.117 回答
0

I think it's because of the block size of the data and the whole idea of Hadoop is that you don't move data around but instead you move the algorithm to the data.

Hadoop is designed for non-realtime batch processing of data. If you're looking at ways of implementing something more like a traditional RDBMS in terms of response time and random access have a look at HBase which is built on top of Hadoop.

于 2011-04-24T08:02:57.710 回答