Zookeeper-overview

提供:Dev Guides
移動先:案内検索

Zookeeper-概要

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

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

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

分散アプリケーション

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

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

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

分散アプリケーション

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

  • 信頼性-単一または少数のシステムに障害が発生しても、システム全体が障害になることはありません。
  • スケーラビリティ-ダウンタイムなしでアプリケーションの構成をわずかに変更してマシンを追加することにより、必要に応じてパフォーマンスを向上させることができます。
  • 透明性-システムの複雑さを隠し、単一のエンティティ/アプリケーションとして表示されます。

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

  • レース状態-特定のタスクを実行しようとする2台以上のマシン。実際には、常に1台のマシンでのみ実行する必要があります。 たとえば、共有リソースは、常に1台のマシンでのみ変更する必要があります。
  • Deadlock -相互に無期限に完了するのを待機している2つ以上の操作。
  • 不整合-データの部分的な障害。

Apache ZooKeeper Meant Forとは何ですか?

Apache ZooKeeperは、クラスター(ノードのグループ)によって使用されるサービスであり、クラスター間で調整し、堅牢な同期手法で共有データを維持します。 ZooKeeper自体は、分散アプリケーションを作成するためのサービスを提供する分散アプリケーションです。

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

  • ネーミングサービス-クラスター内のノードを名前で識別します。 DNSに似ていますが、ノード用です。
  • 構成管理-参加ノードのシステムの最新および最新の構成情報。
  • クラスター管理-クラスター内のノードの参加/離脱およびリアルタイムでのノードの状態。
  • リーダー選挙-調整目的のノードとしてノードを選択します。
  • ロックおよび同期サービス-変更中のデータのロック。 このメカニズムは、Apache HBaseなどの他の分散アプリケーションを接続する際の自動障害回復に役立ちます。
  • 信頼性の高いデータレジストリ-1つまたはいくつかのノードがダウンしている場合でもデータの可用性。

分散アプリケーションには多くの利点がありますが、複雑でクラックが困難ないくつかの課題もあります。 ZooKeeperフレームワークは、すべての課題を克服するための完全なメカニズムを提供します。 競合状態とデッドロックは、*フェイルセーフ同期アプローチ*を使用して処理されます。 もう1つの主な欠点は、データの不整合です。これは、ZooKeeperが*アトミック性*で解決します。

ZooKeeperの利点

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

  • シンプルな分散調整プロセス
  • 同期-サーバープロセス間の相互排除と協力。 このプロセスは、Apache HBaseの構成管理に役立ちます。
  • 注文したメッセージ
  • Serialization -特定のルールに従ってデータをエンコードします。 アプリケーションが一貫して実行されるようにします。 このアプローチをMapReduceで使用して、実行中のスレッドを実行するキューを調整できます。
  • 信頼性
  • Atomicity -データ転送は完全に成功または失敗しますが、部分的なトランザクションはありません。