プライベートな連絡先の最初の情報
送料メール:
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
記事ディレクトリ
Hadoop における Yarn の主要なアーキテクチャ原則
4. Yarnの3つのリソーススケジューラの特徴と利用シーン
Apache Hadoop Yarn (Yet Another Reasource Negotiator、別のリソース コーディネーター) は、Hadoop2.x 以降で使用されるリソース マネージャーであり、上位層のアプリケーションに統合されたリソース管理プラットフォームを提供できます。
Yarn は主に ResourceManager、NodeManager、ApplicationMaster、Container で構成されます。
リソースマネージャ
ResourceManager は Yarn クラスターの中央マネージャーであり、クラスター全体のリソース割り当てとスケジューリングを担当します。 ResourceManager は、NodeManager ノードのステータスの監視、クラスター リソースの収集、クライアントによって送信されたタスクのリソース要求の処理、および各アプリケーションの ApplicationMaster の起動と監視を担当します。
ノードマネージャー
NodeManager は、各ノード上のリソース (メモリ、CPU など) を管理し、ResourceManager に報告する責任があります。 ResourceManager がコンテナ (Container) を NodeManager に割り当てると、NodeManager はコンテナの起動とコンテナの動作の監視を担当します。さらに、NodeManager はアプリケーションごとにコンテナ (Container) を起動する ApplicationMaster コマンドも受け取ります。
アプリケーションマスター
Yarn で実行されている各アプリケーションは、対応する ApplicationMaster を開始します。ApplicationMaster は、ResourceManager を使用してリソースを申請し、アプリケーション タスクを管理します。 ApplicationMaster は基本的にコンテナです。リソースのスケジュールは ResourceManager によって実行され、NodeManager によって開始されます。ApplicationMaster が開始されると、ResourceManager がコンテナ リソースを割り当てた後、ApplicationMaster が対応する NodeManager に接続します。コンテナの起動と、コンテナ上で実行されているリソースの管理を行います。
容器
コンテナ コンテナは Yarn の基本的な実行ユニットであり、アプリケーション タスクを実行するために使用されます。これは、アプリケーション コード、依存関係、および動作に必要なリソース (メモリ、CPU、ディスク、ネットワーク) を含む仮想環境です。各コンテナは ResourceManager によって ApplicationMaster に割り当てられ、NodeManager によって対応するノード上で起動および管理されます。コンテナのリソース使用量は NodeManager によって監視され、必要に応じて ResourceManager に報告されます。
Yarn の核心は、MR1 の JobTracker のリソース管理機能とタスク スケジューリング機能を分離することです。これらの機能は、それぞれ ResourceManager プロセスと ApplicationMaster プロセスによって実装されます。ResourceManager は、ApplicationMaster が担当するクラスター全体のリソース管理とスケジューリングを担当します。アプリケーションのタスクのスケジューリング、タスクの監視、およびフォールト トレランス。
クライアントが MR タスクを Yarn に送信すると、MR タスクのリソース (分割、リソース構成、Jar パッケージ情報) が最初に HDFS にアップロードされます。
クライアントは ResourceManager に申請して ApplicationMaster を起動します。
ResourceManager は、比較的ビジーではない NodeManager ノードを選択し、そのノードに ApplicationMaster (コンテナ) を開始するように通知します。
ApplicationMaster が開始されると、MR タスクのリソース情報が HDFS からローカルにダウンロードされ、ResourceManager からリソースを申請して MR タスクを開始します。
ResourceManager はリソース リストを ApplicationMaster に返します。
次に、ApplicationMaster は、対応する NodeManager にコンテナを開始するように通知します。
コンテナが起動されると、ApplicationMaster に逆登録されます。
ApplicationMaster は実行するタスクをコンテナに送信し、タスクは作成したコードのビジネス ロジックを実行します。
FIFO スケジューラ (先入れ先出しスケジューラ) 、Yarn で最も単純なスケジューラ。 FIFO スケジューラは、送信されたアプリケーションを送信順に先入れ先出しキューに配置します。リソースは、最初にキューの先頭のアプリケーションに割り当てられ、その後、次のアプリケーションにリソースが割り当てられます。最上位アプリケーションのリソース要件が満たされている場合、アプリケーションはリソースを割り当てます。この種のスケジューラがリソースをスケジュールすると、リソース要件が大きいアプリケーションがすべてのクラスタ リソースを占有し、他のアプリケーションがブロックされる可能性があります。
キャパシティ スケジューラー (キャパシティ スケジューラー)これは Yarn で構成されたデフォルトのリソース スケジューラーであり、マルチテナントが大規模なクラスターを安全に共有できるようになります。 キャパシティ スケジューラは、複数のリソース キューの構成をサポートしており、リソース キューごとに使用可能なリソースの最小値と最大値を指定できます。リソースを割り当てるときは、「実際のリソース/予算リソース」の比率が最も低いリソースが優先されます。各リソース キューは内部的に FIFO スケジューリング戦略を採用します。
フェアスケジューラこれは、Yarn リソースを各アプリケーションに公平に割り当てるリソース スケジューリング方法であり、その設計目標は、定義されたパラメーター H に従って、すべてのアプリケーションが均等なリソース共有を取得できるようにすることです。
Yarn の FIFO、Capacity、Fair リソース スケジューラの違いは次のとおりです。
糸リソーススケジューラ | 特徴 | 該当シーン |
FIFOスケジューラ | 1. シンプルで分かりやすく、追加の設定は必要ありません。 2. アプリケーションは、送信された順序 (先入れ先出し) で実行されます。 3. 共有クラスターには適していないため、各アプリケーションは実行の順番になるまで待機する必要があります。 | 非共有クラスター。タスクの実行順序に高度な要件がないシナリオ。通常、運用環境では使用されません。 |
キャパシティスケジューラ (オープンソース Yarn ではデフォルトで使用されます) | 1. 複数の組織がクラスター リソースを共有できるようにし、各組織が専用のキューを持ちます。 2. キューの階層分割とキュー リソースの柔軟な構成をサポートします。 3. キューの最大容量を制限し、リソースの競合を軽減できます。 | 共有クラスター シナリオ。複数の組織またはチームが同じクラスター リソースを共有します。 |
フェアスケジューラ (デフォルトで CDH によって使用されます) | 1. 実行中のすべてのアプリケーションにリソースを公平に割り当て、複数のキュー間でのリソースの公平な共有をサポートします。 2. キューの動的な作成をサポートし、一連のルール システムを通じてアプリケーションの配置を決定します。 3. リソースの公平な配分を確保するためのリソースの先取り機能をサポートします。 | 1. 複数のユーザーまたは組織が共有クラスター内のリソースを公平に取得する必要があるシナリオ。 2. キューレベルのリソース制御ときめ細かいスケジューリング戦略に対する高い要件がある環境。 |