ZooKeeperのは、分散アプリケーションのための分散、オープンソースの連携サービスであるGoogleのチャビーのオープンソース実装で、HadoopのとHBaseのの重要な要素です。それは、分散アプリケーションのための一貫したサービスを提供することで機能が含ま提供:コンフィギュレーション・メンテナンス、ドメイン・ネーム・サービス、分散型の同期、グループ・サービスを。(Baiduの百科事典)。ZooKeeperのコードバージョン排他ロックは、分散、選挙、キュー・インターフェースを提供し、分散ロックとキューは、JavaとCの2つのバージョン、選挙だけでJavaのバージョンを持っています。通常のメッセージ・リスナー(メジャー)および使用のための分散分散ロック(二次)。
今回は最初のいくつかの簡単なコマンドと飼育係の飼育係のを使用して簡単にインストールを取ります。
まず、インストール
1.ダウンロード
入力、あなたがダウンロードすることができます。私たちの最新バージョンは、たとえば、3.5.5です。
wgetのhttps://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/current/apache-zookeeper-3.5.5-bin.tar.gz
:我々はまた、直接、独自のサーバー、ダウンロードアドレスにアップロードし、その後、アーカイブをダウンロードして公式サイトに行くことができますhttps://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/
2、エキス
タール-zxvfのapache-飼育係-3.5.5-bin.tar.gz
彼らの習慣によると、独自のソフトの接続を作成することができ、私のApacheはTomcatがあり、私は接続ソフトを構築します。
LN -s apacheの-飼育係-3.5.5-binの飼育係-3.5.5-binに
3、スタート
私たちの飼育係の下のconfディレクトリに切り替え、我々は、我々はコピーと呼ばれるzoo.cfg zoo_sample.cfgと呼ばれるそのうちの一つ3つのファイルを参照してください。
CP zoo_sample.cfg zoo.cfg
直接入力の下で私たちの飼育係の下のbinディレクトリに切り替え
./zkServer.sh開始
私たちの飼育係を開始することができ、デフォルトでは我々だけで、設定ファイルのコピーを実行します。私たちは、コンフィギュレーションファイルをコピーしたくない場合は、我々はまた、入力することができます
../conf/zoo_sample.cfg開始./zkServer.sh
開始するには、当社の構成ファイルを指定するには
打ち上げ成功は、(binディレクトリに実行する)かどうかをチェックします
./zkServer.sh状況
図4に示すように、コンフィギュレーション(単一)
我々はそれの何も書かれている私たちのコンフィギュレーションファイルを見てください。
= 2000 tickTime #ZooKeeperの構成の基本的な単位時間(ミリ秒)
= 10 initLimitの #フォロワはtickTimeを表す接続リーダー、すなわち、複数の時間を開始するための最大時間を可能にする:initLimit * tickTime
。= 5 syncLimitは #リーダーとフォロワ許容される最大データ同期期間、すなわち、それはtickTime時間乗数を表し:syncLimit * tickTimeを
= DATADIRを/ tmp / ZooKeeperの #のzookeperデータ格納ディレクトリ
2181 = CLIENTPORT クライアントが提供する#ポート番号
= 60 maxClientCnxnsの #の飼育係単一のクライアントとの同時接続の最大数
autopurge.snapRetainCount = 3 #は外部の保存されたデータのスナップショットの数はクリアされます
= 1 autopurge.purgeInterval #は自動的時間でクリーンアップタスクの間隔をトリガーします。デフォルトでは自動的にクリアされませんを意味し、0です。
5.クライアントのパラメータの説明(このセクションのハイライト)
私たちの飼育係のbinディレクトリに入力します。
./zkCli.sh
私たちは、クライアントの中に入りました。ヘルプを入力し、しようとする一つ一つを指揮するようになっているものを見てみましょう。
そのための一つ。
addauthスキームは、認証ユーザー、言うことは後で権限で詳細に構文を追加します。
近くに現在のクライアントとサーバの接続を切断します
コンフィグ[-c] [-w] [ -s] 動的ロード構成
ホストを接続します。ポートは、クライアントに接続されています
[-s] [-e]作成[-c] [-t TTL] のパスを[データ] [ACL]は 、一時的なノード-eノードを作成します(子ノードが許可されていません)-cデフォルトのノードのノード・シーケンスを-s(パスパス私が成功しなかった)[データ] [データ] ACL権限-tノードの生存時間。行にメッセージを残し、私を助けるために小さなパートナーを把握する必要があり-T。
削除[-vバージョン]がパス(しない子ノードを含む)ノードを削除[-vバージョン]バージョン番号、一般的にありません
DELETEALLパスが (その子ノードを含む)ノードを削除します
[-n | -b] delquotaパスノードの制限は削除 子ノードの-n -bバイト数を
GET [-S] [-w] パスが 追加モニター(監視データ)-w、値および状態値-sノードを取得しました
GETACLは[-S]パス 制限する権利を得る、-s特権およびステータスを取ります
歴史歴史的な営業実績
listquotaパスビューノード限界
LSは、[-S] [-w] [-R]パスノードとノードビュー-s -wの内容を表示するには、(子ノードを追加または削除するかどうかのリスナーを追加したが、変化は、子ノードの値を監視しないであろう)-Rすべてのノードに見出さ(ルートノードを含みます)
LS2路ウォッチLSおよびSTATの組み合わせに対応
printwatches ON | OFFプリントモニタイベントの場合
終了現在のクライアントを終了
再構成[-s] [-vバージョン] [[-fileパス] | [-membersのserverID =ホスト:ポート1:ポート2;ポート3 [、...] *]] | [-add SERVERID =ホスト:ポート1:ポート2。 ポート3 [、...]] * [ -remove SERVERID [、...] *] 設定ファイルをリロードします
cmdnoやり直し歴史と併せて使用されるコマンドの再手術を
パスはremovewatches [-l]は[| | -d -a -c] モニタを削除します
RMRパスは正確に同じを削除し、DELETEALL(DELETEALLを交換されている、継続使用は推奨されません)
SET [-s] [-v版パスデータ割当状況-s戻りノードを表すノードに
SETACL [-s] [-vバージョン] [-R]パスのACL セットノード権を(後でより詳細にこれについて話)
SETQUOTA -n | -bヴァル・パスノードの制限にバイトの子-b -n番号の数を設定します
STAT [-w] パスビューノードステータス、同じものを使用-w GET -w
同期パス の強制同期
第二に、ノードタイプ:
ノードの4つの主要な種類があります。
PERSISTENT持続的なノード、がありました
PERSISTENT_SEQUENTIAL永続的なノードIDは、ノードが分散ロックの名前を、重複しません
クライアントが終了するが削除される一時的な一時的なノード(利用できませんが、子供を持っています)、。ハートビートを監視するために使用することができます
EPHEMERAL_SEQUENTIAL一時的なノード番号(ノードが子を持っているではありません)
第三に、ノードの属性:
私たちは、ノードの属性を表示するには、[パス]コマンドををstatでき、我々はそれが意味に対応するものの上に行かなければなりません。
cZxid = 0x40のトランザクションID、永続的な価値を創造しながら。
CTIME =土曜9月28日午前十時39分45秒CST 2019作成されました
mZxid = 0x47データ変更時に現在のトランザクションIDであって、子ノード
mtime =土曜9月28日午前10時43分26秒CST 2019最終更新時刻
pZxid = 0×41 のトランザクションIDの子ノードが変更され、子ノードのデータが含まれていない変更は、子供の数はノードの変更のみ
cversion = 1つのバージョン番号を変更する子ノード(子の数は変更をノード)
dataVersion = 1のデータバージョン番号、変更の数
aclVersion = 0権限のバージョン番号、変更の数
ephemeralOwner = 0x0のは一時的であるかのノードは、ノード暫定値が表す有します
データ長= 4 現在のノードのデータ長
するnumChildren = 1子ノードの数
第四に、ノードのリスナー:
ここでは、限り、我々は-w [パス]を取得、追加として、あなたが私たちのノードにリスナーを追加することができ、非常に簡単です。私たちのリスナーが子ノードを監視していないことに注意しなければならない、ノードは、現在の設定の変更を監視し、それが削除されている価値があります。作成し、耳を傾けることはありません、子ノードの子ノードの値を変更します。そして、このモニタは使い捨てです。
あなたはノードを追加および削除するノードに噴火聞きたい場合は、我々は-wをすることができLSを設定することができます。
五、ACLアクセス権:
ACLは、リソースへのアクセスを制御するためのアクセス制御リスト(ACL)と呼ばれます。抗尋ねたの彼らのznodeを制御するためにACLを使用してのZooKeeper。権限制御許可方法:ベースのスキーム:ID。スキームは、ライセンスモデル、値、許可即ちCRUD特定パーミッションビットに対応するIDモードを表します。
スキーム:認証モデルは、4つのカテゴリに分かれています。
世界が世界がアクセスすることができ表し1.worldオープンモード、(これはデフォルトの設定です)
2.ip、IPモードでは、尋ねたクライアントのIP防止を定義します。
3.authユーザーのパスワード認証方式、認証が利用できる唯一のセッションで尋ね防止するために添加
そして、同様の4.digestの認証、認証ことを除いて、プレーンテキストのパスワード、およびパスワードは、SHA-1 + base64で暗号化を消化します。実際の使用では、より一般的な消化。
許可許可ビット
C-> CREATE子ノードを作成することができます
D->あなたは(一つのノードのみで)子ノードを削除できます
R-> READノードがデータを読み取り、子のリストを表示することができます
W-> WRITEノードデータを提供することができます
A-> ADMINノードは、アクセス制御リストの権限を設定することができます
のは、いくつかの小さな例の権限設定を見てみましょう。
エントリー
GETACL /ルート
完全にオープンモードは、例えば、書き込みをしないでくださいSETACL /ルートの世界を:誰:raができます。私たちは、最初のIPモードを見て
IP模式:setAcl <path> ip:<ip地址|地址段>:<权限位>
setAcl /authDir ip:127.0.0.1:ra
意思我是对于127.0.0.1的IP设置了authDir目录的读和控制的权限(权限控制)
auth模式:
语法:
1. setAcl <path> auth:<用户名>:<密码>:<权限位>
setAcl /authDir auth:root:111:rwcda
2. addauth digest <用户名>:<密码> 注意中间的空格
addauth digest root:111
digest 权限:
语法:
设置echo -n root:123456 | openssl dgst -binary -sha1 | openssl base64 得到输出结果我们进行保存。
也就是我们一会账号root,密码123456对应的加密结果。
1. setAcl <path> digest :<用户名>:<密钥>:<权限位>
setAcl /digestDir digest:root:qiTlqPLK7XM2ht3HMn02qRpkKIE=:ra
2. addauth digest <用户名>:<密码>
addauth digest root:123456
到这里zookeeper的基本单机操作就说完了,也熟悉了一下,记住stat下面的几个ID啊,后面选举机制很重的参数。我们明天来说一下集群和JAVA_API的操作。