2016-08-02 3 views
0

Я начал изучать hbase, и я не понимаю, как он масштабируется линейно.Действительно ли hbase весит линейно?

Проблема в том, что перед установкой hbase у вас должен быть кластер hdfs. В кластере HDFS есть главный узел, который может быть только одним во всем кластере, поэтому он является узким местом. Конечно, мы можем запустить еще один главный узел (можно запустить только еще один главный узел), но он будет находиться в режиме ожидания. Как я понимаю, hbase использует кластер HDFS для хранения данных. Таким образом, для меня логично, что нет смысла запускать более одного Hmaster, потому что все запросы будут передаваться активному хозяину hdfs, производительность которого может пострадать, если у нас слишком много запросов.

Также я не понимаю, что нам нужно установить hbase на тех же узлах с помощью hdfs или отдельно. Каковы преимущества, если мы запускаем hbase отдельно от HDFS. Как для меня это логично установить Hbase кластер на один и те же узлы с HDFS, как в следующем примере:

HDFS active master - HMaster 
HDFS standby master - HMaster backup 
HDFS Data node - HRegion server 

для меня это наиболее логически структурировать, потому что, если мы отделим мастер HDFS от hmaster то вероятность потерять кластер hbase будет в два раза больше.

Я буду очень рад, если кто-то может поделиться информацией обо всех этих вещах. Потому что я действительно не понимаю, как hbase может линейно масштабироваться и как это работает с hdf.

+0

Вы можете объединить HDFS, что устраняет проблему с одним NN. Имейте в виду, что NN используется только для мета-операций (например, создать раздел/WAL), который hbase не делает много, если вы его правильно настроите (только вращайтесь на достаточно больших WAL, разделенных и компактных больших разделах). –

+0

Я попытался прочитать данные с узла данных в тот же момент, когда я отключил главный сервер hdfs, и это показало мне ошибку. Насколько я понимаю, когда мы читаем/пишем что-то из узлов данных, они сначала запрашивают главный узел для некоторой информации. Если главный узел мертв, мы не сможем работать с кластером. Возможно, я ошибаюсь, но это мое предположение. – Alexandr

+0

да, вы правы, но это не ухудшает масштабируемость, а только отказоустойчивость. Когда вы используете HA HDFS, у вас не будет этой проблемы. См. Https://hadoop.apache.org/docs/r2.7.1/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWithQJM.html –

ответ

1

Прежде всего, если вы хотите, вы можете установить HBase поверх любой поддерживаемой файловой системы. Это не обязательно использовать его на HDFS, но использовать его с HDFS дают преимущество это как taulrence Fault, репликация данных, контрольные суммы и т.д. Вот почему рекомендуется использовать HBase над HDFS

Кроме того, хотя есть узкое место namenode в hdfs, но это не влияет на эффективность HBase, потому что дело не в том, что каждая работа внутренней работы зависит от наменования hdf, например, серверы региона служат для чтения данных и записи. При доступе к данным клиенты взаимодействуют с сервером HBase RegionServers напрямую, в то время как назначение региона, операции DDL (создавать, удалять таблицы) обрабатываются процессом HBase Master. Это означает, что чтение и запись данных не зависит от создания и удаления таблицы.

Для получения более подробной информации о hdfs вы можете обратиться к https://www.mapr.com/blog/in-depth-look-hbase-architecture.

Также смотрите этот веб-семинар на HBase by lars george. https://m.youtube.com/watch?v=_HLoH_PgrLk

Надеюсь, что это очистит ваши сомнения.

+0

Спасибо за объяснение – Alexandr

+0

Добро пожаловать :-) @Alexandr –

Смежные вопросы