すでに尋ねられた次の質問を参照してください: s3 に 1億個のファイルを書き込み、EMRで開いているファイルが多すぎます
ここで処理されるデータのサイズは、少なくとも約4〜5TBです。正確には-gzip圧縮で300GB。
このステップで時間の経過とともにデータが集計されるため、入力のサイズは徐々に大きくなります。
たとえば、2012年12月までのログには次のものが含まれます。
UDID-1, DateTime, Lat, Lng, Location
UDID-2, DateTime, Lat, Lng, Location
UDID-3, DateTime, Lat, Lng, Location
UDID-1, DateTime, Lat, Lng, Location
このためには、ファイル名としてUDID(一意のデバイス識別子)を使用して個別のファイルを生成し、そのUDIDに属するレコードをファイル内でソートされた順序で生成する必要があります。
元:
UDID-1.dat => File Contents
DateTime1, Lat1, Lng1, Location1
DateTime2, Lat2, Lng2, Location2
DateTime3, Lat3, Lng3, Location3
2013年1月のログがある場合、このステップでは、古いデータ、このステップで以前の月に既に生成されたファイル、およびUDIDのデータを集約するための新しいログの両方を読み取ります。
元:
If the logs for month of Jan has a record as: UDID-1, DateTime4, Lat4, Lng4, Location4, the file UDID-1.dat would need to be updated with this data. Each UDID's file should be chronologically sorted.
このステップでは、データをEBSボリュームに書き込み、後で使用できるようにそのままにしておくことを考えました。ただし、EBSボリュームには1TBの制限があります。参照されている質問ですでに述べたように、s3で直接ファイルを生成するか、HDFSで生成してからs3に移動することは、移動する必要のある小さなファイルが約1億個あるため、このユースケースでは実行可能なオプションではありません。また、s3distcpを使用しても、このような大量のファイルの移動は非常に遅くなります。
そこで、次にs3fsを試してみます。AmazonS3に支えられたFUSEベースのファイルシステムです。誰かがs3fsがどれほどスケーラブルであるかについて何か考えを持っていますか?1億個の小さなファイルを処理できるでしょうか?MRジョブで使用できるように、3〜5 TBのデータを1億ファイルに分散して、s3からローカルファイルシステムに移動するのにどのくらいの時間がかかりますか?また、データをs3に戻すのにどのくらいの時間がかかりますか?s3distcpの使用中に直面したのと同じ問題が発生しますか?
前もって感謝します !