MapReduceFileInputFormatと一般的に使用される実装クラスの比較

1はじめに

  • FileInputFormatは主に、MapReduceでファイルを複数のスライスInputSplitに分割し、さまざまなレコードリーダーRecordReaderに従ってスライスデータを読み取り、マップの入力として標準の<key、value>キーと値のペアに変換する役割を果たします。

  • また、FileInputFormatには多くの異なる実装サブクラスがあり、各実装クラスには異なるスライスメカニズムとレコード読み取りメカニズムがあります。

  • さまざまな実装クラスは次のとおりです

  • ここに写真の説明を挿入

ヒント:

  • データスライスは、入力を論理的にスライスするだけで、ストレージ用にディスク上でスライスしません。

2.FileInputFormatのデフォルトのスライスメカニズム

  • ファイルブロックのサイズに応じてスライスします
  • HDFSのデフォルトのストレージブロックサイズも128Mであるため、カットするデフォルトのブロックサイズは128Mです。このように、各MapTaskがスライスコンテンツを処理するときに、ノード間でデータをロードする必要がないため、伝送ネットワークのIOが削減されます。
  • スライスする場合、データセット全体は考慮されませんが、各ファイルは1つずつ別々にスライスされます

たとえば
、MapReduce入力パスの下に2つのファイルがある場合、a.txtは320M、b.txtはサイズ
2で10Mであり、FileInputFormatによるスライス後に生成されるスライス情報は次のとおりです。

// 总产生4个切片,文件a有3个切片,文件b有1个切片
a.txt的切片1: 0~128M
a.txt的切片2: 128~256M
a.txt的切片3: 256~320M

b.txt的切片1:  0~10M

3、TextInputFormat

  • スライスメカニズムはFileInputFormatと一致しています

  • TextInput Formatは、デフォルトのFilelnputFormat実装クラスです。

  • レコードリーダーRecordReaderは各レコードを1行ずつ読み取ります。

  • 読み取り後、キーKeyは、ファイル全体の行の開始バイトオフセット、Long書き込み可能タイプです。値は、この行の内容です。ただし、行末記号(newlineおよびcarriage return)、テキストタイプは除きます。このキーと値のペアは、マッパーの入力として使用されます

ケース:
スライスに含まれるコンテンツ情報は次のとおりです

1 ---b c
2 ---e f
3 ---a b

次に、TextInputFormatによって読み取られた後の<key、value>出力は次のとおりです。

(0,"---b c")
(6,"---e f")
(12,"---a b")

4、KeyValueTextInputFormat

  • スライスメカニズムはFileInputFormatと一致しています
  • レコードリーダーRecordReaderは行ごとに読み取られますが、読み取った後、各行は2つの部分に分割され、最初の部分がキーとして使用され、後半が値として出力されます。
  • デフォルトのカッティングセパレーターはtab(\ t)で、これは構成のsetメソッドで設定できます。たとえば、ここでは "—cutting" conf.set(KeyValueLineRecordReader.KEY_VALUE_SEPERATOR、 "—");を押すように設定されています。

ケース:
スライスに含まれるコンテンツ情報は次のとおりです

1 --- b c
2 --- e f
3 --- a b

次に、KeyValueTextInputFormatで読み取った後の<key、value>出力は次のとおりです。

(1,"b c")
(2,"e f")
(3,"a b")

5、NLineInputFormat

  • スライスメカニズムはFileInputFormatとは異なります。設定された行数に応じてスライスされます
  • レコードリーダーRecordReaderメカニズムはTextInputFormatと一貫性があります

ケース:
スライスに含まれるコンテンツ情報は次のとおりです

1 --- b c
2 --- e f
3 --- a b
4 --- g d
5 --- f d

切断行数が2に設定されている場合、2行ごとに1つのスライスに分割され、3つのスライスが生成されます。次に、各スライスがRecordReaderによって読み取られた後、出力<key、value>はTextInputFormat
スライス1と一致します

(0,"---b c")
(6,"---e f")

スライス2:

(12,"---a b")
(18,"---g d")

スライス3:

