如果我的单个数据之一大于块大小,hadoop将如何拆分数据? 例如。我要存储的数据(谈论单个记录)的大小为80 mb,块大小为64 mb,那么hadoop如何管理这种情况?
答案 0 :(得分:0)
如果我们使用64MB的块大小,那么数据将仅加载到两个块(64MB和16MB)中。因此,元数据的大小会减小。
编辑: Hadoop框架将大文件分为块(64MB或128 MB)并存储在从属节点中。 HDFS无法识别该块的内容。在将数据写入块时,记录可能会超出块限制,并且同一条记录的一部分写入一个块,而另一记录写入另一块。 因此,Hadoop跟踪数据拆分的方式是通过数据的逻辑表示(称为输入拆分)进行的。 Map Reduce客户端计算输入拆分时,实际上会检查整个记录是否位于同一块中。如果将头顶的记录及其一部分写入了另一个块,则输入拆分将捕获下一个块的位置信息以及完成记录所需的数据的字节偏移量。这通常发生在多行记录中,因为Hadoop具有足够的智能来处理单行记录场景。 通常,将输入拆分配置为与块大小相同,但是要考虑输入拆分是否大于块大小。输入拆分表示将在一个映射器中输入的数据大小。考虑下面的例子 •输入拆分= 256MB •块大小= 128 MB 然后,映射器将处理两个可以在不同机器上的块。这意味着要处理该块,映射器将不得不在要处理的机器之间传输数据。因此,为了避免不必要的数据移动(数据局部性),我们通常将输入拆分与块大小保持相同。