УДК 004.65
Логачева Н.В.,
к.т.н., доцент,
доцент кафедры «Информационных технологий и управляющих систем»
Пузырева К.С.,
магистр 2 года обучения кафедры «Информационных технологий и вычислительных систем»
Ладонычева М.Л.,
магистр 2 года обучения кафедры «Информационных технологий и вычислительных систем»
МАСШТАБИРУЕМЫЕ РАСПРЕДЕЛЕННЫЕ ХРАНИЛИЩА.
CASSANDRA ИЛИ HBASE?
Аннотация
С появлением NoSQL баз данных появилась возможность обработки большого количества разнообразной информации. В частности распределенные базы данных способны обрабатывать весомые объемы запросов на чтение и запись, что важно при генерации больших объемов данных. Самые популярные среди распределенных баз данных системы "Cassandra" и "HBase". В статье рассмотрены основные сходства и отличия этих систем, а также в каких случаях следует применять каждую из них.
Ключевые слова
Масштабируемые распределенные хранилища. Cassandra, HBase, NoSQL, SQL, СУБД
Logacheva N. In.,
Ph. D., associate Professor of the Department "Information technologies and control systems"
Puzyreva K. S.,
master 2 years of training of the Department "Information technologies and computer systems",
Ladonycheva M. L.,
master 2 years of training of the Department "Information technologies and computing systems"
Abstract
With the advent of NoSQL databases, it became possible to process a large amount of diverse information. In particular, distributed databases are capable of processing significant volumes of read and write requests, which is important when generating large amounts of data. The most popular systems among distributed databases are "Cassandra" and "HBase". The article discusses the main similarities and differences of these systems, as well as in which cases each of them should be used.
Главная особенность этих NoSQL - работа с данными, объемы которых измеряются терабайтами.
В этих хранилищах важнейшими параметрами считаются возможность обработки огромных объемов информации, отказоустойчивость и распределенность, а скорость доступа не обязательно должна быть моментальной.
Такая СУБД хранит информацию в виде разреженной матрицы, строки и столбцы которой используются как ключи. В таких системах сами значения хранятся в столбцах (колонках), представленных в отдельных файла. Благодаря такой модели данных можно хранить большое количество атрибутов в сжатом виде (поскольку данные в каждой колонке однородны), что ускоряет выполнение запросов к базе, особенно операции поиска и агрегации данных.
Наиболее популярными оказались системы "Cassandra" и "HBase", о них и пойдет речь в статье.
В чем схожи данные СУБД?
• Программирование. Обе базы данных с открытым исходным кодом. Написаны на языке
программирования Java, основаны на идеях БД Google Big Table;
• Модель данных. Обе базы данных могут управлять чрезвычайно большими наборами данных и обрабатывать нереляционные данные (такие как изображения, видео, аудио и т. д.) Тип хранилища key-value (Ключ - значение). Данные распределены не по строкам, а по столбцам. И столбцы группируются в семейства;
• Масштабируемость. При обработке большого объема данных в обеих системах пользователю достаточно увеличить количество узлов в кластере;
• Информационная безопасность. Обе базы данных поддерживают аутентификацию, авторизацию и шифрование между узлами, обеспечивая не только общее управление доступом, но и детализацию на уровне отдельных элементов модели данных. В частности, Cassandra обеспечивает доступ на уровне строк, а HBase - даже на уровне отдельных ячеек. При этом Кассандра позволяет определять роли пользователей, устанавливая для них условия видимости данных. В HBase, наоборот, администратор назначает метку видимости для наборов данных, в последствие распространяя их на группы пользователей и отдельных клиентов;
• Отказоустойчивость. HBase и Cassandra гарантируют сохранность информации, даже при сбое отдельных узлов за счет репликации данных;
Чем Apache HBase отличается от кассандры?
При всех вышеотмеченных сходствах, HBase и Cassandra существенно отличаются друг от друга по следующим характеристикам:
• Архитектура. В основе СУБД HBase заложен главный сервер (Master Node), который управляет остальными узлами, и в случае поломки главного сервера все остальные узлы перестанут работать. Apache Cassandra организована в виде равнозначных узлов, по которым распределены данные, и в случае сбоя одного узла, другие продолжат работу. Но и эта система имеет побочный эффект. Так слабым местом в системе является согласованность данных (для решения этой проблемы в системе предусмотрены настраиваемые уровни согласованности). В HBase для координации работ между сервисами, управления их конфигурациями и синхронизацией используется служба Zookeeper.
• Инфраструктура. Кассандра самодостаточна, т.е. она не нуждается в дополнительных файловых хранилищах и других внешних компонентах, обеспечивая как управление, так и хранение данных. Взаимодействие между узлами кластера происходит по одноранговому Gossip-протоколу. А для работы HBase необходимы компоненты Apache Hadoop: распределенная файловая система HDFS для хранения данных и служба Zookeeper.
• Средства работы с данными. HBase предоставляет разработчику Big Data более широкий набор возможностей: REST и другие API-интерфейсы Java, а также внешние SQL-решения, позволяющие работать с данными, хранящимися в HBase, как с реляционными таблицами. В свою очередь, Cassandra имеет собственный SQL-подобный язык запросов (CQL, Cassandra Query Language).
• Поддержка индексации. Cassandra поддерживает вторичные индексы, создать которые можно с помощью CQL-выражения CREATE INDEX. В HBase индексация возможна только по одному полю -первичному ключу (Row Key). Добавить вторичный индекс можно с помощью Apache Phoenix, который компилирует SQL-запросы в собственные API-интерфейсы NoSQL без использования MapReduce.
• ACID-транзакции. Apache HBase прямо сообщает о том, что не может обеспечить все ACID-требования к транзакциям (атомарность, согласованность, изолированность, долговечность). Однако, Cassandra обеспечивает ACID-транзакции на уровне одной записи, т.е. для набора столбцов с одним ключом.
Заключение: Hbase или Cassandra?
Ключевые аргументы в пользу Apache HBase
HBase работает поверх Apache Hadoop, храня данные в HDFS и используя службу Zookeeper для координации работ между сервисами, управления их конфигурациями и синхронизацией. Поэтому при наличии уже существующей хадуп-инфраструктуры целесообразно сделать выбор в пользу Apache
HBase. Однако, с учетом специфики распределения данных по узлам кластера согласно механизму регионирования, для работы HBase необходимо достаточное количество региональных серверов.
Благодаря своим архитектурным особенностям (блочный кэш HDFS, Bloom-фильтры и собственная система индексов), эта NoSQL-СУБД считается более подходящей для произвольного доступа к данным в виде множества согласованных операций чтения. Кроме того, она позволяет работать с большими данными как в поточном, так и в пакетном режиме, в. т.ч. используя преимущества вычислительной модели MapReduce.
Наконец, в этой СУБД есть ряд инструментов, позволяющих выполнять SQL-запросы к данным, хранящимися в нереляционной СУБД: Apache Phoenix, Drill, Hive и Cloudera Impala. Также HBase предоставляет разработчику Big Data собственные REST-интерфейсы и другие API, которые на практике бывают удобнее аналогичных решений Кассандры (SQL-подобного языка CQL, Java- и Thrift-API).
С учетом некоторых ограничений, HBase может быть основой OLAP- и даже OLTP-решений, когда ACID-транзакции не являются строго обязательными. Например, если необходимо просканировать огромные объемы информации, чтобы найти какие-то конкретные данные в небольших количествах. Из-за отсутствия дублирования данных, HBase будет отличным выбором. Также эта СУБД подойдет для работы с данными по моделям машинного обучения (Machine Learning), организации корпоративных хранилищ и озер данных (Data Warehouse, Data Lake) с целью BI-аналитики. В частности, именно так Apache HBase используется в российском отделении Раффайзен-банка.
Кассандру стоит предпочесть в следующих случаях:
• необходима самостоятельная система, независящая от сторонней инфраструктуры;
• требуется ACID-поддержка транзакций (хотя легковесная, бы на уровне одной записи) и вторичная индексация (без привлечения дополнительных инструментов, как Apache Phoenix в случае HBase);
• проектируемая система больше ориентирована на запись, чем на чтение данных - Cassandra записывает информацию быстрее, чем читает.
Таким образом, Cassandra отлично подходит для веб- или мобильных приложений, а также проектов со сложной аналитикой и анализом в реальном времени для географически распределенных Big Data систем. Например, приложение транспортного мониторинга, которое в режиме онлайн собирает и обрабатывает информацию с IoT-устройств, расположенных на наземном транспорте (автомобили, автобусы, грузовые машины и т.д.).
Список использованной литературы:
1. ScienceSoft [Электронный ресурс]: Алекс Беккер. Кассандра против HBase: близнецы или просто незнакомцы с похожей внешностью? [Сайт]. [2018] URL: https://www.scnsoft.com/blog/cassandra-vs-hbase, (дата обращения: 11.02.2022).
2. Data Flair [Электронный ресурс]: Cassandra Tutorials//HBase vs Cassandra - S Major Difference & Similarities in 2022 [2022] URL: https://data-flair.training/blogs/hbase-vs-cassandra/ (дата обращения: 12.02.2022).
3. en.wikipedia.org [Электронный ресурс]: Gossip protocol URL: https://en.wikipedia.org/wiki/ Gossip_protocol [2022] (дата обращения: 17.02.2022).
4. ru.wikipedia.org [Электронный ресурс]: Apache Cassandra URL: https://ru.wikipedia.org/wiki/ Apache_Cassandra [2021] (дата обращения: 14.02.2022).
5. ru.wikipedia.org [Электронный ресурс] Теорема CAP URL: https://ru.wikipedia.org/wiki/Теорема_CAP [2021] (дата обращения: 13.02.2022).
© Логачева Н.В., Пузырева К.С., Ладонычева М.Л., 2022
S