Hadoop ストリーミング ジョブの最初のステップで、パフォーマンスが非常に低下しています。マッパーは S3 から約 40KB/s ~ 50KB/s を読み取ったようです。
S3 から最大 100MB のデータを読み取るのに 1 時間以上かかります。
データの保存方法: S3 バケット内の数千の ~5-10KB GZip ファイル。
最近、サンプルの 100MB データセットのすべてのファイルを解凍し、同じ S3 バケットに単一の GZip ファイルとしてアップロードしました。タスクは 3 分で完了しました (以前の 1 時間の実行に対して)。
勇気づけられて、サンプルの 2GB データセットのすべてのファイルを解凍し、それを単一の GZip ファイルとして同じ S3 バケットにアップロードしました。また、タスクに 1 時間以上かかりました。その後、タスクを終了しました。
mapred.min.split.size
と をいじったことはありませんがmapred.max.split.size
、いじり始めるにはいくつかのサンプル値が必要です。
インターネットで読んだ投稿によると、Hadoop ストリーミング タスクの GZip 入力ファイルを使用して GB 単位のデータを処理しても、S3 からの読み取りに関する限り、多くのペナルティは発生しないようです。
共有していただけますか:
- S3に保存するファイルの「ブロブサイズ」と
- タスクごとに処理するそれらの数と
- それらの処理にはどのくらい時間がかかりますか?
を調整し、S3 に関して上記の 3 つの値を最適に保つと、ジョブの実行時間に多くの変化が生じるとmapred.min.split.size
思います。mapred.max.split.size