大量のサービスを提供しています。イベントをログに記録します。数分ごとに、gzipを使用してログを圧縮し、S3にローテーションします。そこから、AmazonのHadoop(elastic mapreduce)を使用してHive経由でログを処理します。
現在、サーバーでは、ログを圧縮してローテーションすると、数分ごとにCPUスパイクが発生します。このCPUスパイクを減らすために、gzipからlzoまたはsnappyに切り替えたいと考えています。私たちはCPUにバインドされたサービスであるため、ローテーション時に消費されるCPUを減らすために、より大きなログファイルを交換する用意があります。
私はLZOとSnappy(別名zippy)についてたくさん読んでいます。LZOの利点の1つは、HDFSで分割できることです。ただし、ファイルはGzipで最大15 MB圧縮されているため、HDFSで最大64 MBのデフォルトのブロックサイズになるとは思わないので、これは問題ではありません。たとえそうだったとしても、デフォルトを128MBまで上げることができるはずです。
今のところ、少し速く/リソースをあまり消費しないように見えるので、スナッピーを試してみたいと思います。どちらもAmazonのyumリポジトリに含まれていないようです。そのため、とにかくカスタムインストール/ビルドする必要があります。エンジニアリング時間のトレードオフはそれほど多くありません。LZOライセンスについていくつかの懸念を聞いたことがありますが、コードに近づかない場合は、サーバーにインストールするだけだと思います。
だから、私はどちらを選ぶべきですか?Hadoopでは一方が他方よりもパフォーマンスが向上しますか?誰かがどちらかの実装でこれを行い、共有できる問題がありますか?