Учебное пособие по HBase: введение в HBase и пример использования в Facebook



В этом учебном блоге HBase вы узнаете, что такое HBase и его особенности. Он также охватывает тематическое исследование Facebook Messenger, чтобы понять преимущества HBase.

Как мы упоминали в нашем blog, HBase является неотъемлемой частью нашей экосистемы Hadoop. Итак, теперь я хотел бы провести вас через руководство по HBase, в котором я познакомлю вас с Apache HBase, а затем мы рассмотрим тематическое исследование Facebook Messenger. В этом учебном блоге HBase мы рассмотрим следующие темы:

Учебное пособие по Apache HBase: история

Давайте начнем с истории HBase и узнаем, как HBase эволюционировала за определенный период времени.





История HBase - Учебное пособие по HBase - Edureka

  • Apache HBase создан по образцу Google BigTable, который используется для сбора данных и обслуживания запросов для различных сервисов Google, таких как Карты, Финансы, Земля и т. Д.
  • Apache HBase начинался как проект компании Powerset for Natural Language Search, который обрабатывал большие и разреженные наборы данных.
  • Apache HBase был впервые выпущен в феврале 2007 года. Позже, в январе 2008 года, HBase стал подпроектом Apache Hadoop.
  • В 2010 году HBase стал проектом высшего уровня Apache.

Учебное пособие по HBase | Базы данных NoSQL | Эдурека



Узнав об истории Apache HBase, вам было бы интересно узнать, что такое Apache HBase? Пойдем дальше и посмотрим.

Учебное пособие по Apache HBase: Введение в HBase

HBase - это многомерный, распределенный, масштабируемый и База данных NoSQL написано на Java. HBase работает поверх HDFS (Распределенная файловая система Hadoop) и предоставляет Hadoop возможности, подобные BigTable. Он разработан для обеспечения отказоустойчивого способа хранения большой коллекции разреженных наборов данных.

Поскольку HBase обеспечивает высокую пропускную способность и низкую задержку, обеспечивая более быстрый доступ для чтения / записи к огромным наборам данных. Следовательно, HBase - это выбор для приложений, которым требуется быстрый и произвольный доступ к большим объемам данных.



Он обеспечивает сжатие, операции в памяти и фильтры Блума (структура данных, которая сообщает, присутствует ли значение в наборе или нет) для выполнения требований быстрого и случайного чтения-записи.

Давайте разберемся с этим на примере: Реактивный двигатель генерирует различные типы данных от различных датчиков, таких как датчик давления, датчик температуры, датчик скорости и т. Д., Которые указывают на исправность двигателя. Это очень полезно для понимания проблем и статуса рейса. Функция Continuous Engine Operations генерирует 500 ГБ данных за рейс, а количество рейсов составляет примерно 300 тысяч в день. Таким образом, Engine Analytics, применяемый к таким данным почти в реальном времени, может использоваться для упреждающей диагностики проблем и сокращения незапланированных простоев. Для этого требуется распределенная среда для хранения большого количества данных с быстрое случайное чтение и запись для обработки в реальном времени. Здесь на помощь приходит HBase. Я подробно расскажу о HBase Read and Write в своем следующем блоге на Архитектура HBase .

Как мы знаем, HBase - это база данных NoSQL. Итак, прежде чем больше разбираться в HBase, давайте сначала обсудим базы данных NoSQL и их типы.

Учебное пособие по Apache HBase: Базы данных NoSQL

NoSQL означает Не только SQL . Базы данных NoSQL моделируются таким образом, что они могут представлять данные, отличные от табличных форматов, unkile реляционных баз данных. Он использует разные форматы для представления данных в базах данных, и, следовательно, существуют разные типы баз данных NoSQL в зависимости от формата их представления. В большинстве баз данных NoSQL доступность и скорость важнее согласованности. Теперь давайте продвинемся вперед и разберемся с различными типами баз данных NoSQL и их форматами представления.

Хранилища ключей и значений:

Это база данных без схемы, которая содержит ключи и значения. Каждый ключ указывает на значение, которое представляет собой массив байтов, может быть строкой, BLOB, XML и т. Д., Например. Lamborghini является ключевым и может указывать на ценность Gallardo, Aventador, Murciélago, Reventón, Diablo, Huracán, Veneno, Centenario и т. Д.

Key-Value хранит базы данных: Aerospike, Couchbase, Dynamo, FairCom c-treeACE, FoundationDB, HyperDex, MemcacheDB, MUMPS, Oracle NoSQL Database, OrientDB, Redis, Riak, Berkeley DB.

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

Хранилища 'ключ-значение' хорошо обрабатывают размер и хорошо справляются с обработкой постоянного потока операций чтения / записи с низкой задержкой. Это делает их идеальными дляМагазин предпочтений и профилей пользователей,Рекомендации по продуктам, последние товары, просматриваемые на веб-сайте розничного продавца, для получения рекомендаций по продуктам для будущих клиентовВ результате покупательских привычек, связанных с рекламным обслуживанием, для каждого покупателя в режиме реального времени создаются индивидуальные объявления, купоны и т. Д.

Ориентированный на документ :

Он следует той же паре ключ-значение, но частично структурирован, как XML, JSON, BSON. Эти структуры считаются документами.

Базы данных на основе документов: Apache CouchDB, Clusterpoint, Couchbase, DocumentDB, HyperDex, IBM Domino, MarkLogic, MongoDB, OrientDB, Qizx, RethinkDB.

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

Поскольку документ поддерживает гибкую схему, быстрое чтение, запись и разделение делают его подходящим для создания пользовательских баз данных в различных сервисах, таких как твиттер, веб-сайты электронной коммерции и т. Д.

Ориентировано на столбец:

В этой базе данных данные хранятся в ячейках, сгруппированных в столбцы, а не в строки. Столбцы логически сгруппированы в семейства столбцов, которые могут быть созданы во время определения схемы или во время выполнения.

Эти типы баз данных хранят всю ячейку, соответствующую столбцу, как непрерывную запись на диске, что значительно ускоряет доступ и поиск.

Колоночные базы данных: HBase, Accumulo, Cassandra, Druid, Vertica.

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

Он поддерживает огромное хранилище и обеспечивает более быстрый доступ для чтения и записи через него. Это делает колоночные базы данных подходящими для хранения данных о поведении клиентов на веб-сайтах электронной коммерции, финансовых системах, таких как Google Finance и данные фондовых рынков, карты Google и т. Д.

Ориентировано на график:

Это идеальное гибкое графическое представление, используемое в отличие от SQL. Эти типы баз данных легко решают проблемы масштабируемости адреса, поскольку они содержат ребра и узел, которые могут быть расширены в соответствии с требованиями.

Базы данных на основе графов: AllegroGraph, ArangoDB, InfiniteGraph, Apache Giraph, MarkLogic, Neo4J, OrientDB, Virtuoso, Stardog.

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

Это в основном используется в обнаружении мошенничества, механизмах рекомендаций в реальном времени (в большинстве случаев в электронной коммерции), управлении основными данными (MDM), сетевых и ИТ-операциях, управлении идентификацией и доступом (IAM) и т. Д.

окончательно окончательно и завершить в java

HBase и Cassandra - две известные колоночные базы данных. Итак, теперь поговорим о более высоком уровне, давайте сравним и поймем архитектурные и рабочие различия между HBase и Cassandra.

Учебник HBase: HBase VS Cassandra

  • HBase основан на BigTable (Google), а Cassandra основан на DynamoDB (Amazon), изначально разработанном Facebook.
  • HBase использует инфраструктуру Hadoop (HDFS, ZooKeeper), в то время как Cassandra развивалась отдельно, но вы можете комбинировать Hadoop и Cassandra в соответствии с вашими потребностями.
  • HBase имеет несколько компонентов, которые взаимодействуют друг с другом, например HBase HMaster, ZooKeeper, NameNode, Region Severs. В то время как Cassandra - это единственный тип узла, в котором все узлы равны и выполняет все функции. Любой узел может быть координатором, что устраняет единую точку отказа.
  • HBase оптимизирован для чтения и поддерживает одиночную запись, что обеспечивает строгую согласованность. HBase поддерживает сканирование на основе диапазона, что ускоряет процесс сканирования. В то время как Cassandra поддерживает чтение одной строки, что в конечном итоге поддерживает согласованность.
  • Cassandra не поддерживает сканирование строк на основе диапазона, что замедляет процесс сканирования по сравнению с HBase.
  • HBase поддерживает упорядоченное разбиение, при котором строки семейства столбцов хранятся в порядке RowKey, тогда как в Casandra упорядоченное разбиение является проблемой. Благодаря разделению RowKey процесс сканирования в HBase выполняется быстрее, чем в Cassandra.
  • HBase не поддерживает балансировку нагрузки чтения, один региональный сервер обслуживает запрос на чтение, а реплики используются только в случае сбоя. В то время как Cassandra поддерживает балансировку нагрузки чтения и может читать одни и те же данные с разных узлов. Это может нарушить согласованность.
  • В теореме CAP (согласованность, доступность и допуск к разделению) HBase поддерживает согласованность и доступность, в то время как Cassandra фокусируется на доступности и допустимости разделения.


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

