概念

このドキュメントでは、YARNを長期間実行されるサービスをネイティブにサポートするための第一級プラットフォームとして実現するいくつかの重要な概念と機能について説明します。

YARN上のサービスフレームワーク(ApplicationMaster)

YARNへのサービスの展開を支援するために、コンテナオーケストレーションフレームワークが実装されています。簡単に言うと、このフレームワークは、ユーザーが提供したサービス定義に基づいてResourceManagerからコンテナを要求し、配置ポリシーに従ってクラスタ全体にコンテナを起動するApplicationMasterです。また、サービス定義と設定の解決、失敗したコンテナの自動再起動などのコンポーネントライフサイクルの管理、コンポーネントの健全性と準備状況の監視、コンポーネント間の依存関係の開始順序の確保、コンポーネントの増減、コンポーネントのアップグレードなど、すべての負荷の高い作業を実行します。このフレームワークの最終目標は、ユーザーが希望する状態としてサービスが稼働していることを確認することです。

さらに、アフィニティとアンティアフィニティのスケジューリング、サービスのログ集約、失敗したコンテナの自動再起動、コンテナのインプレースアップグレードなど、スケジューリング制約を達成するためにYARNコアの多くの機能を活用しています。

YARNへのサービスの展開/管理のためのRESTful APIサーバー

シンプルなJSON仕様を介してユーザーがYARNにサービスを展開/管理できるように、RESTful APIサーバーが開発されました。これにより、ユーザーは低レベルAPIを扱う必要がなくなり、サービスをYARNに導入するための複雑なコードを記述する必要がなくなります。RESTレイヤーは、YARNサービスの作成とライフサイクル管理のための統一されたRESTベースのエントリとして機能します。ここでのサービスは、単純なシングルコンポーネントアプリから、特別なオーケストレーションを必要とする非常に複雑なマルチコンポーネントアプリケーションまで多岐に渡ります。詳細なAPIドキュメントについては、このAPIドキュメントを参照してください。

APIサーバーはステートレスであるため、ユーザーは複数のインスタンスを簡単に起動し、ロードバランサーを前面に配置してHAをサポートし、負荷を分散することができます。

サービスディスカバリ

標準メカニズムであるDNSルックアップを介してYARN上のサービスを発見できるように、DNSサーバーが実装されています。

このフレームワークは、ホスト名とIPなどのコンテナ情報をYARNサービスレジストリに投稿します。そして、DNSサーバーは、それらをAレコードやSRVレコードなどのDNSレコードに変換することにより、YARNサービスレジストリ内の情報を本質的に公開します。クライアントは、標準的なDNSルックアップを介してコンテナのIPを発見できます。

以前のYARNサービスレジストリの読み取りメカニズムは、レジストリ固有の(Java)APIとRESTインターフェースに限定されており、既存のクライアントとサービスを接続することが困難でした。DNSベースのサービスディスカバリは、このギャップを解消します。詳細については、このサービスディスカバリドキュメントを参照してください。