Роли HBase и ZooKeeper в Hadoop?

Я установил кластер Hadoop single node на моем компьютере Ubuntu и смог запустить NameNode, datanode и т.д. Теперь мне нужно установить HBase и Zookeeper. Но я не знаю, что это такое. Ребята могли бы дать мне краткое описание этих инструментов.

Спасибо

Ответ 1

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

HBase - это хранилище данных NoSQL, которое работает поверх существующего кластера Hadoop (HDFS). Он предоставляет вам возможности, такие как случайные, чтение/запись в режиме реального времени, в которых HDFS не является FS. Поскольку это хранилище данных NoSQL, оно не соответствует соглашениям и терминологиям SQL. HBase обеспечивает хороший набор API (включая JAVA и Thrift). Наряду с этим HBase также обеспечивает бесшовную интеграцию с картой MapReduce. Но, наряду со всеми этими преимуществами HBase, вы должны помнить об этом, что случайное чтение-запись выполняется быстро, но всегда имеет дополнительные накладные расходы. Поэтому подумайте, прежде чем принимать какое-либо решение.

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

HBase полностью полагается на Zookeeper. HBase предоставляет вам возможность использовать встроенный Zookeeper, который будет запущен при запуске HBAse. Но это плохо, если вы работаете над производственным кластером. В таких сценариях всегда хорошо иметь выделенный кластер Zookeeper и интегрировать его с кластером HBase.

Примечание. В вашем ZK Quorum всегда должно быть нечетное число узлов.

НТН

Ответ 2

Обзор:

Zookeeper. Короче говоря, zookeeper - это инструмент настройки и управления распределенным приложением (кластером), а он выходит независимо от HBase. Из документов:

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

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

  • Главный сервер - главный сервер (HMaster) координирует кластер и выполняет административные операции, такие как присвоение регионов и балансировки нагрузок.
  • Серверы региона - регион серверы выполняют настоящую работу. Подмножество данных каждой таблицы обрабатывается каждым региональным сервером. Клиенты разговаривают с региональными серверами для доступа к данным в HBase.

Соединение между HBase и Zookeeper:

Распределенная HBase полностью полагается на Zookeeper (для конфигурации кластера и управления). В Apache HBase ZooKeeper координирует, обменивает и разделяет состояния между Masters и RegionServers. HBase имеет политику проектирования использования ZooKeeper только для временных данных (то есть для координации и государственной коммуникации). Таким образом, если данные HBases ZooKeeper удалены, на них влияют только операции переходного процесса - данные могут продолжаться и записываться в/из HBase.

После запуска HBase вы можете проверить запущенные процессы с помощью команды jps:

$ jps

команда отобразит все java-процессы на машине (сам HBase - приложение Java) - вероятный вывод (в случае простой автономной настройки HBase) должен быть:

62019 Jps
61098 HMaster        
61233 HRegionServer     
61003 HQuorumPeer

Технически говоря: По умолчанию HBase управляет самим zookeeper, т.е. запускает и останавливает кворум zookeeper (кластер узлов zookeeper), когда мы запускаем и останавливаем HBase - чтобы проверить, что параметры смотрят на файл conf/hbase-evn.sh (в вашем каталоге hbase) должна быть строка:

export HBASE_MANAGES_ZK=true

После установки всего, что нам нужно сделать, установите следующие директивы в conf/hbase-site.xml - из документации:

 <configuration>
    ...
    <property>
      <name>hbase.zookeeper.property.clientPort</name>
      <value>2181</value>
      <description> The port at which the clients will connect.
      </description>
    </property>
    <property>
      <name>hbase.zookeeper.quorum</name>
      <value>rs1.example.com,rs2.example.com,rs3.example.com,rs4.example.com,rs5.example.com</value>
      <description>Comma separated list of servers in the ZooKeeper Quorum.
      For example, "host1.mydomain.com,host2.mydomain.com,host3.mydomain.com".
      By default this is set to localhost for local and pseudo-distributed modes
      of operation. For a fully-distributed setup, this should be set to a full
      list of ZooKeeper quorum servers. If HBASE_MANAGES_ZK is set in hbase-env.sh
      this is the list of servers which we will start/stop ZooKeeper on.
      </description>
    </property>
    <property>
      <name>hbase.zookeeper.property.dataDir</name>
      <value>/usr/local/zookeeper</value>
      <description>Property from ZooKeeper config zoo.cfg.
      The directory where the snapshot is stored.
      </description>
    </property>
    ...
  </configuration>