У меня большой объем услуг. Я регистрирую события. Каждые несколько минут я архивирую журналы с помощью gzip и перемещаю их на S3. Оттуда мы обрабатываем журналы с помощью Amazon Hadoop — эластичного mapreduce — через Hive.
Прямо сейчас на серверах мы получаем всплеск загрузки ЦП каждые несколько минут, когда мы архивируем и ротируем журналы. Мы хотим переключиться с gzip на lzo или snappy, чтобы уменьшить этот всплеск загрузки процессора. Мы являемся сервисом, привязанным к процессору, поэтому мы готовы обменять большие файлы журналов на меньшее потребление процессора при ротации.
Я много читал о LZO и Snappy (он же zippy). Одним из преимуществ LZO является возможность разделения в HDFS. Тем не менее, наши файлы ~15 МБ заархивированы через Gzip, поэтому я не думаю, что мы доберемся до размера блока 64 МБ по умолчанию в HDFS, так что это не должно иметь значения. Даже если это так, мы должны просто увеличить значение по умолчанию до 128 МБ.
Прямо сейчас я хочу попробовать snappy, так как он кажется немного быстрее/менее ресурсоемким. Кажется, ни того, ни другого нет в репозитории yum от Amazon, поэтому нам, вероятно, все равно придется устанавливать / собирать на заказ - так что это не большой компромисс с точки зрения времени разработки. Я слышал некоторые опасения по поводу лицензии LZO, но я думаю, что просто установлю ее на наш сервер, если она не соответствует нашему коду, верно?
Итак, что мне выбрать? Будет ли один из них работать в Hadoop лучше, чем другой? Кто-нибудь сделал это с любой реализацией и есть какие-либо проблемы, которыми они могли бы поделиться?