我使用hadoop hdfs已经有一段时间了,我知道hdfs块(64mb,128mb)的工作情况,但是我仍然不清楚其他文件系统中的块,例如硬盘的存储块容量为4kb。所以我的理解是,所有的存储系统都使用块来存储数据,即使是我们的移动sd卡,但是hadoop为了处理海量数据有更大的块大小,对吗?请让我知道,如果有任何文件比较不同的块存储系统。
omvjsjqw1#
hdfs基本上是对现有文件系统的抽象(这意味着64 mb/128 mb块在lfs中存储为4k块)。hdfs块大的原因是最小化寻道。hdfs块存储在正常文件系统中的连续内存位置(彼此相邻),这意味着读取的总时间是在lfs上查找第一个块的头,然后读取块的内容而不执行任何更多的查找,因为它们是连续的。这意味着我们在读取与磁盘传输速率相当的数据时所花费的时间最少。这对于mr-jobs非常有用,因为我们必须读取大量数据并对这些数据执行操作,因此最小化寻道时间可以提高性能。hdfs还可以处理大文件。假设你有一个1gb的文件。对于4k块大小,您必须发出256000个请求才能获取该文件。在hdfs中,这些请求通过网络到达name节点,以确定在何处可以找到该块。如果使用64mb块,请求数将减少到16个。使用大块大小的原因是为了减少namenode上的应力。由于namenode存储文件块的元数据,如果块大小很小,namenode将很容易被块数据淹没。这些链接还将帮助您更好地了解hdfs与lfs
1条答案
按热度按时间omvjsjqw1#
hdfs基本上是对现有文件系统的抽象(这意味着64 mb/128 mb块在lfs中存储为4k块)。hdfs块大的原因是最小化寻道。hdfs块存储在正常文件系统中的连续内存位置(彼此相邻),这意味着读取的总时间是在lfs上查找第一个块的头,然后读取块的内容而不执行任何更多的查找,因为它们是连续的。
这意味着我们在读取与磁盘传输速率相当的数据时所花费的时间最少。
这对于mr-jobs非常有用,因为我们必须读取大量数据并对这些数据执行操作,因此最小化寻道时间可以提高性能。
hdfs还可以处理大文件。假设你有一个1gb的文件。对于4k块大小,您必须发出256000个请求才能获取该文件。在hdfs中,这些请求通过网络到达name节点,以确定在何处可以找到该块。如果使用64mb块,请求数将减少到16个。使用大块大小的原因是为了减少namenode上的应力。由于namenode存储文件块的元数据,如果块大小很小,namenode将很容易被块数据淹没。
这些链接还将帮助您更好地了解hdfs与lfs