Apache HBase vs Google BigTable: сходства и различия, варианты использования

обучение Hadoop, курсы Hadoop HBase, обучение дата-инженеров и администраторов Hadoop HBase, HBase vs BigTable сходства и отличия, обучение большим данным примеры кейсы, Школа Больших Данных Учебный Центр Коммерсант

Что общего у Apache HBase с Google Bigtable, чем они отличаются и какую NoSQL-СУБД выбирать для практического использования.

Чем похожи NoSQL-хранилища для больших данных

Apache HBase часто называют Google BigTable для Hadoop, поскольку она обеспечивает аналогичные возможности и использует многие концепции этой облачной NoSQL-СУБД. В частности, именно Bigtable был выпущен в 2005 году, хотя был недоступен широкой публике до 2015 года. Apache HBase создан в 2008 году на основе публикации Google Bigtable: A Distributed Storage System for Structured Data. Из ключевых сходств между этими нереляционными СУБД можно отметить следующие:

  • они обе относятся к категории NoSQL, не в полной мере поддерживая все ACID-требования к транзакциям, соединения и строгую типизацию столбцы. Впрочем, говорить о том, что HBase исключает возможность соединять таблицы и транзакционность, не совсем корректно. В частности, здесь мы писали про реализацию ACID, здесь – про соединения таблиц, а здесь – про регулярные выражения в Apache HBase. Для этого вместо стандартных SQL-запросов при работе с HBase приходится писать MapReduce-функции на Java или использовать инструменты стека SQL-on-Hadoop, такие как Apache Hive и Phoenix. Впрочем, Google Bigtable тоже не поддерживает язык запросов SQL.
  • Обе СУБД могут обрабатывать значительные объемы данных в масштабе петабайт за счет поддержки линейного горизонтального масштабирования, а также обеспечивают высокую доступность за счет репликации данных и управление версиями.
  • Будучи нереляционными СУБД, Apache HBase и Google Bigtable не содержат схемы данных, реализуя принцип «схема при чтении», а не «схема при записи», о чем мы говорили в этой статье.
  • HBase и Bigtable предоставляют Java API, а также поддерживают ряд популярных языков программирования (Java, Python, C#, C++). Хотя полный список поддерживаемых языков отличается и HBase-подобный Java API в Bigtable тоже не полностью совпадает с оригиналом.

Несмотря на эти сходства, не стоит считать HBase полным аналогом Google BigTable для Hadoop: эти нереляционные СУБД   имеют ряд отличий, что мы и рассмотрим далее.

Отличия Apache HBase от Google Bigtable

Хотя HBase можно рассматривать как своего рода Java-реализацию BigTable, которая добавляет аналогичную функциональные возможности в ядро Hadoop, эти СУБД имеют ряд специфических отличий. Прежде всего, Apache HBase является проектом с открытым исходным кодом, а Bigtable – это коммерческая разработка корпорации Google. Apache HBase бесплатен, а Bigtable — нет.

HBase реализует модель «семейство колонок» (wide column), тогда как Bigtable также поддерживает подход key-value подобно базе данных Redis, о которой мы говорили здесь.

HBase можно установить в любой среде с распределенной файловой системой Apache Hadoop (HDFS) в качестве базового хранилища данных, а Bigtable доступен только в виде облачного сервиса от Google. Изначально Bigtable был создан этой компанией для собственных нужд и до сих пор активно используется во многих сервисах Google, включая Search, Analytics, Maps и Gmail. Bigtable поддерживает обновленную технологию удаленного вызова процедур gRPC, а Apache HBase – нет, но зато имеет API Thrift и REST.

Хотя BigTable как полностью управляемая облачная NoSQL-СУБД имеет совместимый с HBase клиент, на практике при создании семейства столбцов нельзя настроить размер блока или метод сжатия ни с помощью оболочки HBase, ни с помощью API этой NoSQL-СУБД. BigTable управляет размером блока и сжатием автоматически, используя собственные методы сжатия для всех данных. Также BigTable требует, чтобы имена семейств столбцов следовали регулярному выражению [_a-zA-Z0-9] [-_. A-zA-Z0-9] *. Поэтому при импорте данных в BigTable из HBase, нужно сначала изменить имена семейств, чтобы следовать этому шаблону. Также некоторые методы, доступные в HBase, не поддерживаются в BigTable. В частности, возможно удаление определенной версии конкретного столбца на основе его временной метки, но удаление всех значений с определенной временной меткой в заданном семействе столбцов или строке не поддерживается. Зато операции добавления в Bigtable полностью атомарны как для чтения, так и для записи: клиент никогда не прочитает частично примененную операцию Append. Bigtable хранит временные метки в микросекундах, а HBase – в миллисекундах.

HBase удаляет маскированные put-операции, а Bigtable не делает этого после удаления, когда put-запросы отправляются после delete-запросов. Это означает, что в Bigtable запрос на запись, отправленный в ячейку, не зависит от ранее отправленного запроса на удаление в ту же ячейку.

Apache HBase поддерживает скрипты на стороне сервера, например, триггеры, и, благодаря открытому исходному коду, предоставляет больше возможностей для расширений. Bigtable не поддерживает сопроцессоры и распределенные процедуры.

Вместо концепции регионов для распределения табличных данных Bigtable использует планшеты (tablet) и управляет ими автоматически. Apache HBase обеспечивает немедленную согласованность данных и согласованность в конечном счете (eventual consistency), тогда как Bigtable – немедленную согласованность только для одного кластера, и согласованность в конечном счете для двух или более реплицированных кластеров.

Наконец, рассматриваемые СУБД используют различные модели обеспечения безопасности: в HBase есть ACL-списки и другие методы, а Bigtable работает с IAM-сервисом идентификации и управления доступом от Google Cloud (Identity and Access Management).

Администрирование кластера HBase

Код курса
HBASE
Ближайшая дата курса
в любое время
Продолжительность
32 ак.часов
Стоимость обучения
96 000

Подводя итог сравнению рассматриваемых NoSQL-хранилищ данных, оценим их по следующим критериям:

  • краткое описание;
  • модель хранения данных;
  • зрелость (год выпуска);
  • открытость исходного кода;
  • язык реализации;
  • поддерживаемые операционные системы;
  • поддерживаемые языки разработки;
  • схема и типизация данных;
  • поддержка ANSI SQL;
  • язык запросов, API и протоколы доступа к данным;
  • поддержка хранимых процедур и триггеров;
  • методы партиционирования и репликации данных;
  • поддержка вычислительной модели MapReduce;
  • поддержка внешних ключей;
  • индексация данных;
  • поддержка ACID-требованиям к транзакциям и методы обеспечения консистентности данных;
  • хранение данных в оперативной памяти;
  • политики безопасности;
  • варианты использования.

Оформим это сравнение в виде таблицы.

Критерий

Apache HBase

Google Bigtable

краткое описание

Проект фонда Apache Software Foundation, колоночно-ориентированная NoSQL-СУБД, которая работает поверх HDFS и обеспечивает возможности Google BigTable для Hadoop

Сервис СУБД для больших данных от Google

модель хранения данных

Wide column store

·        Key-value store

·        Wide column store

зрелость (год выпуска)

2008

Существует с 2005 года, для общего доступа с 2015

открытость исходного кода

Открытый исходный код (лицензия open source от Apache 2.0)

Нет, коммерческий продукт

язык реализации

Java

неизвестен

поддерживаемые операционные системы

Linux, Unix и Windows с Cygwin (UNIX-подобная среда и CLI для интеграции приложений, данных и ресурсов Windows с приложениями, данными и ресурсами UNIX)

Операционные системы в Google Cloud

поддерживаемые языки разработки

C, C#, C++, Groovy, Java, PHP, Python, Scala

C#, C++, Go, Java, JavaScript (Node.js), Python

схема и типизация данных

Изначально нет схемы, возможна поддержка пользовательской схемы данных. Можно реализовать собственные типы данных и AVRO (бинарный строковый формат)

Изначально нет схемы

поддержка ANSI SQL

нет

нет

язык запросов, API и протоколы доступа к данным

Собственный язык запросов, Java API, RESTful HTTP API, Thrift

gRPC, HappyBase (Python-библиотека), Java API совместимый с HBase

поддержка хранимых процедур и триггеров

Да, хранимые процедуры в виде Java-сопроцессоров

Нет

методы партиционирования и репликации данных

Шардирование, репликация с несколькими источниками и репликация источник-реплика

Шардирование, внутренняя репликация в Colossus и региональная репликация между двумя кластерами в разных зонах

поддержка вычислительной модели MapReduce

Да

Да

поддержка внешних ключей

нет

 

индексация данных

Нет вторичной индексации

 

поддержка ACID-требованиям к транзакциям и методы обеспечения консистентности данных

Согласованность данных в конечном счете, ACID на уровне строки (в миллионах столбцов)

Немедленная согласованность для одного кластера, согласованность в конечном счете для двух или более реплицированных кластеров

хранение данных в оперативной памяти

поддерживается

нет

политики безопасности

ACL-списки, RBAC и ABAC с помощью Apache Ranger

Права доступа для пользователей, групп и ролей на основе Google IAM

варианты использования

Управление системами обмена сообщениями, хранение огромных объемов быстро изменяющихся данных. Подходит для аналитики больших данных в реальном времени

Аналитика больших данных в реальном времени с использованием других сервисов Google Cloud

 

Таким образом, выбор между Apache HBase и Google BigTable сводится к поиску компромисса между стоимостью развертывания и эксплуатации: коммерческую облачную СУБД легче взять в работу, переложив заботы об администрировании кластера на плечи Cloud-провайдера. Пример такого сценария мы рассматривали в этом кейсе. Однако, если необходимы специфические расширения и тонкая настройка хранилища данных в своей инфраструктуре с возможностью выполнить это силами собственных ИТ-специалистов, HBase будет более оптимальным вариантом.

Узнайте больше подробностей про администрирование и эксплуатацию Apache HBase и других компонентов экосистемы Hadoop для хранения и аналитики больших данных на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:

Я даю свое согласие на обработку персональных данных и соглашаюсь с политикой конфиденциальности.

Источники

  1. https://cloud.google.com/bigtable/docs/hbase-differences
  2. https://db-engines.com/en/system/Google+Cloud+Bigtable%3BHBase