Подтвердить что ты не робот

Зачем нам ZooKeeper в стеке Hadoop?

Я новичок в Hadoop/ZooKeeper. Я не понимаю цели использования ZooKeeper с Hadoop, является ли ZooKeeper записывать данные в Hadoop? Если нет, то почему мы используем ZooKeeper с Hadoop?

4b9b3361

Ответ 1

Hadoop 1.x не использует Zookeeper. HBase использует zookeeper даже в установках Hadoop 1.x.

Hadoop также принял Zookeeper, начиная с версии 2.0.

Цель Zookeeper - управление кластерами. Это соответствует общей философии * nix использования более мелких специализированных компонентов - поэтому компоненты Hadoop, которые хотят, чтобы возможности кластеризации полагались на Zookeeper для этого, а не разрабатывали свои собственные.

Zookeeper - это распределенное хранилище, которое предоставляет следующие гарантии (скопировано из Страница обзора Zookeeper):

  • Последовательная согласованность. Обновления от клиента будут применяться в чтобы они были отправлены.
  • Атомность - обновления либо успешно, либо потерпеть неудачу. Нет частичных результатов.
  • Единое системное изображение. Клиент увидит тот же вид сервиса независимо от того, какой сервер он подключает к.
  • Надежность. Как только обновление будет применено, оно будет сохраняться с этого времени вперед, пока клиент не перезапишет обновление.
  • Своевременность. Доступ к клиенту системы гарантированно будет в течение определенного времени.

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

Если вы собираетесь использовать ZooKeeper самостоятельно, я рекомендую вам взглянуть на куратор из Netflix, который упрощает его использование (например, они реализуют несколько рецептов из коробки)

Ответ 2

Zookeeper решает проблему надежной распределенной координации, а hasoop - распределенная система, правда?

Там есть отличная статья Paxos Algorithm, которую вы можете прочитать по этому вопросу.

Ответ 3

От страницы zookeeper:

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

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

От страницы hadoop:

В проекте Apache ™ Hadoop® разрабатывается программное обеспечение с открытым исходным кодом для надежных масштабируемых распределенных вычислений.

Программная библиотека Apache Hadoop - это структура, которая позволяет распределенную обработку больших наборов данных в кластерах компьютеров с использованием простых моделей программирования.

По вашему запросу:

Зачем нам ZooKeeper в стеке Hadoop?

Фактор привязки - распределенная обработка и высокая доступность.

например. Hadoop Namenode не работает.

Высокая доступность Hadoop разработана для активного Namenode и резервного режима Namenode для отказа от процесса. В любой момент времени вы не должны одновременно иметь двух мастеров (активных Namenodes).

Из документации документации Apache на HDFSHighAvailabilityWithQJM:

Для правильной работы кластера HA жизненно важно, чтобы только один из NameNodes был активным одновременно. В противном случае состояние пространства имен будет быстро расходиться между ними, рискуя потерями данных или другими неправильными результатами. Чтобы обеспечить это свойство и предотвратить так называемый "сплит-мозговой сценарий", JournalNodes будут когда-либо позволять одному NameNode быть писателем одновременно.

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

Zookeeper используется, чтобы избежать сценария Split-brain. Вы можете найти роль Zookeeper в следующем вопросе:

Как работает процесс отката Hadoop Namenode?