まず、展開と運用
1.1システム環境
展開と操作の前に、ほとんどのJavaのオープンソース製品については、常に私たちは、適切な環境を構築する必要があり、通常、2つの方法でオペレーティングシステムとJava環境が含まれています。このセクションでは、2つの部分で、オペレーティング・システムとJava環境を含む展開とオペレーティングシステム環境のZooKeeperのニーズを、説明しています。
1.1.1オペレーティングシステム
適切なオペレーティングシステムを - まず、あなたが選択する必要があります。幸いなことに、異なるプラットフォーム用のZooKeeperのサポートは、優れている今、このようなGNU / Linuxの、SunSolaris、Win32およびMacOSXのようにほとんどの主要なオペレーティングシステム上などで適切に実行することができます。
1.1.2 Java環境
それはJava環境を必要とし、あなたが1.6またはダウンロードすることができます動作環境をサポートしていますので、ZooKeeperのは、Javaで書かれ
たJavaの上記のバージョンを
第二に、スタンドアロンおよびクラスタモデル
2.1スタンドアロンモード
2.1.1のダウンロードと設定
アクセス飼育係のダウンロードは、アーカイブを解凍後にダウンロード。公式の安定版はダウンロードをお勧めします。
[変更] conf
の下のディレクトリzoo_sample.cfg
=> zoo.cfg
。注:飼育係は後者と呼ばれるデフォルトの設定ファイルを読み込み、変更する必要があります。
オープンzoo.cfg
、修正DATADIRは、独自のディレクトリを作成するように設定しました。
dataDir= /Users/pengweiwei/Downloads/zookeeper-3.4.14/data
オンとオフで実行2.1.2
binディレクトリに。あるいは環境変数を。
実行します。./zkServer.sh start
weiweideMacBook-Pro:bin pengweiwei$ ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /Users/pengweiwei/Downloads/zookeeper-3.4.14/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
閉じます:./zkServer.sh stop
2.2クラスタモード
2.2.1設定
クラスタ構成ファイル内の各マシンには、コンフィギュレーションに参加していzoo.cfg。クラスタモードでは、クラスタ全体で知覚クラスタニーズ内の各マシンは、複数のマシンで構成されているため、そのフォーマットで:server.id=host:port:port
server.1=192.168.1.1:2888:3888
server.2=192.168.1.2:2888:3888
server.3=192.168.1.3:2888:3888
ここで、IDはサーバID、クラスタ内のマシンのシリアル番号を識別するための機械をいいます。一方、ZooKeeperのは、各マシン上で、我々は(すなわちDATADIRパラメータを指定ディレクトリ)データディレクトリにMYIDファイルを作成する必要があり、ファイルの1行だけの内容で、かつ数であり、最初の行で、対応すること各マシンの数をSERVERID。
ZooKeeperの設計では、すべてのマシン上のクラスタzoo.cfgファイルの内容が一致している必要があります。だから、各マシンが同じ設定を共有できることを保証するために、このファイルを管理するためにSVNやGITを使用するのが最適です。
MYIDだけデジタルファイルサーバーIDという、前述しました。例えば、ファイルのMYID内容のserver.1は「1」であります 注、異なる内の各サーバーの確認MYIDデジタルファイルを作成し、どこで自分のマシンがzoo.cfgおよびサーバID =ホスト:.ポート:同じID値のポート。さらに、IDが1〜255の範囲。
他のマシンが設定されているのと同じ手順に従って、MYIDファイルをzoo.cfg。
そして、一つ一つが起動していました。コンプリート。
三、飼育係の使用
まず使用し./zkCli.sh
、クライアントでの接続を、追加のパラメータを指定するクライアント接続は、クラスタ化することができます./zkCli.sh -server ip:port
3.1作成
createコマンドを使用して、あなたはZooKeeperのノードを作成することができます。次のように使用方法は以下のとおりです。
create [-s] [-e] path data acl
前記は、-sまたは-e指定したノードの特性は次のとおりノード順次または一時。デフォルトでは、それは永続的なノードを作成するには、-sまたは-eパラメータを追加することなく、あります。
次のコマンドを実行します。
[zk: localhost:2181(CONNECTED) 11] create -e /tmp xiaoming
Created /tmp
上記のコマンドを実行した後、あなたは、ルートノードの下に/ tmpのZooKeeperのノードと呼ば作成し、ノードのデータ内容は、「暁明」です。また、最後のパラメータは、コマンドを作成し、アクセス制御なしで、デフォルトでは、アクセス制御に使用されるACL、です。ACLを約表示することができ
、システムのZooKeeperモデル(データモデル、ノード特性、バージョン、ウォッチャー、ACL)を理解します。
3.2読書
リードコマンドに関連付けられているが、LSはコマンドとsetコマンドが含まれます。
ZooKeeperのノードを指定された下のすべてのサブノードをリストするlsコマンドを使用します。もちろん、このコマンドは、指定されたノードのDirレベルのすべての子ノードを見ることができます。次のように使用方法は以下のとおりです。
ls path [watch]
ここで、パスはデータノード指定されたノード・パスを表します。
次のコマンドを実行します。
[zk: localhost : 2181(CONNECTED) 0] ls /
[zookeeper]
ZooKeeperのクラスタの最初の展開は、デフォルトのルートノード「/」今と呼ばれる/飼育係保持ノードがあります。
使用してコマンドを取得し、あなたはZooKeeperのノードを指定されたデータの内容や属性情報を取得することができます。次のように使用方法は以下のとおりです。
get path [watch]
次のコマンドを実行します。
[zk: localhost:2181(CONNECTED) 12] get /tmp
xiaoming
cZxid = 0x6
ctime = Sun Jan 26 20:12:04 CST 2020
mZxid = 0x6
mtime = Sun Jan 26 20:12:04 CST 2020
pZxid = 0x6
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x1000826c70a0001
dataLength = 8
numChildren = 0
3.3アップデート
setコマンドを使用して、指定したノードのデータ内容を更新することができます。次のように使用方法は以下のとおりです。
set path data [version]
これは、データが更新される新しいコンテンツです。なお、ZooKeeperの中に新しいバージョンのSETコマンドのパラメータがあり、データノードは概念のバージョンでは、このパラメータは、データ・バージョンのznodeが行われたに基づいているこの更新動作を指定するために使用されています。
次のコマンドを実行します。
[zk: localhost:2181(CONNECTED) 13] set /tmp xiaoli
cZxid = 0x6
ctime = Sun Jan 26 20:12:04 CST 2020
mZxid = 0x7
mtime = Sun Jan 26 20:16:39 CST 2020
pZxid = 0x6
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x1000826c70a0001
dataLength = 6
numChildren = 0
上記のコマンドを実行した後、/ TMPのノードデータの内容がxiaoliにアップデートされています。出力では、元のDataVersion 0の値は1となり、これが発生したノードへのデータリードの更新バージョンが変更されたという理由だけです。
3.4削除
deleteコマンドを使用して、あなたはZooKeeeprに指定されたノードを削除することができます。次のように使用方法は以下のとおりです。
delete path [version]
コマンドパラメータで、このコマンドのバージョンと設定パラメータの影響は、同じバージョンです。
次のコマンドを実行します。
[zk: localhost:2181(CONNECTED) 14] delete /tmp
[zk: localhost:2181(CONNECTED) 15] ls /
[zookeeper, user]
上記のコマンドを実行した後、あなたは、このノードが正常に削除/ ZK-本を置くことができます。しかし、ここで注意すべき点は、指定されたノードを除去するために、ノードが子ノードを存在してはならないということです。