分布式文件系统(例如 Google 文件系统和 Hadoop)不支持随机 I/O。
(不能修改之前写入的文件。只能写入和追加。)
他们为什么要这样设计文件系统?
该设计有哪些重要优点?
P.S 我知道 Hadoop 将支持修改写入的数据。
但他们表示,它的性能会很不好。为什么?
Hadoop 分发和复制文件。由于文件被复制,任何写入操作都必须通过网络找到每个复制的部分并更新文件。这将大大增加手术时间。更新文件可能会超出块大小,并需要将文件分成 2 个块,然后复制第二个块。我不知道内部结构以及何时/如何分割一个块......但这是一个潜在的复杂性。
如果作业失败或被杀死,并且已经进行了更新并重新运行,该怎么办?它可以多次更新文件。
在分布式系统中不更新文件的优点是,当你更新文件时,你不知道还有谁在使用该文件,你也不知道这些片段存储在哪里。存在潜在的超时(带有块的节点无响应),因此您可能最终会得到不匹配的数据(同样,我不知道 hadoop 的内部结构,并且可能会处理节点关闭的更新,这只是我正在集思广益的事情)
更新 HDFS 上的文件存在很多潜在问题(上面列出了一些问题)。它们都不是不可克服的,但它们需要对性能造成影响来检查和解释。
由于 HDFS 的主要目的是存储用于 MapReduce 的数据,因此行级更新在此阶段并不那么重要。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)