HDFS 块与 HDD 存储块

Posted

技术标签:

【中文标题】HDFS 块与 HDD 存储块【英文标题】:HDFS blocks Vs HDD storage blocks 【发布时间】:2018-12-27 15:29:09 【问题描述】:

我使用 Hadoop HDFS 已经有一段时间了,我知道 HDFS 块(64 Mb,128 Mb)的工作原理。但我仍然不清楚其他文件系统中的块,例如硬盘驱动器的存储块容量为 4kb。

所以我的理解是所有的存储系统都使用块来存储数据,甚至我们的移动sd卡,但是Hadoop为了处理海量数据而具有更大的块大小,对吗?

如果有比较不同块存储系统的文档,请告诉我。

【问题讨论】:

【参考方案1】:

HDFS 基本上是对现有文件系统的抽象(这意味着 64 MB/128 MB 块在 LFS 中存储为 4k 块)。 hdfs 块的大小很大的原因是为了尽量减少搜索。 HDFS 块存储在普通文件系统中的连续内存位置(彼此相邻),这意味着读取它的总时间是在 LFS 上寻找第一个块的头部然后读取块的内容而不因为它们是连续的,所以做更多的寻找。

这意味着我们正在读取与磁盘传输速率相当的数据,并且花费最少的时间进行搜索。

这在 MR 作业中非常有用,因为我们必须读取大量数据并对这些数据执行操作,因此最大限度地减少寻道时间可以提高性能。

HDFS 也用于处理大文件。假设您有一个 1GB 的文件。对于 4k 块大小,您必须发出 256,000 个请求才能获取该文件。在 HDFS 中,这些请求通过网络到达名称节点,以确定可以找到该块的位置。如果您使用 64Mb 块,请求数将减少到 16 个。 使用大块大小的原因是为了减少对namenode的压力。由于namenode存储文件块的元数据,如果块大小很小,那么namenode很容易被块数据淹没。

这些链接也将帮助您更好地理解 HDFS vs LFS

【讨论】:

谢谢!!还有一个小问题,是所有文件系统都维护底层的 4kb 作为存储块还是只有 Linux 文件系统? Sd卡或SSD块的存储是什么? 不,所有文件系统都不需要 4kb 块大小,Unix 文件系统也可以有 8kb 块大小。也可以看看这个 sd 卡相关信息support.microsoft.com/en-in/help/140365/…

以上是关于HDFS 块与 HDD 存储块的主要内容,如果未能解决你的问题,请参考以下文章

初识Hadoop

过程控制块与过程表?

代码块与缓存机制

HDFS块的存储策略

HDFS架构

Hadoop如何修改HDFS文件存储块大小