web-dev-qa-db-ja.com

HadoopスタックにZooKeeperが必要なのはなぜですか?

Hadoop/ZooKeeperを初めて使用します。 ZooKeeperをHadoopで使用する目的を理解できませんが、ZooKeeperはHadoopでデータを書き込みますか?そうでない場合、ZooKeeperをHadoopで使用する理由は何ですか?

33
user1099871

Hadoop 1.xはZookeeperを使用しません。 HBaseは、Hadoop 1.xインストールでもzookeeperを使用します。

Hadoopはバージョン2.0からZookeeperも採用しました。

Zookeeperの目的はクラスター管理です。これは、小さな専用コンポーネントを使用するという* nixの一般的な哲学に適合します。したがって、クラスタリング機能を必要とするHadoopのコンポーネントは、独自の開発ではなくZookeeperに依存しています。

Zookeeperは、次の保証を提供する分散ストレージです( Zookeeper概要ページ からコピー):

  • 順次一貫性-クライアントからの更新は、送信された順序で適用されます。
  • 原子性-更新は成功または失敗します。部分的な結果はありません。
  • 単一システムイメージ-クライアントは、接続するサーバーに関係なく、サービスの同じビューを表示します。
  • 信頼性-更新が適用されると、その時点からクライアントが更新を上書きするまで持続します。
  • 適時性-システムのクライアントビューは、一定の時間内に最新のものであることが保証されます。

これらを使用して、ロック、リーダー選出などのクラスター管理に必要な異なる「 recipes 」を実装できます。

ZooKeeperを自分で使用する場合は、 Netflixのキュレーター をご覧になることをお勧めします。これにより、使いやすくなります(たとえば、すぐに使用できるレシピがいくつか実装されています)。

45

Zookeeperは信頼性の高い分散調整の問題を解決し、hadoopは分散システムですよね?

この主題について読むことができる優れた論文 Paxos Algorithm があります。

7
xiaofeng.li

zookeeper ドキュメントページから:

ZooKeeperは、構成情報の維持、命名、分散同期の提供、およびグループサービスの提供のための集中型サービスです。これらの種類のサービスはすべて、分散アプリケーションによって何らかの形で使用されます。

それらが実装されるたびに、避けられないバグと競合状態を修正するために多くの作業があります。これらの種類のサービスを実装することは困難であるため、アプリケーションは通常、最初はそれらをスキップします。正しく行われた場合でも、これらのサービスのさまざまな実装により、アプリケーションの展開時に管理が複雑になります。

hadoop ドキュメントページから:

Apache™Hadoop®プロジェクトは、信頼性が高くスケーラブルな分散コンピューティングのためのオープンソースソフトウェアを開発しています。

Apache Hadoopソフトウェアライブラリは、単純なプログラミングモデルを使用してコンピューターのクラスター間で大規模なデータセットを分散処理できるフレームワークです。

クエリについて:

Hadoop StackでZooKeeperが必要なのはなぜですか?

バインディングファクターは、分散処理と高可用性です。

例えばHadoop Namenodeフェイルオーバープロセス。

Hadoopの高可用性は、フェールオーバープロセス用のアクティブネームノードとスタンバイネームノードを中心に設計されています。どの時点でも、2つのマスター(アクティブなNamenode)を同時に持つことはできません。

HDFSHighAvailabilityWithQJM のApacheドキュメントリンクから:

HAクラスターが正しく動作するためには、一度に1つのNameNodeのみがアクティブであることが重要です。そうしないと、名前空間の状態が2つの間で急速に分かれてしまい、データの損失やその他の誤った結果のリスクがあります。このプロパティを確保し、いわゆる「スプリットブレインシナリオ」を防ぐために、JournalNodesは一度に1つのNameNodeのみがライターになることを許可します。

フェイルオーバー中、アクティブになるNameNodeは、単にJournalNodeへの書き込みの役割を引き継ぐだけです。これにより、他のNameNodeがアクティブ状態を継続できなくなり、新しいActiveがフェイルオーバーを安全に続行できるようになります。

ZookeeperはSplit-brainシナリオを回避するために使用されています。以下の質問でZookeeperの役割を見つけることができます。

Hadoop Namenodeフェイルオーバープロセスの仕組み

6
Ravindra babu