(24,"---f d")

6、CombineTextInputFormat

  • スライスメカニズムはFileInputFormatとは異なります
  • FileInputFormatは各ファイルを個別にスライスするため、ファイルがどれほど小さくても、各ファイルは1つ以上のスライスを生成します。CombineTextInputFormatは複数の小さなファイルを1つのスライスに論理的に計画できるため、送信のみが可能です。 MapTask処理を行います。
  • アプリケーション:CombineTextInputFormatは、複数の小さなファイルの処理に適しています

6.1スライスメカニズム

  • 最大仮想ストレージスライスと呼ばれるパラメータセットに従ってスライスする必要があります。
  • 仮想ストレージファイルは、最初に仮想ストレージ部門を通じて生成され、次に仮想ストレージファイルの結果情報に従ってスライスされます。

ケース:
最大仮想ストレージスライスが4Mに設定されている
とすると、次の5つのファイルとそのサイズがあります
。a.txt(1.7M)
b.txt(5.1M)
c.txt(3.4 M)
d.txt(6.8M)
e.txt (10M)

ステップ1:仮想ストレージのパーティショニングプロセス
-分割の原則、各ファイルを処理する際に、設定した仮想ストレージスライスの最大値(4M)と順番に比較します。設定した最大値以下の場合は、論理的にブロックを分割します。入力ファイルが設定された最大値より大きく、2倍を超える場合は、最大値で1つのブロックを切り取ります。残りのデータサイズが設定された最大値を超え、最大値の2倍以下の場合、ファイルはこの時点で2つの仮想ストレージブロックに分割されます。

仮想保存手順
a.txt(1.7M) 1.7 <4であるため、1つのブロックに分割されます
b.txt(5.1M) 5.1> 4で(2 x 4M)未満であるため、2つに均等に分割されます。つまり、ブロック1 [0,2.55]とブロック2 [2.56,5.1]です。
c.txt(3.4 M) 3.4 <4であるため、1つのブロックに分割されます
d.txt(6.8M) 6.8> 4で(2 x 4M)未満であるため、2つに均等に分割されます。ブロック1とブロック2はどちらも3.4Mです。
e.txt(10M) 10>(2 x 4M)であるため、ブロック1は4Mに分割され、残りの6Mはb.txtのスライスルールを繰り返し、ブロック2とブロック3はそれぞれ3Mに分割されます。

上記の表によると、最終的な仮想ストレージファイルブロックは

1.7M
2.55M
2.55M
3.4M
3.4M
3.4M
4M
3M
3M

ステップ2:仮想ストレージファイルブロックの結果に従ってスライスする

  • 1)仮想ストレージのファイルサイズが仮想ストレージスライスの最大値より大きいかどうかを判断し、最大値以上の場合は、スライスが個別に形成されます。
  • 2)以下の場合は、次の仮想ストレージファイルとマージしてスライスを形成します

マージ後に5つのスライスが生成されます

(1.7 + 2.55)M
(2.55 + 3.4) M
(3.4 + 3.4) M
4M
(3 + 3) M

6.2レコード読み取りメカニズム

  • TextInputFormatと同様に、各スライスの内容は1行ずつ読み取られます。出力キーはファイル全体の行の開始バイトオフセットであり、値は行の内容です。

7.違いと比較

実装クラス スライスメカニズム レコード読み取りメカニズムRecordReader 出力結果-(KeyIn、KeyOut)
TextInputFormat ブロックスライス 行ごとの出力 (各行の開始オフセット、各行の内容)
KeyValueTextInputFormat ブロックスライス 出力の各行を区切り文字で分割します (切断前の部分、切断後の部分)
NLineInputFormat 行番号Nでスライス 行ごとの出力 (各行の開始オフセット、各行の内容)
CombineTextInputFormat 仮想ストレージファイルによるスライス 行ごとの出力 (各行の開始オフセット、各行の内容)

8.報酬

記事が役に立ったら、著者を励ますことができます

ここに写真の説明を挿入

おすすめ

転載: blog.csdn.net/weixin_41347419/article/details/109059486