Apache ZooKeeper
概要
Apache ZooKeeperとは、大規模な分散システムの運用に必要とされる設定情報の集中的な管理、要素の名前付けなどの機能を提供するソフトウェア。アパッチソフトウェア財団(ASF:Apache Software Foundation)によってオープンソースとして公開されている。多数のサーバが協調して動作する分散システムにおいて、共有される設定情報などを単一の保存場所でまとめて管理し、多数のクライアントやサーバによる参照や更新などを不整合なく行う環境を提供する。Java言語で開発されており、様々な環境で動作する。
保管されるデータはUNIX系OSのファイルシステムに似た「/」を頂点とする階層構造(木構造)で管理され、ファイルのパス同様「/foo/bar」のように頂点からの経路をスラッシュ(/)区切りで指定することでアクセスできる。
各ノード(znodeと呼ばれる)はファイルとディレクトリの両方の性質を持ち、ファイルのようにデータを書き込むことができると同時に傘下に子ノードを持つことができる。データはメモリ上に展開されるため極めて高速(低遅延、高スループット)に読み書きすることできる。
ノードには設定情報などを書き込んでおく一般的なノードの他に「エフェメラルノード」(ephemeral:一時的な)と呼ばれる特殊なものがあり、ノードを作成したプロセスとの通信が途絶えると自動的に消滅する。この性質を利用して、有効なサーバがエフェメラルノードを保持することで現在利用可能なサーバの一覧をリアルタイムに構成することができる。
一台のマスターサーバがデータを管理するが、複数の複製サーバを設置でき、クライアントからのアクセスを分散して性能を向上することができる。マスターがダウンすると残りのサーバから新しいマスターが選出され、更新を継続することができる。
オリジナルは米ヤフー(Yahoo!)社によって開発され、Apache Hadoopプロジェクトのサブプロジェクトとしてオープンソース化された。2008年にはHadoopから独立してASFのトップレベルプロジェクトに昇格した。大手商用ネットサービスなどにも採用例がある。Apacheライセンスによりオープンソースソフトウェアとして提供されている。