Интерфейс командной строки ZooKeeper (CLI) используется для взаимодействия с ансамблем ZooKeeper в целях разработки. Это полезно для отладки и обхода различных опций.
Для выполнения операций ZooKeeper CLI сначала включите сервер ZooKeeper ( «bin / zkServer.sh start» ), а затем клиент ZooKeeper ( «bin / zkCli.sh» ). После запуска клиента вы можете выполнить следующую операцию:
- Создайте znodes
- Получить данные
- Следите за изменениями
- Установить данные
- Создавайте детей Знода
- Список детей знода
- Проверить состояние
- Удалить / Удалить узел
Теперь давайте рассмотрим приведенную выше команду одну за другой с примером.
Создать Znodes
Создайте znode с указанным путем. Аргумент flag указывает, будет ли созданный znode эфемерным, постоянным или последовательным. По умолчанию все узлы являются постоянными.
-
Эфемерные узлы (флаг: e) будут автоматически удалены по истечении сеанса или при отключении клиента.
-
Последовательный znode гарантирует, что путь znode будет уникальным.
-
Ансамбль ZooKeeper добавит порядковый номер вместе с 10-значным заполнением к пути znode. Например, znode path / myapp будет преобразован в / myapp0000000001, а следующий порядковый номер будет / myapp0000000002 . Если флаги не указаны, то znode считается постоянным .
Эфемерные узлы (флаг: e) будут автоматически удалены по истечении сеанса или при отключении клиента.
Последовательный znode гарантирует, что путь znode будет уникальным.
Ансамбль ZooKeeper добавит порядковый номер вместе с 10-значным заполнением к пути znode. Например, znode path / myapp будет преобразован в / myapp0000000001, а следующий порядковый номер будет / myapp0000000002 . Если флаги не указаны, то znode считается постоянным .
Синтаксис
create /path /data
Образец
create /FirstZnode “Myfirstzookeeper-app”
Выход
[zk: localhost:2181(CONNECTED) 0] create /FirstZnode “Myfirstzookeeper-app” Created /FirstZnode
Чтобы создать последовательный znode , добавьте флаг -s, как показано ниже.
Синтаксис
create -s /path /data
Образец
create -s /FirstZnode second-data
Выход
[zk: localhost:2181(CONNECTED) 2] create -s /FirstZnode “second-data” Created /FirstZnode0000000023
Чтобы создать Ephemeral Znode , добавьте флаг -e, как показано ниже.
Синтаксис
create -e /path /data
Образец
create -e /SecondZnode “Ephemeral-data”
Выход
[zk: localhost:2181(CONNECTED) 2] create -e /SecondZnode “Ephemeral-data” Created /SecondZnode
Помните, что когда клиентское соединение потеряно, эфемерный znode будет удален. Вы можете попробовать это, выйдя из ZooKeeper CLI и затем снова открыв CLI.
Получить данные
Он возвращает связанные данные znode и метаданные указанного znode. Вы получите информацию, например, когда данные были изменены в последний раз, где они были изменены, а также информацию о данных. Этот CLI также используется, чтобы назначить часы, чтобы показать уведомление о данных.
Синтаксис
get /path
Образец
get /FirstZnode
Выход
[zk: localhost:2181(CONNECTED) 1] get /FirstZnode “Myfirstzookeeper-app” cZxid = 0x7f ctime = Tue Sep 29 16:15:47 IST 2015 mZxid = 0x7f mtime = Tue Sep 29 16:15:47 IST 2015 pZxid = 0x7f cversion = 0 dataVersion = 0 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 22 numChildren = 0
Чтобы получить доступ к последовательному znode, вы должны ввести полный путь к znode.
Образец
get /FirstZnode0000000023
Выход
[zk: localhost:2181(CONNECTED) 1] get /FirstZnode0000000023 “Second-data” cZxid = 0x80 ctime = Tue Sep 29 16:25:47 IST 2015 mZxid = 0x80 mtime = Tue Sep 29 16:25:47 IST 2015 pZxid = 0x80 cversion = 0 dataVersion = 0 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 13 numChildren = 0
Часы
Наблюдения показывают уведомление, когда указанные дочерние данные znode или znode изменяются. Вы можете установить часы только в команде get .
Синтаксис
get /path [watch] 1
Образец
get /FirstZnode 1
Выход
[zk: localhost:2181(CONNECTED) 1] get /FirstZnode 1 “Myfirstzookeeper-app” cZxid = 0x7f ctime = Tue Sep 29 16:15:47 IST 2015 mZxid = 0x7f mtime = Tue Sep 29 16:15:47 IST 2015 pZxid = 0x7f cversion = 0 dataVersion = 0 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 22 numChildren = 0
Вывод похож на обычную команду get , но он будет ждать изменений znode в фоновом режиме. <Начните здесь>
Установить данные
Установите данные указанного znode. Когда вы закончите эту операцию установки, вы можете проверить данные с помощью команды get CLI.
Синтаксис
set /path /data
Образец
set /SecondZnode Data-updated
Выход
[zk: localhost:2181(CONNECTED) 1] get /SecondZnode “Data-updated” cZxid = 0x82 ctime = Tue Sep 29 16:29:50 IST 2015 mZxid = 0x83 mtime = Tue Sep 29 16:29:50 IST 2015 pZxid = 0x82 cversion = 0 dataVersion = 1 aclVersion = 0 ephemeralOwner = 0x15018b47db00000 dataLength = 14 numChildren = 0
Если вы определили опцию watch в команде get (как в предыдущей команде), то результат будет похож, как показано ниже —
Выход
[zk: localhost:2181(CONNECTED) 1] get /FirstZnode “Mysecondzookeeper-app” WATCHER: : WatchedEvent state:SyncConnected type:NodeDataChanged path:/FirstZnode cZxid = 0x7f ctime = Tue Sep 29 16:15:47 IST 2015 mZxid = 0x84 mtime = Tue Sep 29 17:14:47 IST 2015 pZxid = 0x7f cversion = 0 dataVersion = 1 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 23 numChildren = 0
Создать Детей / Подзнание
Создание детей похоже на создание новых узлов. Единственное отличие состоит в том, что путь дочернего znode будет также иметь родительский путь.
Синтаксис
create /parent/path/subnode/path /data
Образец
create /FirstZnode/Child1 firstchildren
Выход
[zk: localhost:2181(CONNECTED) 16] create /FirstZnode/Child1 “firstchildren” created /FirstZnode/Child1 [zk: localhost:2181(CONNECTED) 17] create /FirstZnode/Child2 “secondchildren” created /FirstZnode/Child2
Список детей
Эта команда используется для отображения и отображения дочерних элементов znode.
Синтаксис
ls /path
Образец
ls /MyFirstZnode
Выход
[zk: localhost:2181(CONNECTED) 2] ls /MyFirstZnode [mysecondsubnode, myfirstsubnode]
Проверить состояние
Статус описывает метаданные указанного узла. Он содержит такие сведения, как метка времени, номер версии, ACL, длина данных и дочерний узел.
Синтаксис
stat /path
Образец
stat /FirstZnode
Выход
[zk: localhost:2181(CONNECTED) 1] stat /FirstZnode cZxid = 0x7f ctime = Tue Sep 29 16:15:47 IST 2015 mZxid = 0x7f mtime = Tue Sep 29 17:14:24 IST 2015 pZxid = 0x7f cversion = 0 dataVersion = 1 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 23 numChildren = 0
Удалить Znode
Удаляет указанный znode и рекурсивно все его дочерние элементы. Это произойдет, только если такой znode доступен.
Синтаксис
rmr /path
Образец
rmr /FirstZnode
Выход
[zk: localhost:2181(CONNECTED) 10] rmr /FirstZnode [zk: localhost:2181(CONNECTED) 11] get /FirstZnode Node does not exist: /FirstZnode
Команда удаления (удаления / пути) аналогична команде удаления , за исключением того, что она работает только на узлах без дочерних элементов.