記事のディレクトリ
糸資源スケジューリング
1.糸の紹介:
YarnはHadoopクラスターのリソース管理システムモジュールです。YarnモジュールはHadoop2.0から導入されました。Yarnはさまざまなコンピューティングフレームワークのリソース管理とスケジューリングを提供できます。主にクラスター内のリソース(主にさまざまなサーバー)の管理に使用されます。 。CPU、メモリ、ディスク、ネットワークIOなどのハードウェアリソース)およびyarnで実行されるさまざまなタスクのスケジューリング。
yarn核心出发点是为了分离资源管理与作业监控,实现分离的做法是拥有一个全局的资源管理(ResourceManager,RM),以及每个应用程序对应一个的应用管理器(ApplicationMaster,AM)
要約すると、一文は次のようになります:糸は主にリソースのスケジューリング、タスクの管理などに使用されます。
スケジューリングは2つのレベルに分かれています。
-
第1レベルのディスパッチ管理:
コンピューティングリソース管理(CPU、メモリ、ネットワークIO、ディスク)
-
二次スケジューリング管理:
タスクの内部計算モデル管理(AppMasterの洗練されたタスク管理)
ヤーンの公式ウェブサイトドキュメントの説明:
http://hadoop.apache.org/docs/r2.7.5/hadoop-yarn/hadoop-yarn-site/YARN.html
糸クラスターの監視および管理インターフェース:
jobHistoryServerビューインターフェイス:
http:// node01:19888 / jobhistory
2.ヤーンの主要コンポーネントの紹介と機能
YARN总体上是Master/Slave结构
、主にResourceManager、NodeManager、ApplicationMaster、Containerなどのいくつかのコンポーネントで構成されています。
- ResourceManager(RM)
は、クライアント要求の処理、および各NMでのリソースの統合管理とスケジューリングを担当します。アイドル状態のコンテナをApplicationMasterに割り当てて、その実行ステータスを実行および監視します。これは主に、スケジューラとアプリケーションマネージャの2つのコンポーネントで構成されています。- スケジューラー(スケジューラー):スケジューラーは、容量やキューなどの制約に従って、実行中の各アプリケーションにシステム内のリソースを割り当てます。スケジューラーは、各アプリケーションのリソース要件に従ってのみリソースを割り当てます。リソース割り当て単位はコンテナーです。Shcedulerは、アプリケーションのステータスを監視または追跡する責任を負いません。つまり、スケジューラーは、アプリケーションのリソース要件とクラスターマシンのリソース状況に応じて、コンテナーにカプセル化されたリソースをアプリケーションに割り当てます。
- アプリケーションマネージャー:アプリケーションマネージャーは、アプリケーションの送信、ApplicationMasterを起動するためのスケジューラーとのリソースネゴシエーション、ApplicationMasterの実行ステータスの監視、失敗した場合の再起動など、システム全体のすべてのアプリケーションの管理を担当します。特定のコンテナの進捗状況とステータスもその責任です。
- NodeManager(NM)
NodeManagerは、各ノードのリソースおよびタスクマネージャーです。ノードでのリソース使用量と各コンテナーの実行ステータスをResourceManagerに定期的に報告します。同時に、ApplicationMasterからコンテナーの開始/停止要求を受信して処理します。 - ApplicationMaster(AM):
ユーザーによって送信されたすべてのアプリケーションには** ApplicationMaster **が含まれます。これは、アプリケーションの監視、アプリケーションの実行ステータスの追跡、失敗したタスクの再開などを担当します。ApplicationMasterはアプリケーションフレームワークであり、ResourceManagerとリソースを調整し、NodeManagerと連携してタスクの実行と監視を完了します。 - コンテナ:
コンテナはYARNのリソース抽象化であり、メモリ、CPU、ディスク、ネットワークなどのノード上の多次元リソースをカプセル化します。ApplicationMasterがResourceManagerからリソースを申請すると、ResourceManagerはApplicationMasterがContainerExpressedを使用するためのリソースを返します。 。
3.ヤーンのアーキテクチャとワークフロー
4.ヤーンスケジューラ
ヤーンは主にリソーススケジューリング、タスク割り当て、その他の機能に使用されることは誰もが知っています。したがって、Hadoopでは、タスクスケジューリングに使用されるアルゴリズムに注意が必要です。Hadoopはいくつかのタスクスケジューリング方法とさまざまなシナリオをサポートしています。別のタスクスケジューラを使用する必要があります。 。
第一种调度器:FIFO Scheduler(队列调度)
タスクを送信順にキューに配置します。これは先入れ先出しキューです。リソース割り当てが実行されると、リソースは最初にキューの最上位タスクに割り当てられ、次に最上位タスクが満たされます。次のタスク。1つの割り当てなど。
FIFOスケジューラーは、最も単純で理解しやすいスケジューラーであり、構成は必要ありませんが、共有クラスターには適していません。大きなタスクはすべてのクラスターリソースを占有する可能性があり、その結果、他のタスクがブロックされます。
第二种调度器:Capacity Scheduler(容量调度器,apache版本默认使用的调度器)
キャパシティスケジューラを使用すると、複数の組織でクラスター全体を共有でき、各組織はクラスターのコンピューティング能力の一部を取得できます。各組織に専用のキューを割り当ててから、特定のクラスターリソースを各キューに割り当てることにより、クラスター全体で複数のキューを設定することにより、複数の組織にサービスを提供できます。さらに、キューを垂直に分割できるため、組織内の複数のメンバーがキューリソースを共有できます。キュー内では、リソーススケジューリングは先入れ先出し(FIFO)戦略を使用します。
第三种调度器:Fair Scheduler(公平调度器,CDH版本的hadoop默认使用的调度器)
Fairスケジューラーの設計目標は、すべてのアプリケーションに公平なリソースを割り当てることです(公平性の定義はパラメーターによって設定できます)。公平なスケジューリングは、複数のキュー間でも機能します。たとえば、2人のユーザーAとBがいて、それぞれにキューがあるとします。Aがジョブを開始し、Bにタスクがない場合、Aはすべてのクラスターリソースを取得します。Bがジョブを開始すると、Aのジョブは引き続き実行されますが、しばらくすると、2つのタスクはそれぞれクラスターリソースの半分を取得します。この時点でBが2番目のジョブを開始し、他のジョブがまだ実行中の場合、BキューのリソースをBの最初のジョブと共有します。つまり、Bの2つのジョブはクォータークラスターリソースに使用され、Aのジョブは引き続き使用されます。クラスターのリソースの半分に使用される結果、リソースは最終的に2人のユーザー間で均等に共有されます
使用するスケジューラーはyarn-site.xmlによって異なります
yarn.resourcemanager.scheduler.class
このプロパティの構成
5.糸共通パラメータ設定について
最小メモリを割り当てるようにコンテナを設定します
糸.scheduler.minimum-allocation-mb1024アプリケーションコンテナに割り当てられた最小メモリ
コンテナによって割り当てられる最大メモリを設定します
yen.scheduler.maximum-allocation-mb8192アプリケーションコンテナに割り当てられた最大メモリ
各コンテナの仮想コアの最小数を設定します
yen.scheduler.minimum-allocation-vcores1各コンテナーにデフォルトで割り当てられる仮想コアの最小数
各コンテナの仮想コアの最大数を設定します
yen.scheduler.maximum-allocation-vcores32各コンテナーが割り当てることができる仮想コアの最大数
NodeManagerが割り当てることができるメモリサイズを設定します
糸.nodemanager.resource.memory-mb8192ノードマネージャが割り当てることができる最大メモリサイズ。デフォルトは8192Mbです。
各マシンのメモリ使用量を定義します
糸.nodemanager.resource.memory-mb8192
使用できるスワップスペースのサイズを定義します
スワップスペースとは、メモリ使用量に使用されるハードディスクのことです。ここで指定するのは、nodemanagerの2.1倍です。
糸.nodemanager.vmem-pmem-ratio2.1