HBase: Как работает репликация?

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

Как я понял концепцию HBase, при чтении значений сначала запрашивается мастер HBase для (должно быть более одного) RegionServer, предоставляющего данные. Затем я могу выдавать запросы на чтение и запись без изобретения мастера. Как может работать репликация?

  • Как HBase обеспечивает согласованность?
  • Как внутренние операции записи?
  • Делает блок операций записи до тех пор, пока не будут записаны все реплики (= > синхронная репликация). Если да, кто управляет этим переводом?
  • Как HDFS входит в игру?

Я уже читал BigTable-Paper и искал документы, но я больше не нашел информации об архитектуре HBase.

Спасибо!

Ответ 1

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

Обычно регистранторы размещаются с узлами данных. Все записи данных в HDFS переходят к локальному node, если возможно, другому node на той же стойке, а другой node на другой стойке (с учетом коэффициента репликации 3 в HDFS). Таким образом, сервер области, в конечном итоге, получит все свои данные, поданные с локального сервера.

Что касается блокировки: единственный блок до тех пор, пока WAL (журнал записи вперед) не будет сброшен на диск. Это гарантирует, что данные не будут потеряны, так как журнал всегда может быть воспроизведен. Обратите внимание, что устаревшая версия hbase этого не разработала, потому что HDFS не поддерживала долговременную операцию добавления до недавнего времени. На данный момент мы находимся в странном состоянии, поскольку нет официального релиза Apache Hadoop, который поддерживает как append, так и HBase. Тем временем вы можете либо применить патч append самостоятельно, либо использовать дистрибутив Cloudera (рекомендуется).

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