В сегодняшнем посте давайте обсудим архитектуру HBase. Давайте освежим наши основы HBase, прежде чем углубляться в архитектуру HBase.
команда java для завершения программы
HBase - Основы:
HBase - это распределенное, нереляционное, версионное, многомерное, ориентированное на столбцы хранилище с открытым исходным кодом, NoSQL, созданное по образцу Google BigTable, работающего поверх HDFS. «NoSQL» - это широкий термин, означающий, что база данных не является СУБД, которая поддерживает SQL в качестве основного языка доступа. Но существует много типов баз данных NoSQL, и Berkeley DB является хорошим примером локальной базы данных NoSQL, тогда как HBase - это очень распределенная база данных.
HBase предоставляет все возможности Google BigTable. Он начался как проект Powerset по обработке огромных объемов данных для поиска на естественном языке. Он был разработан в рамках проекта Apache Hadoop и работает поверх HDFS (распределенная файловая система Hadoop). Он предоставляет отказоустойчивые способы хранения больших объемов разреженных данных. HBase на самом деле больше «хранилище данных», чем «база данных», поскольку в нем отсутствуют многие функции, доступные в СУБД, такие как типизированные столбцы, вторичные индексы, триггеры, расширенные языки запросов и т. Д.
В базах данных, ориентированных на столбцы, таблица данных хранится как разделы столбцов данных, а не как строки данных. Модель данных колоночной базы данных состоит из имени таблицы, ключа строки, семейства столбцов, столбцов, отметки времени. При создании таблиц в HBase строки будут однозначно идентифицироваться с помощью ключей строк и отметки времени. В этой модели данных семейство столбцов является статическим, а столбцы - динамическими. Теперь давайте посмотрим на архитектуру HBase.
Когда переходить на HBase?
HBase - хороший вариант только при наличии сотен миллионов или миллиардов строк. HBase также может использоваться в некоторых местах при рассмотрении перехода от РСУБД к HBase в качестве полной модернизации, а не порта. Другими словами, HBase не оптимизирован для классических транзакционных приложений или даже для реляционной аналитики. Это также не полная замена HDFS при выполнении больших пакетов MapReduce. Тогда почему вы должны пойти на HBase ?? Если ваше приложение имеет схему переменных, в которой каждая строка немного отличается, вам следует взглянуть на HBase.
Архитектура HBase:
На следующем рисунке четко объясняется архитектура HBase.
как написать одноэлементный класс в java
В HBase есть три основных компонента: Мастер, сервер региона и хранитель зоопарка . Остальные компоненты Memstore, HFile и WAL.
Поскольку HBase работает поверх HDFS, он использует архитектуру Master-Slave, в которой HMaster будет главным узлом, а серверы региона - подчиненными узлами. Когда клиент отправляет запрос на запись, HMaster получает этот запрос и пересылает его соответствующему серверу региона.
Сервер региона:
Это система, которая действует аналогично узлу данных. Когда сервер региона (RS) получает запрос на запись, он направляет запрос в конкретный регион. Каждый регион хранит набор строк. Строки данных могут быть разделены на несколько семейств столбцов (CF). Данные конкретного CF хранятся в HStore, который состоит из Memstore и набора HFiles.
Чем занимается Memstore?
Memstore отслеживает все журналы операций чтения и записи, которые были выполнены на сервере этого конкретного региона. Исходя из этого, мы можем сказать, что действует аналогично узлу имени в Hadoop. Memstore - это хранилище в памяти, поэтому Memstore использует хранилище в памяти каждого узла данных для хранения журналов. При достижении определенных пороговых значений данные Memstore сбрасываются в HFile.
Ключевой целью использования Memstore является необходимость хранить данные в DFS, упорядоченные по ключу строки. Поскольку HDFS предназначена для последовательного чтения / записи, без возможности модификации файлов, HBase не может эффективно записывать данные на диск по мере их получения: записанные данные не будут отсортированы (когда входные данные не отсортированы), что означает, что они не будут оптимизированы для будущего. поиск. Чтобы решить эту проблему, буферы HBase последними полученными данными в памяти (в Memstore) «сортируют» их перед сбросом, а затем записывают в HDFS, используя быструю последовательную запись. Следовательно, HFile содержит список отсортированных строк.
Каждый раз, когда происходит сброс Memstore, для каждого CF создается один H-файл, и частые сбросы могут создавать тонны H-файлов. Так как во время чтения HBase придется смотреть много HFiles, скорость чтения может пострадать. Для предотвращения открытия слишком большого количества HFiles и снижения производительности чтения используется процесс сжатия HFiles. HBase будет периодически (при достижении определенных настраиваемых пороговых значений) сжимать несколько меньших H-файлов в один большой. Очевидно, что чем больше файлов создается Memstore, тем больше работы (дополнительной нагрузки) для системы. Вдобавок к этому, хотя процесс сжатия обычно выполняется параллельно с обслуживанием других запросов, и когда HBase не успевает за сжатием HFiles (да, для этого тоже настроены пороговые значения), он снова блокирует запись на RS. Как мы обсуждали выше, это крайне нежелательно.
Мы не можем быть уверены, что данные будут постоянно храниться в Memstore. Предположим, что конкретный узел данных не работает. Тогда данные, хранящиеся в памяти этого узла данных, будут потеряны.
Чтобы решить эту проблему, когда запрос приходит от мастера, он также записывается в WAL. WAL - это не что иное, как Запись предварительных журналов который находится в постоянном хранилище HDFS. Теперь мы можем быть уверены, что даже если узел данных не работает, данные не будут потеряны, т.е. у нас есть копии всех действий, которые вы должны делать в WAL. Когда узел данных активен, он снова выполнит все действия. После завершения операции все удаляется из Memstore и WAL и записывается в HFile, чтобы убедиться, что у нас не заканчивается память.
Давайте возьмем простой пример: я хочу добавить строку 10, затем приходит этот запрос на запись, в котором говорится, что он передает все метаданные в Memstore и WAL. Как только эта конкретная строка записана в HFile, все в Memstore и WAL удаляются.
Работник зоопарка:
HBase интегрирован с Zoo Keeper. Когда я запускаю HBase, также запускается экземпляр Zoo keeper. Причина в том, что Zoo Keeper помогает нам отслеживать все серверы регионов, которые используются для HBase. Zoo keeper отслеживает, сколько существует региональных серверов, какие региональные серверы держат, от какого узла данных к какому узлу данных. Он отслеживает небольшие наборы данных, в которых отсутствует Hadoop. Это снижает накладные расходы на Hadoop, который отслеживает большую часть ваших метаданных. Следовательно, HMaster получает подробную информацию о серверах региона, фактически связываясь с Zoo keeper.
Есть вопрос к нам? Упомяните их в разделе комментариев, и мы свяжемся с вами.
system.exit (1) Java
Похожие сообщения: