Статьи

ZooKeeper Primer

Распределенные приложения для совместной работы включают набор процессов или агентов, взаимодействующих друг с другом для достижения общей цели. Они работают в глобальных средах практически без знания инфраструктуры и практически без контроля над доступными ресурсами. Кроме того, они должны упорядочивать и упорядочивать события, а также обеспечивать атомарность действий. Прежде всего, приложение должно защищать себя от ночных кошмаров, таких как состояние гонки, взаимоблокировки и частичные сбои.

ZooKeeper помогает создавать распределенное приложение, работая в качестве поставщика услуг координации.

Это надежно и доступно. Он предоставляет простой набор примитивов, на которых распределенные приложения могут создавать сервисы более высокого уровня для

  • Синхронизация,
  • Обслуживание конфигурации,
  • Группы,
  • Нейминг,
  • Лидер выборов и другие нишевые нужды.

Что лежит под?

ZooKeeper поддерживает общее иерархическое пространство имен, смоделированное по стандартным файловым системам. Пространство имен состоит из регистров данных, называемых znodes. Они похожи на файлы и каталоги.

Примечание: Znodes хранит данные в памяти в первую очередь, с сохранением резервной копии на диске для надежности. Это означает, что все данные, которые znodes может хранить, должны помещаться в память, следовательно, они должны быть маленькими, не более 1 МБ. С другой стороны, это означает высокую пропускную способность и низкую задержку.

Znodes идентифицируются уникальными абсолютными путями, которые являются символами Unicode, разделенными символом «/». Чтобы помочь достичь уникальности, ZooKeeper предоставляет последовательные znodes, где глобально поддерживаемый порядковый номер будет добавлен ZooKeeper к путям, т.е. путь « / zoo-1 / tiger / white- » может быть назначен с последовательностью, скажем, 5, и станет « / зоопарк-1 / тигр / белый-5 ”.

  1. Клиент может создать znode, сохранить до 1 МБ данных и связать столько дочерних узлов, сколько ему нужно.
  2. Доступ к данным туда и обратно в znode всегда атомный . Либо данные читаются и / или записываются полностью, либо они терпят неудачу.
  3. Нет доступных переименований и семантики добавления.
  4. Каждый znode имеет список контроля доступа (ACL), который ограничивает, кто что может делать.
  5. Znodes поддерживает номера версий для изменений данных, ACL-изменений и временных отметок , чтобы разрешить проверки кэша и скоординированные обновления.

Знодес может быть одного из двух типов: эфемерный и постоянный . После установки тип не может быть изменен.

  1. Эфемерные znodes удаляются ZooKeeper, когда сессия создания клиента закрывается, в то время как постоянные znodes остаются до тех пор, пока они не будут удалены явно.
  2. Эфемерные злодеи не могут иметь детей.
  3. Оба типа узлов доступны для всех клиентов, имеющих право на использование политики ACL.

Вверх и работает

Уже достаточно литературы по установке ZooKeeper на Linux. Итак, я собираюсь сосредоточиться на том, как установить ZooKeeper на компьютерах с Windows.

  1. Загрузите и установите Cygwin. http://www.cygwin.com/
  2. Загрузите стабильную версию ZooKeeper. http://hadoop.apache.org/zookeeper/releases.html
  3. Разархивируйте ZooKeeper в какой-нибудь каталог, скажем, D: / iLabs /zookeeper-3.3.1
  4. Добавьте новую переменную среды ZOOKEEPER_INSTALL и укажите ее в D: /iLabs/zookeeper-3.3.1
  5. Отредактируйте переменную PATH и добавьте к ней $ ZOOKEEPER_INSTALL / bin .
  6. Теперь запустите Cygwin.

Теперь запустите сервер ZooKeeper.

$ zkServer.sh start

Уч! Выкинуло ошибку:

ZooKeeper аварийно завершил работу, поскольку не смог найти файл конфигурации zoo.cfg , который он ожидает в
каталоге $ ZOOKEEPER_INSTALL / conf . Это стандартный файл свойств Java.

Создайте файл zoo.cfg в каталоге conf. Откройте его и добавьте следующие свойства:

# The number of milliseconds of each tick
tickTime=2000

# The directory where the snapshot is stored.
dataDir=D:/iLabs/zoo-data/

# The port at which the clients will connect
clientPort=2181

Вернитесь к Cygwin и снова введите ту же команду. На этот раз ZooKeeper должен загрузиться правильно.

Теперь подключитесь к ZooKeeper. Вероятно, вам следует открыть новое окно Cygwin и выполнить следующую команду.

$ zkCli.sh

Это подключится к вашему серверу ZooKeeper, работающему по умолчанию на localhost: 2181 , и откроет консоль zk .

Давайте создадим znode, скажем, / zoo-1

[zk: localhost: 2181 <CONNECTED> 1] create -s / zoo-1 «Привет, мир!» ноль

Флаг –s создает постоянный узел. Привет мир! это данные, которые вы назначаете znode (/ zoo-1), а null — это ACL.

Чтобы увидеть все узлы,

[zk: localhost: 2181 <CONNECTED> 2] ls /
[zoo-1, zookeeper]

Это означает, что на корневом уровне есть 2 узла, / zoo-1 и / zookeeper . ZooKeeper использует поддерево / zookeeper для хранения управляющей информации, например информации о квотах.

Для получения дополнительных команд введите help . Если вы хотите более подробно изучить инструменты командной строки, обратитесь по адресу : http://hadoop.apache.org/zookeeper/docs/current/zookeeperStarted.html.

продолжить чтение учебника >>