Zookeeper-概要

ZooKeeperは、多数のホストを管理するための分散型調整サービスです。分散環境でのサービスの調整と管理は、複雑なプロセスです。ZooKeeperは、そのシンプルなアーキテクチャとAPIでこの問題を解決します。ZooKeeperを使用すると、開発者はアプリケーションの分散性を気にすることなく、コアアプリケーションロジックに集中できます。

ZooKeeperフレームワークは、もともと「Yahoo!」で構築されました。簡単で堅牢な方法でアプリケーションにアクセスするため。その後、Apache ZooKeeperは、Hadoop、HBase、およびその他の分散フレームワークで使用される組織化されたサービスの標準になりました。たとえば、ApacheHBaseはZooKeeperを使用して分散データのステータスを追跡します。

先に進む前に、分散アプリケーションについて1つか2つのことを知っておくことが重要です。それでは、分散アプリケーションの概要から説明を始めましょう。

分散アプリケーション

分散アプリケーションは、特定のタスクを高速かつ効率的に完了するようにシステム間で調整することにより、ネットワーク内の複数のシステムで同時に(同時に)実行できます。通常、非分散アプリケーション(単一システムで実行)で完了するのに数時間かかる複雑で時間のかかるタスクは、関連するすべてのシステムのコンピューティング機能を使用して、分散アプリケーションで数分で実行できます。

より多くのシステムで実行するように分散アプリケーションを構成することにより、タスクを完了する時間をさらに短縮できます。分散アプリケーションが実行されているシステムのグループは、Cluster クラスターで実行されている各マシンは、 Node

分散アプリケーションには2つの部分があります。 Server そして Client応用。サーバーアプリケーションは実際には分散されており、共通のインターフェイスを備えているため、クライアントはクラスター内の任意のサーバーに接続して同じ結果を得ることができます。クライアントアプリケーションは、分散アプリケーションと対話するためのツールです。

分散アプリケーションの利点

  • Reliability −単一または少数のシステムに障害が発生しても、システム全体に障害が発生するわけではありません。

  • Scalability −アプリケーションの構成をわずかに変更するだけで、ダウンタイムなしでマシンを追加することで、必要に応じてパフォーマンスを向上させることができます。

  • Transparency −システムの複雑さを隠し、それ自体を単一のエンティティ/アプリケーションとして表示します。

分散アプリケーションの課題

  • Race condition−特定のタスクを実行しようとしている2台以上のマシン。実際には、常に1台のマシンでのみ実行する必要があります。たとえば、共有リソースは、常に1台のマシンでのみ変更する必要があります。

  • Deadlock −互いに無期限に完了するのを待っている2つ以上の操作。

  • Inconsistency −データの部分的な障害。

Apache ZooKeeperの意味は何ですか?

Apache ZooKeeperは、クラスター(ノードのグループ)が相互に調整し、堅牢な同期技術を使用して共有データを維持するために使用するサービスです。ZooKeeperは、それ自体が分散アプリケーションを作成するためのサービスを提供する分散アプリケーションです。

ZooKeeperが提供する一般的なサービスは次のとおりです。

  • Naming service−クラスター内のノードを名前で識別します。DNSに似ていますが、ノード用です。

  • Configuration management −参加ノードのシステムの最新かつ最新の構成情報。

  • Cluster management −クラスター内のノードへの参加/離脱およびノー​​ドのステータスをリアルタイムで。

  • Leader election −調整の目的でノードをリーダーとして選出します。

  • Locking and synchronization service−データの変更中にデータをロックします。このメカニズムは、ApacheHBaseなどの他の分散アプリケーションに接続する際の自動障害回復に役立ちます。

  • Highly reliable data registry −1つまたはいくつかのノードがダウンしている場合でもデータの可用性。

分散アプリケーションには多くの利点がありますが、複雑で解読が難しいいくつかの課題もあります。ZooKeeperフレームワークは、すべての課題を克服するための完全なメカニズムを提供します。競合状態とデッドロックは、fail-safe synchronization approach。もう1つの主な欠点は、ZooKeeperが解決するデータの不整合です。atomicity

ZooKeeperの利点

ZooKeeperを使用する利点は次のとおりです-

  • Simple distributed coordination process

  • Synchronization−サーバープロセス間の相互排除と協力。このプロセスは、構成管理のためのApacheHBaseで役立ちます。

  • Ordered Messages

  • Serialization−特定のルールに従ってデータをエンコードします。アプリケーションが一貫して実行されることを確認します。このアプローチをMapReduceで使用して、実行中のスレッドを実行するようにキューを調整できます。

  • Reliability

  • Atomicity −データ転送は成功または完全に失敗しますが、部分的なトランザクションはありません。