web-dev-qa-db-ja.com

hbase-site.xmlのzookeeperクォーラム設定は正確には何ですか?

Hbase-site.xmlのzookeeperクォーラム設定は正確には何ですか?

20
raj

hbase-default.xml、 で説明されているように、設定は次のとおりです。

ZooKeeperクォーラム内のサーバーのコンマ区切りリスト。たとえば、「Host1.mydomain.com、Host2.mydomain.com、Host3.mydomain.com」です。デフォルトでは、これはローカルおよび疑似分散動作モードのlocalhostに設定されています。完全に分散されたセットアップの場合、これをZooKeeperクォーラムサーバーの完全なリストに設定する必要があります。 HBASE_MANAGES_ZKがhbase-env.shに設定されている場合、これはZooKeeperを起動/停止するサーバーのリストです。

これが実際に行うことは、Edward J. Yoon がここで回答しました。 私の側で編集すると、明確にするために:

Apache Zookeeperは、GoogleのChubbyなどの分散アプリケーション向けの調整サービスです。多くのプロジェクトでZookeeperが使用されており、私たち(Apache Hama)もバルク同期並列コンピューティングフレームワークのバリア同期にZookeeperを使用しています。

今日は、クラスに名前を付けるために、Zookeeperプロジェクトのパクシと動的クォーラム機能について詳しく調査しましたorg.Apache.hama.zookeeper.QuorumPeer。ドキュメントが十分でないため( http://hadoop.Apache.org/zookeeper/docs/r3.0.0/api/index.html )、私は理解していませんでした「クォーラム」の意味。この用語は私には少し奇妙でした。しかし、「org.Apache.hama.zookeeper.QuorumPeer」が正しい名前です!! xD

では、クォーラムとは何ですか?なぜクォーラムが必要なのですか?

ウィキペディアによると、クォーラムは、そのグループのビジネスを行うために必要な審議機関のメンバーの最小数です。通常、これはそこにいると予想される人々の大多数ですが、多くの団体はより低いまたはより高いクォーラムを持っている可能性があります。

ご存知のように、フォールトトレラントメカニズムは分散システムの重要な機能の1つです。クォーラムアルゴリズムは、スプリットブレイン状態を防ぐために使用されます。スプリットブレイン状態が発生すると、クォーラムアルゴリズムに従って、動物園の飼育係が「プライマリパーティション」と「セカンダリパーティション」を決定します。次に、プライマリグループのサーバーがユーザーの要求を受信して​​処理し、セカンダリグループのサーバーが読み取り専用になります。

このシステムはいつスプリットブレイン状態から回復しますか?それらが再び1つのパーティションにマージされたとき。内部的には、zookeeperはPaxosの代わりにアトミックブロードキャストプロトコルを使用します。

また、彼が提示しようとしていた概念を誤訳した場合に備えて、元のバージョンを 読む必要があります

Apache Zookeeper のクォーラムメカニズムについての私の理解は、いくつかの事前定義されたホスト間でレプリケーションクォーラムを明示的に定義することです。このクォーラムが満たされない場合、Zookeeperがそれらをプライマリパーティションと再統合できるようになるまで、一致しないパーティションはセカンダリパーティションに分割されます。

これにより、Hadoopの 結果整合性 モデルの粒度が向上します。一方、HBaseは現在、 Zookeeperとそのコードをさらに統合する過程にあります。

21
MrGomez

Hbase-default.xmlファイルから:

ZooKeeperクォーラム内のサーバーのコンマ区切りリスト。たとえば、「Host1.mydomain.com、Host2.mydomain.com、Host3.mydomain.com」です。デフォルトでは、これはローカルおよび疑似分散動作モードのlocalhostに設定されています。完全に分散されたセットアップの場合、これをZooKeeperクォーラムサーバーの完全なリストに設定する必要があります。 HBASE_MANAGES_ZKがhbase-env.shに設定されている場合、これはZooKeeperを起動/停止するサーバーのリストです。

そして、「はじめに」の要件セクションから:

HBaseは、リリース0.20.0以降のZooKeeperに依存しています。 HBaseは、ルートテーブルの場所、現在のマスターが誰であるか、およびZooKeeperのクラスターに現在参加しているリージョンを保持します。クライアントとサーバーは、他のことを行う前に、ZooKeeperクォーラムの場所を知っている必要があります(通常、これらの情報は、CLASSPATHで提供される構成から取得します)。デフォルトでは、HBaseは単一のZooKeeperインスタンスを管理します。スタンドアロンモードと疑似分散モードでは、通常これで十分ですが、完全分散モードの場合は、ZooKeeperクォーラムを構成する必要があります(詳細は以下を参照)。

お役に立てば幸いです。

5