Zookeeper. Быстрый старт

Zookeeper – это централизованная служба для поддержки информации о конфигурации, именования, обеспечения распределённой синхронизации и предоставления групповых служб.
Свойства Zookeeper:
  • пространство ключей образует дерево (иерархию, подобную файловой системе);
  • значения могут содержаться в любом узле иерархии, а не только в листьях (как если бы файлы одновременно были бы и каталогами), узел иерархии называется znode;
  • между клиентом и сервером двунаправленная связь, следовательно, клиент может подписываться как изменение конкретного значения или части иерархии;
  • возможно создать временную пару ключ/значение, которая существует, пока клиент, её создавший, подключен к кластеру;
  • все данные должны помещаться в память;
  • устойчивость к выходу из строя некритического количества узлов кластера.

CLI Zookeeper

Интерфейс командной строки Zookeeper (CLI) используется для взаимодействия с Zookeeper в целях разработки. Это полезно для отладки и работы с различными опциями.
Чтобы выполнить операции CLI Zookeeper, сначала включите сервер Zookeeper:
/usr/hdp/current/zookeeper-server/bin/zkServer.sh start
Затем запустите клиент Zookeeper:
/usr/hdp/current/zookeeper-server/bin/zkCli.sh
Как только клиент запустится, вы сможете выполнить операции, представленные в таблице ниже.
ОперацияОписаниеСинтаксис
create
Создает новый znode (пару ключ/значение) и возвращает ключ. Кажется странным, что возвращается ключ, если он указывается как аргумент, но дело в том, что в Zookeeper в качестве ключа можно указать префикс и сказать, что znode последовательный, тогда к префиксу добавится выровненное число, и результат будет использоваться в качестве ключа. Гарантируется, что создавая последовательные znode с одним и тем же префиксом, ключи будут образовывать возрастающую последовательность. Аргумент flag указывает, будет ли созданный znode эфемерным, постоянным или последовательным. Эфемерный znode (флаг: e) будет автоматически удален по истечении сеанса или при отключении клиента. Если флаги не указаны, то znode считается постоянным. Последовательный - гарантируйте, что путь znode будет уникальнымcreate [-flag] /path /data
create "children"
Создание дочерних элементов аналогично созданию новых znodes. Единственная разница заключается в том, что путь дочернего znode будет иметь и родительский путьcreate /parent/path/subnode/path /data
get
Он возвращает связанные данные znode и метаданные указанного znode. Вы получите информацию, например, когда данные были изменены в последний раз, где они были изменены, и информацию о данных. Этот CLI также используется для назначения часов, чтобы показать уведомление о данныхget /path
set data
Установить данные указанного znodeset /path /data
ls
Эта команда используется для перечисления и отображения дочерних элементов znodels /path
check status
Статус описывает метаданные указанного znode. Он содержит такие сведения, как метка времени, номер версии, ACL, длина данных и дочерний znodestat /path
remove a znode
Удаляет указанный znode и рекурсивно все его дочерние элементы. Это произойдет только в том случае, если такой znode доступенrmr /path
watch
Наблюдатель показывает уведомление при изменении указанных данных znode или дочерних данных znode. Можно установить watch только в get. Вывод аналогичен обычной команде get, но она будет ждать изменений znode в фоновом режимеget /path watch 1

API Zookeeper

Используя API Zookeeper, приложение может подключаться, взаимодействовать, манипулировать данными, координировать и, наконец, отключаться от Zookeeper.
ОперацияОписаниеСинтаксис
Подключение к Zookeeper
Класс Zookeeper обеспечивает функциональность соединения через свой конструкторПодпись конструктора выглядит следующим образом − Zookeeper (String connectionString, int sessionTimeout, Watcher watcher). connectionString – строка подключения к сеансу. sessionTimeout - тайм-аут сеанса в миллисекундах. watcher - объект, реализующий интерфейс "наблюдатель". Zookeeper возвращает состояние соединения через объект watcher
Создание znode
Метод Create позволяет создать новый znode в Zookeeper. После компиляции и выполнения приложения в Zookeeper будет создан znode с указанными данными. Можно проверить это с помощью get команды CLI Zookeeper zk Cli.shСигнатура метода Create выглядит следующим образом - create (String path, byte [] data, List<ACL> acl, CreateMode create. path − путь znode. Например: /myapp1, / myapp2, /myapp1/mydata1, myapp2/mydata1/myanothersubdata, data − данные для хранения в указанном пути znode, acl - список управления доступом узла, createMode - тип узла, либо эфемерный, последовательный, либо оба
Проверка существования znode
Метод Exists позволяет проверить существование znode. Он возвращает метаданные, если указанный znode существуетСигнатура метода Exists выглядит следующим образом - exists(String path, boolean watcher). Path - путь, znode watcher - логическое значение для указания того, следует ли наблюдат за указанныим znode
Метод getData
Метод getData позволяет получить данные, вложенные в указанный znode и его статус. Приложение будет ждать дальнейшего уведомления от Zookeeper. Измените данные указанного znode с помощью команды set в Zookeeper CLI zkCli.shСигнатура метода getData выглядит следующим образом - getData(String path, Watcher watcher, Stat stat). path - путь znode, watcher − функция обратного вызова типа Watcher. Zookeeper будет уведомлять через обратный вызов Watcher, когда данные указанного znode изменятся. Это одноразовое уведомление. stat - возвращает метаданные znode
Метод setData
Метод setData для изменения данных, вложенных в указанный znode. Можно проверить с помощью get команды в CLI ZooKeeper, zk Cli.shСигнатура метода setData выглядит следующим образом - setData (String path, byte[] data, int version). path - путь znode, data - данные для хранения в указанном пути znode, version - текущая версия znode. ZooKeeper обновляет номер версии znode всякий раз, когда данные изменяются
Метод getChildren
Метод getChildren позволяет получить все подузлы конкретного znodeСигнатура метода getChildren выглядит следующим образом - getChildren(String path, Watcher watcher). path - путь znode, watcher - Zookeeper уведомит, когда znode будет удалён
Удалить znode
Метод delete для удаления указанного znodeСигнатура метода Delete выглядит следующим образом - delete (String path, int version). path - путь znode, version - текущая версия znode
Отключения от сервера Zookeeper
Закрыть соединениеМетод Close выглядит следующим образом - public void close() throws InterruptedException { zoo.close(); }
Предыдущий раздел
Быстрый старт
Следующий раздел
Нагрузочное тестирование
Была ли страница полезной?