Учебное пособие по Apache HBase: особенности HBase

  • Атомарное чтение и запись: На уровне строк HBase обеспечивает атомарное чтение и запись. Это можно объяснить тем, что во время одного процесса чтения или записи все другие процессы не могут выполнять какие-либо операции чтения или записи.
  • Последовательное чтение и запись: HBase обеспечивает согласованное чтение и запись благодаря вышеуказанной функции.
  • Линейная и модульная масштабируемость: Поскольку наборы данных распределяются по HDFS, они могут линейно масштабироваться по различным узлам, а также модульно масштабироваться, поскольку они разделяются между различными узлами.
  • Автоматическое и настраиваемое сегментирование таблиц: Таблицы HBase распределены по кластерам, и эти кластеры распределены по регионам. Эти регионы и кластеры разделяются и перераспределяются по мере роста данных.
  • Простой в использовании Java API для клиентского доступа: Он предоставляет простой в использовании Java API для программного доступа.
  • Экономичный шлюз и REST-полнофункциональные веб-службы: Он также поддерживает Thrift и REST API для интерфейсов, отличных от Java.
  • Блокировать кэш и фильтры Bloom: HBase поддерживает блочный кэш и фильтры Блума для оптимизации запросов большого объема.
  • Автоматическая поддержка отказов: HBase с HDFS предоставляет WAL (журнал упреждающей записи) для кластеров, что обеспечивает автоматическую поддержку сбоев.
  • Сортированные клавиши-строки: Поскольку поиск выполняется по диапазону строк, HBase хранит ключи строк в лексикографическом порядке. Используя эти отсортированные ключи строк и временную метку, мы можем создать оптимизированный запрос.

Теперь, продвигаясь вперед в этом руководстве по HBase, позвольте мне рассказать вам, каковы варианты использования и сценарии, в которых можно использовать HBase, а затем я сравню HDFS и HBase.

Я хотел бы обратить ваше внимание на сценарии, в которых HBase лучше всего подходит.

Учебное пособие по HBase: где можно использовать HBase?

  • Мы должны использовать HBase там, где у нас есть большие наборы данных (миллионы или миллиарды строк и столбцов), и нам требуется быстрый, случайный доступ в реальном времени для чтения и записи данных.
  • Наборы данных распределены по различным кластерам, и нам нужна высокая масштабируемость для обработки данных.
  • Данные собираются из различных источников, и это либо частично структурированные, либо неструктурированные данные, либо их комбинация. С этим легко справиться с HBase.
  • Вы хотите хранить данные, ориентированные на столбцы.
  • У вас есть множество версий наборов данных, и вам нужно хранить их все.

Прежде чем перейти к тематическому исследованию мессенджера Facebook,позвольте мне рассказать вам, в чем разница между HBase и HDFS.

Учебник HBase: HBase VS HDFS

HDFS - это распределенная файловая система на основе Java, которая позволяет хранить большие данные на нескольких узлах в кластере Hadoop. Итак, HDFS - это базовая система хранения для хранения данных в распределенной среде. HDFS - это файловая система, а HBase - это база данных (похожая на NTFS и MySQL).

Поскольку как HDFS, так и HBase хранят любые данные (то есть структурированные, полуструктурированные и неструктурированные) в распределенной среде, давайте посмотрим на различия между файловой системой HDFS и HBase, базой данных NoSQL.

  • HBase обеспечивает доступ с малой задержкой к небольшим объемам данных в больших наборах данных, а HDFS обеспечивает операции с высокой задержкой.
  • HBase поддерживает произвольное чтение и запись, в то время как HDFS поддерживает WORM (однократная запись, многократное или многократное чтение).
  • Доступ к HDFS в основном или в основном осуществляется через задания MapReduce, в то время как доступ к HBase осуществляется через команды оболочки, Java API, REST, Avro или Thrift API.

HDFS хранит большие наборы данных в распределенной среде и использует пакетную обработку этих данных. Например. это поможет веб-сайту электронной коммерции хранить миллионы данных о клиентах в распределенной среде, которая росла в течение длительного периода времени (может быть 4–5 лет и более). Затем он использует пакетную обработку этих данных и анализирует поведение, модели и требования клиентов. Тогда компания могла узнать, какой продукт, покупатель в какие месяцы. Это помогает хранить архивные данные и выполнять их пакетную обработку.

В то время как HBase хранит данные в виде столбцов, где каждый столбец хранится вместе, поэтому чтение становится быстрее за счет обработки в реальном времени. Например. в аналогичной среде электронной коммерции хранятся миллионы данных о товарах. Таким образом, если вы ищете продукт среди миллионов продуктов, он оптимизирует процесс запроса и поиска, обеспечивая немедленный результат (или, можно сказать, в реальном времени). Подробный Архитектурное объяснение HBase , Я расскажу в своем следующем блоге.

