Hadoop YARN とは何ですか?
Hadoop YARN (Yet Another Resource Negotiator) は、Hadoop エコシステムの重要なコンポーネントであり、元の Hadoop MapReduce フレームワークの制限に対処するためにバージョン 2.0 で導入されました。YARN は、複数のデータ処理エンジンを単一の Hadoop クラスターで実行できるようにするリソース管理レイヤーとして機能し、ビッグ データ処理の柔軟性、スケーラビリティ、効率性を高めます。この記事では、Hadoop YARN、そのアーキテクチャ、コンポーネント、機能、および Hadoop エコシステムへの影響について詳しく説明します。
YARNの必要性
YARN が導入される前、Hadoop のアーキテクチャは、リソース管理とジョブのスケジュール設定に単一のジョブ トラッカーに大きく依存していました。この設計にはいくつかの課題がありました。
- スケーラビリティの問題: クラスターのサイズが大きくなるにつれて、単一のジョブ トラッカーがボトルネックになりました。数千のノードと同時タスクを効率的に管理することが困難になりました。
- 非効率的なリソース使用: 元の MapReduce フレームワークはバッチ処理に限定されていたため、ストリーム処理やインタラクティブ クエリなどの他の処理パラダイムを効率的に実行できませんでした。
- 柔軟性の制限: MapReduce の厳格な構造により、同じクラスター上でさまざまな種類のアプリケーションを同時に実行する能力が制限されていました。
これらの課題を克服するために、リソース管理とデータ処理を切り離し、より多用途で効率的なコンピューティング環境を実現する YARN が開発されました。
YARNの主な特徴
YARN は、Hadoop の機能を強化するいくつかの重要な機能を導入しています。
- マルチテナント: YARN を使用すると、さまざまなアプリケーションがリソースを動的に共有できるようになり、複数の処理フレームワーク (Spark、Storm など) を同じクラスター上で同時に実行できるようになります。
- リソース管理の改善: リソース マネージャーとノード マネージャーのアーキテクチャを通じてリソース割り当てが改善され、クラスター リソースが最適に利用されるようになります。
- さまざまな処理モデルのサポート: YARN はバッチ処理、インタラクティブ処理、ストリーム処理、グラフ処理をサポートしており、幅広いデータ アプリケーションに適しています。
- スケーラビリティ: YARN を使用すると、Hadoop はパフォーマンスを低下させることなく、数千のノードを効率的に管理できるようになります。
YARN アーキテクチャ
リソース マネージャーは、YARN のマスター デーモンであり、クラスター リソースの管理を担当します。主に次の 2 つの機能を実行します。
- リソース割り当て: RM は、アプリケーションの要件とクラスター内の使用可能なリソースに基づいて、さまざまなアプリケーションにリソースを割り当てます。
- ジョブ スケジューリング: ノード マネージャーおよびアプリケーション マスターと通信してジョブをスケジュールします。
RM は次の 2 つの主要コンポーネントで構成されます。
- スケジューラ: スケジューラは、定義済みのポリシー (キャパシティ スケジューラやフェア スケジューラなど) に基づいて、実行中のさまざまなアプリケーションにリソースを割り当てる役割を担います。アプリケーションの状態を監視したり、失敗したタスクを再開したりすることはありません。
- アプリケーション マネージャー: このコンポーネントは、アプリケーションの送信を管理し、アプリケーション マスターを起動するためのリソースをネゴシエートします。
2. ノードマネージャ (NM)
ノード マネージャーは、クラスター内の個々のノード上のコンテナーを管理するマシンごとのフレームワーク エージェントです。主な役割は次のとおりです。
- コンテナ管理: NM は、アプリケーション マスターの要求に応じてコンテナを起動し、そのリソース使用状況 (CPU、メモリ、ディスク) を監視します。
- ヘルス モニタリング: ノードのヘルス状態をリソース マネージャーに報告し、必要に応じてリソースを再割り当てして障害を処理します。
3. アプリケーションマスター(AM)
YARN 上で実行される各アプリケーションには、リソース マネージャーとリソースをネゴシエートし、ノード マネージャーと連携してタスクを実行する独自のアプリケーション マスターがあります。AM は次の役割を担います。
- リソースネゴシエーション: リソース要件に基づいて RM にコンテナを要求します。
- タスク監視: AM はコンテナ内で実行されているタスクの進行状況を追跡し、必要に応じて新しいコンテナを要求することで障害を処理します。
4. コンテナ
コンテナは、YARN におけるリソース割り当ての基本単位です。コンテナは、タスクの実行用に割り当てられた特定の量の CPU およびメモリ リソースをカプセル化します。各コンテナは、割り当てられたリソース内でアプリケーションのコードのインスタンスを実行します。
YARNの仕組み
YARN のワークフローは、いくつかの重要なステップに分けられます。
- ジョブの送信: クライアントがリソース マネージャーにジョブを送信します。
- アプリケーション マスターの作成: RM は、そのジョブに関連付けられたアプリケーション マスターにコンテナーを割り当てます。
- リソース ネゴシエーション: アプリケーション マスターは、必要に応じてリソース マネージャーに追加のコンテナーを要求します。
- タスク実行: コンテナが割り当てられると、ノード マネージャーによって起動され、タスクが実行されます。
- 監視とレポート: アプリケーション マスターはタスクの実行を監視し、進行状況をリソース マネージャーに報告します。
- 完了: すべてのタスクが完了すると、アプリケーション マスターはリソース マネージャーから登録解除されます。
YARNを使用する利点
YARN は Hadoop ユーザーに数多くの利点をもたらします。
- パフォーマンスの向上: リソース管理をデータ処理から分離することで、YARN はジョブ実行の全体的なパフォーマンスと効率を向上させます。
- 柔軟性: ユーザーは、リソースの競合を起こすことなく、さまざまな種類のアプリケーション (バッチ、インタラクティブ、ストリーミング) を同時に実行できます。
- リソース使用率の向上: 動的割り当てにより、クラスター上で実行されているさまざまなアプリケーション間でリソースが効率的に使用されます。
- スケーラビリティ: 組織は、パフォーマンスのボトルネックや Hadoop の以前のバージョンに固有の制限を気にすることなく、クラスターを簡単に拡張できます。
- 複数のフレームワークのサポート: YARN のアーキテクチャにより、Apache Spark や Apache Flink などのフレームワークを従来の MapReduce ジョブとシームレスに連携させることができます。
YARN のユースケース
YARN は、ビッグデータ ワークロードを処理する際の汎用性と効率性により、さまざまな業界で広く採用されています。
- リアルタイム データ処理: 組織は、Apache Storm や Apache Spark Streaming などのフレームワークと YARN を使用して、リアルタイム データ フィードを効率的に処理します。
- インタラクティブ分析: データ サイエンティストは、YARN 上で実行される Apache Hive や Impala などのツールを活用して、HDFS に保存されている大規模なデータセットに対してインタラクティブなクエリを実行します。
- バッチ処理ワークロード: 従来の MapReduce ジョブは、改善されたリソース管理のメリットを享受しながら、YARN で引き続き効率的に実行されます。
- 機械学習アプリケーション: YARN 上で動作する Apache Mahout などのフレームワークを使用すると、組織は大規模なデータセットを使用して高度な機械学習モデルを構築できます。