HDFS ブロック サイズが 64 MB のクラスターがあります。100 個のプレーン テキスト ファイルを含むディレクトリがあり、それぞれのサイズは 100 MB です。このInputFormat
ジョブの はTextInputFormat
です。マッパーはいくつ実行されますか?
Hadoop 開発者試験でこの質問を見ました。答えは 100 です。他の選択肢は 64、640、200 の 3 つです。
ガイドしてください。前もって感謝します。
これは間違っているように見えるというあなたの評価に同意します
もちろん、投稿されていない試験問題がさらにある場合を除きます。
試験問題と「正しい」答えに公平を期すために、試験問題全体が必要です。
正解は 200 です (ファイルのブロック サイズがすべてデフォルトの 64MB で、ファイルが圧縮されていないか、snappy などの分割可能なコーデックで圧縮されている場合)。
答えが間違っていたようです。
ただし、以下のシナリオでは正しい場合があります。
1)isSplitableメソッドをオーバーライドし、falseを返すと、マップタスクの数は入力ファイルの数と同じになります。この場合は100になります。
2)mapred.min.split.size、mapred.max.split.size変数を構成する場合、デフォルトでは、最小分割サイズは0で、最大分割サイズはLong.MAXです。
以下は、マッパーの数を識別するために使用する関数です。
max(mapred.min.split.size、min(mapred.max.split.size、blocksize))
このシナリオでは、mapred.min.split.sizeを100として構成すると、100個のマッパーが作成されます。
しかし、与えられた情報によると、100は正しい答えではないと思います。
ブロック サイズ (64 MB) がファイル サイズ (100 MB) より小さいため、各ファイルは 2 つに分割され、200 のマッパーが実行されます。