| 開発者 | Apache ソフトウェア財団 |
|---|---|
| 安定版リリース | 3.8.1 / 2023年1月30日[1] |
| リポジトリ | ZooKeeper リポジトリ |
| 書かれた | ジャワ |
| オペレーティング·システム | クロスプラットフォーム |
| タイプ | 分散コンピューティング |
| ライセンス | Apache ライセンス 2.0 |
| Webサイト | 動物園の飼育係 |
Apache ZooKeeperは、クラウドアプリケーションの信頼性の高い分散調整のためのオープンソースサーバーです。[2]これはApache Software Foundationのプロジェクトです。
ZooKeeperは本質的には分散システム向けのサービスであり、階層型のキーバリューストアを提供し、大規模分散システム向けの分散構成サービス、同期サービス、命名レジストリを提供するために使用されます(ユースケースを参照)。[3] ZooKeeperはHadoopのサブプロジェクトでしたが、現在は独自の トップレベルのApacheプロジェクトとなっています。
概要
ZooKeeper のアーキテクチャは、冗長サービスを通じて高可用性をサポートします。クライアントは、最初の ZooKeeper リーダーが応答しない場合、別の ZooKeeper リーダーに問い合わせることができます。ZooKeeper ノードは、ファイルシステムやツリーデータ構造のように、階層的な名前空間にデータを保存します。クライアントはノードから読み取ったり、ノードに書き込んだりすることができ、このようにして共有構成サービスが提供されます。ZooKeeper は、更新が完全に順序付けられるアトミックブロードキャストシステムと見なすことができます。ZooKeeper アトミックブロードキャスト (ZAB) プロトコルは、システムの中核です。[4]
ZooKeeperは、Yelp、Rackspace、Yahoo!、[5] Odnoklassniki、Reddit、[6] NetApp SolidFire、[7] Meta、[8] Twitter [9] eBayなどの企業や、 Solrなどのオープンソースの エンタープライズ検索システム、 Apache Pinotなどの分散データベースシステム でも使用されています。[10] [11]
ZooKeeperはGoogleのChubbyロックサービス[12] [13]をモデルにしており、もともとYahoo!で開発されたもので、ZooKeeperサーバーのローカルログファイルにステータスを保存することで、ビッグデータクラスターで実行されるプロセスを効率化します。これらのサーバーはクライアントマシンと通信して情報を提供します。ZooKeeperは、分散型ビッグデータアプリケーションの展開中に発生したバグを修正するために開発されました。
Apache ZooKeeper の主な機能は次のとおりです。
- 信頼性の高いシステム: 一部のノードが動作を停止しても動作を継続するため、このシステムは非常に信頼性が高いです。
- シンプルなアーキテクチャ: ZooKeeper のアーキテクチャは、プロセスの調整に役立つ共有の階層型名前空間があるため、非常にシンプルです。
- 高速処理: ZooKeeper は、「読み取り中心」のワークロード (つまり、書き込みよりも読み取りの方がはるかに多いワークロード) で特に高速です。
- スケーラブル: ノードを追加することで ZooKeeper のパフォーマンスを向上させることができます。
建築
ZooKeeper アーキテクチャに関する一般的な用語:
- ノード: クラスターにインストールされているシステム
- ZNode: クラスター内の他のノードによってステータスが更新されるノード
- クライアントアプリケーション: 分散アプリケーションと対話するツール
- サーバーアプリケーション: クライアントアプリケーションが共通のインターフェースを使用して対話できるようにします。
クラスター内のサービスは、一連のサーバー(「アンサンブル」と呼ばれる)に複製され、保存されます。各サーバーは、状態のデータツリー全体とトランザクションログおよびスナップショットを永続的に保存するメモリ内データベースを維持します。複数のクライアントアプリケーションがサーバーに接続でき、各クライアントはTCP接続を維持し、それを介して要求とハートビートを送信し、応答を受信し、監視のためにイベントを監視します。[14]
ユースケース
ZooKeeper の一般的な使用例は次のとおりです。
クライアントライブラリ
ZooKeeper ディストリビューションに含まれているクライアント ライブラリに加えて、Apache Curator や Kazoo などのサードパーティ ライブラリも多数用意されており、これらを使用すると ZooKeeper の使用が容易になり、追加機能や追加のプログラミング言語などが追加されます。
ZooKeeper を使用した Apache プロジェクト
- アパッチハドゥープ
- アパッチアキュムロ
- アパッチHBase
- アパッチハイブ
- アパッチカフカ
- アパッチドリル
- アパッチソル
- アパッチスパーク
- アパッチニフィ
- アパッチドルイド
- アパッチヘリックス
- アパッチ ピノ
- アパッチブックキーパー
- アパッチパルサー
参照
参考文献
- ^ 「Apache ZooKeeper - リリース」。2023年2月12日閲覧。
- ^ 「Apache Zookeeper4」 。 2021年1月31日閲覧。
- ^ 「インデックス - Apache ZooKeeper - Apache Software Foundation」cwiki.apache.org . 2016年8月26日閲覧。
- ^ 「Zookeeper の概要」。
- ^ 「ZooKeeper/Powered By」。2013年12月9日時点のオリジナルよりアーカイブ。2012年1月25日閲覧。
- ^ 「Redditが8月11日にダウンした理由」2016年8月16日。
- ^ 「5 つの大きな DaaS の課題とその克服方法 | NetApp ニュースルーム」。NetAppニュースルーム。2016 年 6 月 20 日。2017年 5 月 24 日閲覧。[永久リンク切れ ]
- ^ 「Location-Aware Distribution: 大規模なサーバーの構成」Facebook Code 2018-07-19 . 2018-07-20閲覧。
- ^ 「Twitter の ZooKeeper」。Twitter エンジニアリング ブログ。2018 年 10 月 11 日。2018 年 12 月 8 日閲覧。
- ^ 「SolrCloud」。
- ^ 「Apache Pinot: アーキテクチャ」.
- ^ Burrows, Mike (2006). 「疎結合分散システム向け Chubby ロック サービス」.第 7 回 USENIX オペレーティング システム設計および実装シンポジウム (OSDI) .
- ^ Chandra, Tushar Deepak; Griesemer, Robert; Redstone, Joshua (2007). 「Paxos Made Live - An Engineering Perspective (2006 Invited Talk)」。Google Research 。 2020年3月3日閲覧。
- ^ 「Apache Zookeeper 3.9 ドキュメント」。
外部リンク
- 公式サイト
