2010-06-28 6 views
1

У меня проблема хранения 50 ГБ журналов каждый день в распределенной среде. Я посмотрел Hadoop HDFS, но поскольку у него проблемы с инфраструктурой Windows, отсутствие API многоязыковой файловой системы мне не очень хорошо. С другой стороны, Cassandra очень легко развертывать на любой платформе. Единственная большая проблема, с которой я сталкиваюсь, - это использование дискового пространства. Вот цифры:Кассандра подходит для хранения журналов в условиях использования дискового пространства?

  • Оригинальный размер журнала 224MB
  • файл данных Cassandra является 557Mb
  • Cassandra индекс файла 109Mb

Так что я получил почти 2х накладных расходов при сохранении строк журналов из журнальный файл.

Возможно ли каким-либо образом настроить Кассандру, чтобы он не мог съесть столько места на диске для очень простых сценариев?

+0

Мамы, пожалуйста, прочитайте http://stackoverflow.com/questions/2359175/cassandra-file-structure-how-are-the-files-used/2359282#2359282 – Schildmeijer

ответ

3

Я предполагаю, что вы имеете в виду одну строку (с четырьмя столбцами) внутри вашего семейства столбцов? «Накладные расходы», связанные с каждым столбцом, являются длинными (отметка времени, 64 бит) и байт [] (имя столбца, макс. 64 кб). Таким образом, использование диска 4x кажется немного странным. Вы делаете какие-либо удаления? Обязательно поймите how deletes are done in a distributed, eventually consistent system.

Обязательно прочитайте также «compactions». («Как только уплотнение закончено, старые файлы SSTable могут быть удалены»)

Также хотел бы напомнить вам о ограничении Thrift относительно того, как выполняется потоковая передача.

Общественный API Cassandra основан на Thrift, который не обладает потоковыми возможностями - любое значение, записанное или извлеченное, должно соответствовать памяти. Это неотъемлемо от дизайна Thrift и, следовательно, вряд ли изменится. Поэтому для добавления большой поддержки объектов в Cassandra потребуется специальный API, который вручную разбивает большие объекты на куски. Потенциальный подход описан в http://issues.apache.org/jira/browse/CASSANDRA-265. В то же время вы можете вручную разделить файлы на куски любого размера, который вам удобен - по крайней мере один человек использует 64 МБ - и файл соответствует строке, а куски - как значения столбца. (Из «Cassandra Limitations» страницы на вики)

+0

Schildmeijer, на самом деле я ошибся с использованием дискового пространства Cassandra, когда я представил свой вопрос (вы правы, я не выполнял уплотнение). Так вот истинные цифры (я также обновил оригинальный вопрос): - Оригинальный размер журнала 224MB - файл данных Cassandra является 557Mb - Cassandra индекс файла 109Mb Я не делаю никаких удалений. Я помещаю каждую линию журнала в Кассандру отдельно, а самая длинная строка - около 1 КБ. Все еще 2x накладные расходы несколько большие для моей цели хранения длинных - есть ли способ оптимизировать это? Спасибо! – sha1dy