Как мы знаем, HBase распространяется через HDFS, поэтому сочетание обоих дает нам прекрасную возможность использовать преимущества обоих в индивидуальном решении, как мы увидим в приведенном ниже примере использования мессенджера Facebook.

Учебное пособие по HBase: пример использования Facebook Messenger

Платформа обмена сообщениями Facebook перешел с Apache Cassandra на HBase в ноябре 2010 года.

Facebook Messenger объединяет сообщения, электронную почту, чат и SMS в диалог в реальном времени. Facebook пытался создать масштабируемую и надежную инфраструктуру для обработки множества этих сервисов.

В то время инфраструктура сообщений обслуживала более 350 миллионов пользователей, отправляющих более 15 миллиардов личных сообщений в месяц. Сервис чата поддерживает более 300 миллионов пользователей, которые отправляют более 120 миллиардов сообщений в месяц.

Наблюдая за использованием, они выяснили, что появились две общие модели данных:

  • Короткий набор временных данных, которые часто изменчивы
  • Постоянно растущий набор данных, к которым редко обращаются

Facebook хотел найти решение для хранения данных для этих двух моделей использования, и они начали исследование, чтобы найти замену существующей инфраструктуре сообщений.

Ранее, в 2008 году, они использовали базу данных с открытым исходным кодом, то есть Cassandra, которая представляет собой хранилище ключей и значений с конечной согласованностью, которое уже находилось в рабочей среде, обслуживая трафик для поиска по входящим сообщениям. Их команды прекрасно разбирались в использовании и управлении базой данных MySQL, поэтому переключение любой из технологий было для них серьезной проблемой.

Они потратили несколько недель на тестирование различных фреймворков, чтобы оценить кластеры MySQL, Apache Cassandra, Apache HBase и другие системы. В конечном итоге они выбрали HBase.

Поскольку MySQL не мог эффективно обрабатывать большие наборы данных, по мере роста индексов и наборов данных снижалась производительность. Они обнаружили, что Cassandra неспособна справиться со сложной схемой согласования их новой инфраструктуры сообщений.

Основными проблемами были:

  • Хранение больших наборов постоянно растущих данных из различных сервисов Facebook.
  • Требуется база данных, которая может эффективно обрабатывать ее.
  • Высокая производительность, необходимая для обслуживания миллионов запросов.
  • Постоянство хранения и производительности.

Рис.: Проблемы, с которыми сталкивается мессенджер Facebook

Для всех этих проблем Facebook придумал решение, то есть HBase. Facebook принял HBase для обслуживания мессенджера Facebook, чата, электронной почты и т. Д. Из-за его различных функций.

HBase обладает очень хорошей масштабируемостью и производительностью для этой рабочей нагрузки с более простой моделью согласованности, чем Cassandra. Хотя они нашли HBase наиболее подходящим с точки зрения их требований, таких как автоматическая балансировка нагрузки и переключение при отказе, поддержка сжатия, несколько сегментов на сервер и т. Д.

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

Рис.: HBase как решение для мессенджера Facebook

Приняв HBase, они также сосредоточились на передаче результатов обратно в сам HBase и начали тесно сотрудничать с сообществом Apache.

Поскольку сообщения принимают данные из разных источников, таких как SMS, чаты и электронные письма, они написали сервер приложений, который будет обрабатывать все решения для сообщения пользователя. Он взаимодействует с большим количеством других сервисов. Вложения хранятся в Haystack (который работает на HBase). Они также написали службу обнаружения пользователей поверх Apache ZooKeeper, которая взаимодействует с другими службами инфраструктуры для установления дружеских отношений, проверки учетной записи электронной почты, решений о доставке и решений о конфиденциальности.

Команда Facebook потратила много времени на подтверждение того, что каждая из этих служб является надежной, надежной и обеспечивает хорошую производительность для работы с системой обмена сообщениями в реальном времени.

Я надеюсь, что этот учебный блог HBase информативен и вам понравился. В этом блоге вы познакомились с основами HBase и его функциями.В моем следующем блоге , Я объясню архитектура HBase и работа HBase, что делает его популярным для быстрого и случайного чтения / записи.

Теперь, когда вы разобрались с основами HBase, ознакомьтесь с от Edureka, надежной компании по онлайн-обучению с сетью из более чем 250 000 довольных учащихся по всему миру. Учебный курс Edureka Big Data Hadoop Certification Training помогает учащимся стать экспертами в области HDFS, Yarn, MapReduce, Pig, Hive, HBase, Oozie, Flume и Sqoop, используя примеры использования в реальном времени в области розничной торговли, социальных сетей, авиации, туризма, финансов.

Есть вопрос к нам? Пожалуйста, укажите это в комментариях, и мы свяжемся с вами.