Распределенные приложения для совместной работы включают набор процессов или агентов, взаимодействующих друг с другом для достижения общей цели. Они работают в глобальных средах практически без знания инфраструктуры и практически без контроля над доступными ресурсами. Кроме того, они должны упорядочивать и упорядочивать события, а также обеспечивать атомарность действий. Прежде всего, приложение должно защищать себя от ночных кошмаров, таких как состояние гонки, взаимоблокировки и частичные сбои.
ZooKeeper помогает создавать распределенное приложение, работая в качестве поставщика услуг координации.
Это надежно и доступно. Он предоставляет простой набор примитивов, на которых распределенные приложения могут создавать сервисы более высокого уровня для
- Синхронизация,
- Обслуживание конфигурации,
- Группы,
- Нейминг,
- Лидер выборов и другие нишевые нужды.
Что лежит под?
ZooKeeper поддерживает общее иерархическое пространство имен, смоделированное по стандартным файловым системам. Пространство имен состоит из регистров данных, называемых znodes. Они похожи на файлы и каталоги.
Примечание: Znodes хранит данные в памяти в первую очередь, с сохранением резервной копии на диске для надежности. Это означает, что все данные, которые znodes может хранить, должны помещаться в память, следовательно, они должны быть маленькими, не более 1 МБ. С другой стороны, это означает высокую пропускную способность и низкую задержку.
Znodes идентифицируются уникальными абсолютными путями, которые являются символами Unicode, разделенными символом «/». Чтобы помочь достичь уникальности, ZooKeeper предоставляет последовательные znodes, где глобально поддерживаемый порядковый номер будет добавлен ZooKeeper к путям, т.е. путь « / zoo-1 / tiger / white- » может быть назначен с последовательностью, скажем, 5, и станет « / зоопарк-1 / тигр / белый-5 ”.
- Клиент может создать znode, сохранить до 1 МБ данных и связать столько дочерних узлов, сколько ему нужно.
- Доступ к данным туда и обратно в znode всегда атомный . Либо данные читаются и / или записываются полностью, либо они терпят неудачу.
- Нет доступных переименований и семантики добавления.
- Каждый znode имеет список контроля доступа (ACL), который ограничивает, кто что может делать.
- Znodes поддерживает номера версий для изменений данных, ACL-изменений и временных отметок , чтобы разрешить проверки кэша и скоординированные обновления.
Знодес может быть одного из двух типов: эфемерный и постоянный . После установки тип не может быть изменен.
- Эфемерные znodes удаляются ZooKeeper, когда сессия создания клиента закрывается, в то время как постоянные znodes остаются до тех пор, пока они не будут удалены явно.
- Эфемерные злодеи не могут иметь детей.
- Оба типа узлов доступны для всех клиентов, имеющих право на использование политики ACL.
Вверх и работает
Уже достаточно литературы по установке ZooKeeper на Linux. Итак, я собираюсь сосредоточиться на том, как установить ZooKeeper на компьютерах с Windows.
- Загрузите и установите Cygwin. http://www.cygwin.com/
- Загрузите стабильную версию ZooKeeper. http://hadoop.apache.org/zookeeper/releases.html
- Разархивируйте ZooKeeper в какой-нибудь каталог, скажем, D: / iLabs /zookeeper-3.3.1
- Добавьте новую переменную среды ZOOKEEPER_INSTALL и укажите ее в D: /iLabs/zookeeper-3.3.1
- Отредактируйте переменную PATH и добавьте к ней $ ZOOKEEPER_INSTALL / bin .
- Теперь запустите 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.