Почему HBase - лучший выбор, чем Cassandra с Hadoop?
Почему используется HBase
лучший выбор, чем использование Cassandra
с Hadoop
?
Может ли кто-нибудь дать подробное объяснение этого?
Спасибо
2 ответа
Я не думаю, что либо лучше, чем другие, это не просто один или другой. Это очень разные системы, каждая из которых имеет свои сильные и слабые стороны, поэтому это действительно зависит от ваших вариантов использования. Они могут определенно использоваться в дополнение друг к другу в той же инфраструктуре.
Чтобы лучше объяснить разницу, я бы хотел позаимствовать картину у Кассандры: "Полное руководство", где они приводят теорему CAP. То, что они говорят, в основном для любой распределенной системы, вы должны найти баланс между согласованностью, доступностью и допустимостью раздела, и вы можете реально удовлетворить только 2 из этих свойств. Из этого вы можете видеть, что:
- Кассандра удовлетворяет свойствам " Доступность" и " Допуск раздела".
- HBase удовлетворяет свойствам согласованности и допусков разделов.
Когда дело доходит до Hadoop, HBase построен поверх HDFS, что делает его довольно удобным для использования, если у вас уже есть стек Hadoop. Он также поддерживается Cloudera, который является стандартным корпоративным дистрибутивом для Hadoop.
Но Cassandra также имеет большую интеграцию с Hadoop, а именно Datastax Brisk, который набирает популярность. Теперь вы также можете напрямую передавать данные из выходных данных задания Hadoop в кластер Cassandra, используя некоторый формат вывода, предоставленный Cassandra (BulkOutputFormat
например), мы уже не до такой степени, что Кассандра была просто автономным проектом.
По своему опыту я обнаружил, что Кассандра хороша для случайного чтения, и не так уж много для сканирования
Чтобы немного покрасить картину, я использовал оба на своей работе в одной и той же инфраструктуре, и у HBase совсем другое назначение, чем у Cassandra. Я использовал Cassandra главным образом для очень быстрых поисков в реальном времени, в то время как я использовал HBase больше для тяжелых пакетных заданий ETL с меньшими требованиями к задержке.
Это вопрос, который действительно заслуживает публикации в блоге, поэтому вместо того, чтобы продолжать и продолжать, я хотел бы указать вам на статью, в которой резюмируется множество ключевых различий между двумя системами. Суть в том, что не существует превосходного решения IMHO, и вы должны действительно подумать о своих вариантах использования, чтобы увидеть, какая система лучше подходит.
Мы должны сравнить плюсы и минусы обеих баз данных и принять взвешенное решение в зависимости от требований бизнеса.
Cassandra
Плюсы:
- Удовлетворяет доступность и разделение теории CAP и возможное соответствие.
- Масштабируемость с большими кластерами без единой точки отказа
- SQL- подобный язык для разработки позволяет разработчикам легко переходить с фона RDBMS
- Cassandra имеет отличную производительность чтения одной строки, если семантика возможной согласованности достаточна для вариантов использования
- Поддержка от Datastax - большое преимущество
- Оптимизирован для записи
Минусы:
- Не поддерживает сканирование строк на основе диапазона
- Не поддерживает Atomic Compare и Set
- Cassandra не поддерживает функционал сопроцессора
- Cassandra поддерживает вторичные индексы для семейств столбцов, для которых известно имя столбца. (Не на динамических столбцах).
- Агрегации в Кассандре не поддерживаются узлами Кассандры
HBase
Плюсы:
- Сильная последовательность и соответствует теории последовательности и разделения CAP.
- Эквивалентные триггеры и хранимые процедуры СУБД
- Поддержка Hadoop
- Диапазон сканирования строк
- Поддержка атомного сравнения и установки
- Оптимизирован для чтения, поддерживается одним мастером записи
- Поддержка агрегации
- Высокая масштабируемость и автоматическое распределение данных
Минусы:
- Не хватает дружественного языка для развития
- Не поддерживает чтение нагрузки балансировки для одной строки
- Операции между рядами не являются атомарными
- Единственная точка отказа, если был использован только один HBase Master
Посмотрите на статью 1, статью 2 и эту презентацию для получения более подробной информации.