Hadoop中的拆分大小与块大小

Hadoop中的拆分大小与块大小,hadoop,mapreduce,hdfs,Hadoop,Mapreduce,Hdfs,Hadoop中拆分大小和块大小之间的关系是什么?正如我读到的,分割大小必须是块大小的n倍(n是一个整数,n>0),这是正确的吗?分割大小和块大小之间有什么关系吗?在HDFS体系结构中,有块的概念。HDFS使用的典型块大小为64 MB。当我们将一个大文件放入HDFS时,它会被分割成64 MB的块(基于块的默认配置),假设您有一个1GB的文件,并且您想将该文件放入HDFS,那么将有1GB/64MB= 16个分割/块,这些块将分布在数据节点上。根据集群配置,这些块/区块将位于不同的DataNode上

Hadoop中拆分大小和块大小之间的关系是什么?正如我读到的,分割大小必须是块大小的n倍(n是一个整数,n>0),这是正确的吗?分割大小和块大小之间有什么关系吗?

在HDFS体系结构中,有块的概念。HDFS使用的典型块大小为64 MB。当我们将一个大文件放入HDFS时,它会被分割成64 MB的块(基于块的默认配置),假设您有一个1GB的文件,并且您想将该文件放入HDFS,那么将有1GB/64MB= 16个分割/块,这些块将分布在数据节点上。根据集群配置,这些块/区块将位于不同的DataNode上

根据文件偏移量进行数据拆分。分割文件并将其存储到不同块的目标是并行处理和数据故障转移

块大小和拆分大小之间的差异。

拆分是数据的逻辑拆分,基本上在Hadoop生态系统上使用Map/Reduce程序或其他数据处理技术进行数据处理时使用。分割大小是用户定义的值,您可以根据数据量(正在处理的数据量)选择自己的分割大小

Split基本上用于控制Map/Reduce程序中映射器的数量。如果您尚未在Map/Reduce程序中定义任何输入分割大小,则默认HDFS块分割将被视为输入分割

示例:

假设您有一个100MB的文件,HDFS的默认块配置是64MB,那么它将被分割成2个块,并占用2个块。现在,您有一个Map/Reduce程序来处理此数据,但您尚未指定任何输入分割,因此,基于块数(2块),将为Map/Reduce处理考虑输入分割,并为此作业分配2个映射器

但是,假设您在Map/Reduce程序中指定了分割大小(例如100MB),则两个块(2个块)将被视为Map/Reduce处理的单个分割,并且将为此作业分配1个映射器

假设您在Map/Reduce程序中指定了分割大小(比如25MB),那么Map/Reduce程序将有4个输入分割,并且将为作业分配4个映射器

结论:

  • 分割是输入数据的逻辑分割,而块是数据的物理分割
  • 如果未指定输入分割,HDFS默认块大小为默认分割大小
  • 分割是用户定义的,用户可以在地图/缩小程序中控制分割大小
  • 一个分割可以映射到多个块,并且一个块可以有多个分割
  • 映射任务(映射器)的数量等于拆分的数量
    • 假设我们有一个文件400MB,其中包含4条记录(e.g:400MB的csv文件,它有4行,每行100MB)

    • 如果HDFS块大小配置为128MB,则4条记录将不会均匀分布在块之间。看起来是这样的

    • 块1包含整个第一条记录和第二条记录的28MB块
    • 如果要在块1上运行映射程序,映射程序将无法处理,因为它不会有完整的第二条记录

    • 这正是输入拆分所要解决的问题输入拆分尊重逻辑记录边界

    • 让我们假设输入分割大小为200MB

    • 因此,输入拆分1应同时具有记录1和记录2。并且输入分割2不会以记录2开始,因为记录2已分配给输入分割1。输入拆分2将从记录3开始

    • 这就是为什么输入拆分只是数据的逻辑块。它指向以块为单位的起点和终点位置

    • 如果输入分割大小是块大小的n倍,则输入分割可以适合多个块,从而减少整个作业所需的映射器的数量,从而减少并行性。(映射器的数量是输入拆分的数量)

    • 输入分割大小=块大小是理想的配置


    希望这有帮助。

    拆分创建取决于所使用的输入格式。下图解释了FileInputFormat的getSplits()方法如何决定两个不同文件的拆分。
    请注意拆分斜率(1.1)所起的作用。

    进行拆分的相应Java源代码是:



    上面的computeSplitSize()方法扩展到最大值(minSize,min(maxSize,blockSize)),其中可以通过设置mapreduce.input.fileinputformat.split.minSize/maxSize来配置最小/最大大小。

    为什么输入拆分为2 100 mb而不是200 mb?@ssinganamalla:这是一个错误。该图像中的所有输入分割应为200MB@tharindu_DG请参阅本文件以及其中一个最好的解释。我希望我能投下无限的一票。sandeep bhai,badhiya:)