Hadoop分布式文件系统(HDFS)中的数据块

时间:2020-02-23 14:33:26  来源:igfitidea点击:

将文件存储在HDFS中时,系统将其缩小到一组各个块中,并将这些块存储在Hadoop集群中的各种从属节点中。
这是一个完全正常的事情,因为所有文件系统都将文件中断到块之前将文件分解为磁盘。

HDFS没有想法(并且不关心)存储在文件中的内容,因此原始文件不会根据我们人类会理解的规则分割。
例如,人类会想要录制界限 - 显示记录开始和结束的行 - 被尊重。

HDFS通常是幸福地未知的,即一个块中的最终记录可能只是一个部分记录,其余内容分流到下列块。
HDFS只想确保文件分成均匀大小的块,匹配Hadoop实例的预定义块大小(除非输入已存储的文件的自定义值)。
在前面的图中,块大小为128MB。

不是我们需要存储的每个文件都是系统块大小的精确倍数,因此文件的最终数据块仅使用正常的空间。
在前面图的情况下,最终数据块是1MB。

将文件存储为块的集合的概念完全一致地与文件系统通常工作的完全一致。
但是关于HDFS的不同是规模的。
我们在Linux下的文件系统中看到的典型块大小为4KB,而Hadoop中的典型块大小为128MB。
此值可配置,可以自定义,作为新系统默认值和单个文件的自定义值。

Hadoop旨在将数据存储在PetaByte秤上,其中缩放的任何潜在限制都是最小化的。
高块大小是对大规模存储数据的直接后果。

首先,存储在HDFS中的每个数据块都有自己的元数据,需要由中央服务器跟踪,以便需要访问特定文件的应用程序,无论存储所有文件的块是否都已。
如果块大小在千字节范围内,则Terabyte Scale中的更适度的数据甚至会将元数据服务器带到轨道太多块。

其次,HDFS旨在实现高吞吐量,使得这些大数据集的并行处理尽可能快地发生。
Hadoop对数据处理侧的可扩展性的关键是,并且始终将是并行性 - 能够并行处理这些大文件的各个块。

为了实现高效处理,需要击中平衡。
一方面,块大小需要足够大,以保证专用于单个数据处理单元(例如,地图或者减少任务)的资源。
另一方面,块大小不能如此大,因为系统等待很长时间才能完成最后一个数据处理以完成其工作。

这两种考虑因素显然取决于在数据块上完成的工作种类。