YARN Timeline Service v.2 は、v.1 および v.1.5 に続く、Timeline Server の次期メジャーイテレーションです。V.2 は、v.1 の 2 つの大きな課題に対処するために作成されました。
V.1 は、ライター/リーダーとストレージの単一インスタンスに制限されており、小規模クラスターを超えてうまくスケールしません。V.2 は、よりスケーラブルな分散ライターアーキテクチャとスケーラブルなバックエンドストレージを使用します。
YARN Timeline Service v.2 は、データの収集 (書き込み) をデータの提供 (読み取り) から分離します。分散コレクターを使用します。これは基本的に、各 YARN アプリケーションに 1 つのコレクターです。リーダーは、REST API を介してクエリを提供することに特化した個別のインスタンスです。
YARN Timeline Service v.2 は、Apache HBase を主要なバッキングストレージとして選択しました。これは、Apache HBase が大規模にスケールすると同時に、読み取りと書き込みの両方で良好な応答時間を維持するためです。
多くの場合、ユーザーは「フロー」または YARN アプリケーションの論理グループのレベルでの情報に関心を持っています。論理アプリケーションを完了するために、YARN アプリケーションのセットまたはシリーズを起動することがはるかに一般的です。Timeline Service v.2 は、フローの概念を明示的にサポートします。さらに、フローレベルでメトリクスを集計することをサポートします。
また、構成やメトリクスなどの情報は、ファーストクラスの要素として扱われ、サポートされています。
次の図は、フローをモデル化するさまざまな YARN エンティティ間の関係を示しています。
YARN Timeline Service v.2 は、一連のコレクター (ライター) を使用して、データをバックエンドストレージに書き込みます。コレクターは分散され、専用のアプリケーションマスターと同じ場所に配置されます。リソースマネージャーのタイムラインコレクターを除き、そのアプリケーションに属するすべてのデータは、アプリケーションレベルのタイムラインコレクターに送信されます。
特定のアプリケーションの場合、アプリケーションマスターは、アプリケーションのデータを同じ場所に配置されたタイムラインコレクター (このリリースでは NM 補助サービス) に書き込むことができます。さらに、アプリケーションのコンテナーを実行している他のノードのノードマネージャーも、アプリケーションマスターを実行しているノードのタイムラインコレクターにデータを書き込みます。
リソースマネージャーも独自のタイムラインコレクターを維持します。書き込み量を合理的に保つために、YARN 固有のライフサイクルイベントのみを発行します。
タイムラインリーダーは、タイムラインコレクターとは別の独立したデーモンであり、REST API を介してクエリを提供することに特化しています。
次の図は、高レベルでの設計を示しています。
書き込みと読み取りのエンドツーエンドの完全なフローは機能しており、バックエンドとして Apache HBase が使用されています。データを生成できるようになるはずです。有効にすると、すべての YARN 固有のイベントと、CPU やメモリなどの YARN システムメトリクスも公開されます。さらに、Distributed Shell や MapReduce を含む一部のアプリケーションは、フレームワークごとのデータを YARN Timeline Service v.2 に書き込むことができます。
データにアクセスする基本モードは REST 経由です。REST API には、多数の有用で柔軟なクエリパターンが付属しています (詳細については下記を参照)。YARN クライアントは ATSv2 と統合されています。これにより、詳細が ResouceManager に存在しない場合、TimelineReader からアプリケーション/試行/コンテナーレポートをフェッチできます。
コレクター (ライター) は、現在、ノードマネージャーに補助サービスとして組み込まれています。リソースマネージャーにも、専用のインプロセスコレクターがあります。リーダーは現在、単一のインスタンスです。現在、YARN アプリケーションのコンテキスト外でタイムラインサービスに書き込むことはできません (つまり、オフクラスタークライアントはありません)。
Kerberos 認証は、エンドツーエンドでサポートされています。HBase とのすべての通信は、Kerberos を使用できます。構成については、セキュリティ構成を参照してください。タイムラインデータを読み取ることができるユーザーとグループの設定可能なホワイトリストに関して、単純な認証のサポートが追加されました。クラスター管理者は、デフォルトでタイムラインデータを読み取ることが許可されています。
YARN Timeline Service v.2 が無効になっている場合、他の既存の機能に機能やパフォーマンスへの影響がないことが予想されます。
ロードマップには以下が含まれます。
v.2 で導入された新しい構成パラメーターは、太字でマークされています。
構成プロパティ | 説明 |
---|---|
yarn.timeline-service.enabled |
タイムラインサービスが有効かどうかをクライアントに示します。有効な場合、アプリケーションで使用される TimelineClient ライブラリは、エンティティとイベントをタイムラインサーバーにポストします。デフォルトは false です。 |
yarn.timeline-service.version |
実行中のタイムラインサービスの現在のバージョンを示します。たとえば、「yarn.timeline-service.version」が 1.5 で、「yarn.timeline-service.enabled」が true の場合、これは、クラスターがタイムラインサービス v.1.5 (およびその他は一切) を起動することを意味します。クライアント側では、クライアントが同じバージョンのタイムラインサービスを使用する場合、成功する必要があります。クライアントがこれにもかかわらず、より小さいバージョンを使用する場合、バージョン間の互換性の強固さによって、結果が異なる場合があります。デフォルトは 1.0f です。 |
yarn.timeline-service.writer.class |
バックエンドストレージライターのクラス。デフォルトは HBase ストレージライターです。 |
yarn.timeline-service.reader.class |
バックエンドストレージリーダーのクラス。デフォルトは HBase ストレージリーダーです。 |
yarn.system-metrics-publisher.enabled |
RM と NM によって、YARN システムメトリクスがタイムラインサービスに公開されるかどうかを制御する設定。デフォルトは false です。 |
yarn.timeline-service.schema.prefix |
hbase テーブルのスキーマプレフィックス。デフォルトは「prod.」です。 |
構成プロパティ | 説明 |
---|---|
yarn.timeline-service.hostname |
タイムラインサービス Web アプリケーションのホスト名。デフォルトは 0.0.0.0 です |
yarn.timeline-service.reader.webapp.address |
タイムラインリーダー Web アプリケーションの HTTP アドレス。デフォルトは ${yarn.timeline-service.hostname}:8188 です。 |
yarn.timeline-service.reader.webapp.https.address |
タイムラインリーダー Web アプリケーションの HTTPS アドレス。デフォルトは ${yarn.timeline-service.hostname}:8190 です。 |
yarn.timeline-service.reader.bind-host |
タイムラインリーダーがバインドする実際のアドレス。このオプションのアドレスが設定されている場合、リーダーサーバーはこのアドレスと yarn.timeline-service.reader.webapp.address で指定されたポートにバインドします。これは、サービスをすべてのインターフェースでリッスンさせるために、0.0.0.0 に設定する場合に最も役立ちます。 |
yarn.timeline-service.hbase.configuration.file |
タイムラインサービス hbase クラスターに接続するために使用される hbase-site.xml 構成ファイルへのオプションの URL。空または指定されていない場合、HBase 構成はクラスパスからロードされます。指定されている場合、指定された構成ファイルの値は、クラスパスに存在する値よりも優先されます。デフォルトは null です。 |
yarn.timeline-service.writer.flush-interval-seconds |
タイムラインコレクターがタイムラインライターをフラッシュする頻度を制御する設定。デフォルトは 60 です。 |
yarn.timeline-service.app-collector.linger-period.ms |
アプリケーションマスターコンテナーが終了した後、NM でアプリケーションコレクターがアクティブになるまでの期間。デフォルトは 60000 (60 秒) です。 |
yarn.timeline-service.timeline-client.number-of-async-entities-to-merge |
タイムライン V2 クライアントは、これらの多くの非同期エンティティ (利用可能な場合) をマージしてから、REST ATS V2 API を呼び出して送信を試みます。デフォルトは 10 です。 |
yarn.timeline-service.hbase.coprocessor.app-final-value-retention-milliseconds |
完了したアプリケーションのメトリクスの最終値が、フローの合計にマージされる前に保持される期間を制御する設定。デフォルトは259200000 (3日間) です。これはHBaseクラスタで設定する必要があります。 |
yarn.rm.system-metrics-publisher.emit-container-events |
YARNコンテナのメトリクスをRMがタイムラインサーバーに発行するかどうかを制御する設定。この設定はATS V2用です。デフォルトはfalse です。 |
yarn.nodemanager.emit-container-events |
YARNコンテナのメトリクスをNMがタイムラインサーバーに発行するかどうかを制御する設定。この設定はATS V2用です。デフォルトはtrue です。 |
yarn.timeline-service.http-authentication.type
をkerberos
に設定するとセキュリティが有効になり、その後、以下の構成オプションが利用可能になります。
構成プロパティ | 説明 |
---|---|
yarn.timeline-service.http-authentication.type |
タイムラインサーバー(コレクター/リーダー)のHTTPエンドポイントに使用される認証を定義します。サポートされている値は、simple / kerberos / #AUTHENTICATION_HANDLER_CLASSNAME# です。デフォルトはsimple です。 |
yarn.timeline-service.http-authentication.simple.anonymous.allowed |
「simple」認証を使用している場合に、タイムラインサーバーが匿名リクエストを許可するかどうかを示します。デフォルトはtrue です。 |
yarn.timeline-service.http-authentication.kerberos.principal |
タイムラインサーバー(コレクター/リーダー)のHTTPエンドポイントに使用されるKerberosプリンシパル。 |
yarn.timeline-service.http-authentication.kerberos.keytab |
タイムラインサーバー(コレクター/リーダー)のHTTPエンドポイントに使用されるKerberosキータブ。 |
yarn.timeline-service.principal |
タイムラインリーダーのKerberosプリンシパル。NMプリンシパルは、NM内で補助サービスとして実行されるため、タイムラインコレクターに使用されます。 |
yarn.timeline-service.keytab |
タイムラインリーダーのKerberosキータブ。NMキータブは、NM内で補助サービスとして実行されるため、タイムラインコレクターに使用されます。 |
yarn.timeline-service.delegation.key.update-interval |
デフォルトは86400000 (1日) です。 |
yarn.timeline-service.delegation.token.renew-interval |
デフォルトは86400000 (1日) です。 |
yarn.timeline-service.delegation.token.max-lifetime |
デフォルトは604800000 (7日間) です。 |
yarn.timeline-service.read.authentication.enabled |
タイムラインサービスv2データの読み取りに対する認証チェックを有効または無効にします。デフォルトはfalse で、無効になっています。 |
yarn.timeline-service.read.allowed.users |
ユーザーのコンマ区切りリスト、続いてスペース、次にグループのコンマ区切りリスト。これにより、このユーザーとグループのリストがデータの読み取りを許可され、他のすべてのユーザーが拒否されます。デフォルト値はnoneに設定されています。認証が有効な場合、この設定は必須です。 |
yarn.webapp.filter-entity-list-by-user |
デフォルトはfalseです。trueに設定され、yarn.timeline-service.read.authentication.enabledが無効になっている場合、エンティティのリストはリモートユーザーエンティティのみに制限されます。これは、リストAPIのYARN共通設定です。この構成を使用すると、TimelineReaderは呼び出し元のUGIをエンティティ所有者で認証します。一致しない場合、これらのエンティティは応答から削除されます。 |
タイムラインサービスv.2のクロスオリジンサポート (CORS) を有効にするには、次の構成パラメータを設定してください。
yarn-site.xmlで、yarn.timeline-service.http-cross-origin.enabledをtrueに設定します。
core-site.xmlで、org.apache.hadoop.security.HttpCrossOriginFilterInitializerをhadoop.http.filter.initializersに追加します。
クロスオリジンサポートに使用される構成の詳細については、HttpAuthenticationを参照してください。yarn.timeline-service.http-cross-origin.enabledがtrueに設定されている場合、hadoop.http.cross-origin.enabledをオーバーライドすることに注意してください。
タイムラインサービスv.2のストレージを準備するために、いくつかの手順を実行する必要があります。
ステップ1) HBaseクラスタの設定
ステップ2) コプロセッサの有効化
ステップ3) タイムラインサービスv.2のスキーマの作成
各ステップについては、以下で詳しく説明します。
最初の部分は、ストレージクラスタとして使用するApache HBaseクラスタを設定または選択することです。サポートされているApache HBaseのバージョンは、1.2.6 (デフォルト) および2.0.0-beta1です。1.0.xバージョンはタイムラインサービスv.2では機能しません。デフォルトでは、HadoopリリースはHBase 1.2.6でビルドされています。HBase 2.0.0-beta1を使用するには、オプション-Dhbase.profile=2.0を使用してソースからビルドします。
HBaseには異なるデプロイモードがあります。それらを理解し、セットアップに適したモードを選択するには、HBaseの書籍を参照してください。(http://hbase.apache.org/book.html#standalone_dist)
データのロードは軽いが、ノードの出入りに関係なくデータを永続化する必要があるApache HBaseクラスタの単純なデプロイプロファイルを使用する場合は、「HDFS上のスタンドアロンHBase」デプロイモードを検討できます。
これはスタンドアロンHBaseセットアップの便利なバリエーションであり、1つのJVM内で実行されているすべてのHBaseデーモンがありますが、ローカルファイルシステムに永続化するのではなく、HDFSインスタンスに永続化します。データが複製されるHDFSに書き込むことで、ノードの出入りに関係なくデータが永続化されます。このスタンドアロンバリアントを構成するには、hbase-site.xml
を編集して、hbase.rootdir
をHDFSインスタンス内のディレクトリを指すように設定し、hbase.cluster.distributed
をfalseに設定します。例:
<configuration> <property> <name>hbase.rootdir</name> <value>hdfs://namenode.example.org:8020/hbase</value> </property> <property> <name>hbase.cluster.distributed</name> <value>false</value> </property> </configuration>
このモードの詳細については、http://hbase.apache.org/book.html#standalone.over.hdfsを参照してください。
使用するApache HBaseクラスタの準備ができたら、次の手順を実行します。
このバージョンでは、コプロセッサは動的にロードされます (flowrun
テーブルのテーブルコプロセッサ)。
タイムラインサービスjarをHBaseがロードできるHDFSにコピーします。これは、スキーマクリエータでflowrun
テーブルを作成するために必要です。デフォルトのHDFSの場所は/hbase/coprocessor
です。例:
hadoop fs -mkdir /hbase/coprocessor hadoop fs -put hadoop-yarn-server-timelineservice-hbase-coprocessor-3.2.0-SNAPSHOT.jar /hbase/coprocessor/hadoop-yarn-server-timelineservice.jar
jarをhdfsの別の場所に配置する場合は、yarn.timeline-service.hbase.coprocessor.jar.hdfs.location
というYARN構成設定も存在します。例:
<property> <name>yarn.timeline-service.hbase.coprocessor.jar.hdfs.location</name> <value>/custom/hdfs/path/jarName</value> </property>
スキーマの作成は、タイムラインサービステーブルを格納するHBaseクラスタで実行できます。スキーマクリエータツールには、timelineservice-hbaseとhbase-serverの両方のjarが必要です。したがって、スキーマの作成中に、hbaseクラスパスにyarn-timelineservice-hbase jarが含まれていることを確認する必要があります。
hbaseクラスタでは、上記のステップでコプロセッサのためにそこに配置したため、hdfsから取得できます。
hadoop fs -get /hbase/coprocessor/hadoop-yarn-server-timelineservice-hbase-client-${project.version}.jar <local-dir>/. hadoop fs -get /hbase/coprocessor/hadoop-yarn-server-timelineservice-${project.version}.jar <local-dir>/. hadoop fs -get /hbase/coprocessor/hadoop-yarn-server-timelineservice-hbase-common-${project.version}.jar <local-dir>/.
次に、次のようにhbaseクラスパスに追加します。
export HBASE_CLASSPATH=$HBASE_CLASSPATH:/home/yarn/hadoop-current/share/hadoop/yarn/timelineservice/hadoop-yarn-server-timelineservice-hbase-client-${project.version}.jar export HBASE_CLASSPATH=$HBASE_CLASSPATH:/home/yarn/hadoop-current/share/hadoop/yarn/timelineservice/hadoop-yarn-server-timelineservice-${project.version}.jar export HBASE_CLASSPATH=$HBASE_CLASSPATH:/home/yarn/hadoop-current/share/hadoop/yarn/timelineservice/hadoop-yarn-server-timelineservice-hbase-common-${project.version}.jar
最後に、スキーマクリエータツールを実行して、必要なテーブルを作成します。
bin/hbase org.apache.hadoop.yarn.server.timelineservice.storage.TimelineSchemaCreator -create
TimelineSchemaCreator
ツールは、特にテスト中に役立つ可能性のあるいくつかのオプションをサポートしています。たとえば、-skipExistingTable
(短縮形は-s
) を使用して、既存のテーブルをスキップし、スキーマの作成に失敗するのではなく、他のテーブルの作成を続行できます。デフォルトでは、テーブルのスキーマプレフィックスは「prod.」になります。オプションまたは「-help」(短縮形は「-h」) が指定されていない場合、コマンドの使用法が出力されます。(-entityTableName、-appToflowTableName、-applicationTableName、-subApplicationTableName) オプションは、デフォルトのテーブル名をオーバーライドするのに役立ちます。カスタムテーブル名を使用する場合は、yarn.timeline-service.hbase.configuration.fileで構成されたhbase-site.xmlで、対応する以下の構成をカスタムテーブル名とともに設定する必要があります。
yarn.timeline-service.app-flow.table.name yarn.timeline-service.entity.table.name yarn.timeline-service.application.table.name yarn.timeline-service.subapplication.table.name yarn.timeline-service.flowactivity.table.name yarn.timeline-service.flowrun.table.name yarn.timeline-service.domain.table.name
以下は、タイムラインサービスv.2を開始するための基本的な構成です。
<property> <name>yarn.timeline-service.version</name> <value>2.0f</value> </property> <property> <name>yarn.timeline-service.enabled</name> <value>true</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle,timeline_collector</value> </property> <property> <name>yarn.nodemanager.aux-services.timeline_collector.class</name> <value>org.apache.hadoop.yarn.server.timelineservice.collector.PerNodeTimelineCollectorsAuxService</value> </property> <property> <description>The setting that controls whether yarn system metrics is published on the Timeline service or not by RM And NM.</description> <name>yarn.system-metrics-publisher.enabled</name> <value>true</value> </property>
構成を介して補助サービスを設定する代わりに、補助サービスマニフェストを使用する場合は、マニフェストサービス配列に、以下のようにtimeline_collectorサービスが含まれていることを確認してください。
{ "services": [ { "name": "timeline_collector", "configuration": { "properties": { "class.name": "org.apache.hadoop.yarn.server.timelineservice.collector.PerNodeTimelineCollectorsAuxService" } } } ] }
さらに、同じApache HBaseストレージにデータを保存するために複数のクラスタを使用している場合は、YARNクラスタ名を合理的に一意の値に設定することをお勧めします。
<property> <name>yarn.resourcemanager.cluster-id</name> <value>my_research_test_cluster</value> </property>
また、クライアントHadoopクラスタ構成にhbase-site.xml
構成ファイルを追加して、使用しているApache HBaseクラスタにデータを書き込めるようにするか、yarn.timeline-service.hbase.configuration.file
を同じhbase-site.xml
を指すファイルURLに設定します。例:
<property> <description> Optional URL to an hbase-site.xml configuration file to be used to connect to the timeline-service hbase cluster. If empty or not specified, then the HBase configuration will be loaded from the classpath. When specified the values in the specified configuration file will override those from the ones that are present on the classpath. </description> <name>yarn.timeline-service.hbase.configuration.file</name> <value>file:/etc/hbase/hbase-ats-dc1/hbase-site.xml</value> </property>
タイムラインサービス1.5とv.2の両方を構成するには、次のプロパティを追加します。
<property> <name>yarn.timeline-service.versions</name> <value>1.5f,2.0f</value> </property>
上記が構成されていない場合、デフォルトではyarn.timeline-service.version
で設定されたバージョンになります。
リソースマネージャーとノードマネージャーを再起動して、新しい構成を適用します。コレクターは、リソースマネージャー内およびノードマネージャー内で埋め込み方式で起動します。
タイムラインサービスリーダーは、個別のYARNデーモンであり、次の構文を使用して起動できます。
$ yarn-daemon.sh start timelinereader
MapReduceフレームワークデータをタイムラインサービスv.2に書き込むには、mapred-site.xml
で次の構成を有効にします。
<property> <name>mapreduce.job.emit-timeline-data</name> <value>true</value> </property>
現在、タイムラインサービスv2 alpha1バージョンを実行している場合は、以下をお勧めします。
AppToFlowの行キーが変更されたため、テーブル内の既存のデータをクリアします (テーブルを切り捨てます)。
コプロセッサは現在、GAで動的にロードされるテーブルレベルのコプロセッサです。テーブルを削除し、hdfs上のコプロセッサjarをGAのものに置き換え、リージョンサーバーを再起動して、flowrun
テーブルを再作成することをお勧めします。
このセクションは、タイムラインサービスv.2と統合したいYARNアプリケーション開発者向けです。
開発者は、TimelineV2Client
APIを使用して、フレームワークごとのデータをタイムラインサービスv.2に発行する必要があります。v.2のエンティティ/オブジェクトAPIは、オブジェクトモデルが大幅に変更されているため、v.1とは異なります。v.2タイムラインエンティティクラスはorg.apache.hadoop.yarn.api.records.timelineservice.TimelineEntity
です。
タイムラインサービスv.2のputEntities
メソッドには、putEntities
とputEntitiesAsync
の2つの種類があります。前者は、より重要なデータ (ライフサイクルイベントなど) を書き込むために使用する必要があるブロッキング操作です。後者は、ノンブロッキング操作です。どちらにも戻り値がないことに注意してください。
TimelineV2Client
を作成するには、静的メソッドTimelineV2Client.createTimelineClient
にアプリケーションIDを渡す必要があります。
例:
// Create and start the Timeline client v.2 TimelineV2Client timelineClient = TimelineV2Client.createTimelineClient(appId); timelineClient.init(conf); timelineClient.start(); try { TimelineEntity myEntity = new TimelineEntity(); myEntity.setType("MY_APPLICATION"); myEntity.setId("MyApp1"); // Compose other entity info // Blocking write timelineClient.putEntities(myEntity); TimelineEntity myEntity2 = new TimelineEntity(); // Compose other info // Non-blocking write timelineClient.putEntitiesAsync(myEntity2); } catch (IOException | YarnException e) { // Handle the exception } finally { // Stop the Timeline client timelineClient.stop(); }
上記のように、タイムラインサービスv.2に書き込むには、YARNアプリケーションIDを指定する必要があります。現在、タイムラインサービスに書き込むには、クラスタ上にいる必要があることに注意してください。たとえば、アプリケーションマスターまたはコンテナ内のコードはタイムラインサービスに書き込むことができますが、クラスタ外のMapReduceジョブサブミッターは書き込むことができません。
タイムラインv2クライアントを作成した後、ユーザーは、アプリケーションのコレクターアドレスとコレクタートークン(セキュアモードのみ)を含むタイムラインコレクター情報を設定する必要もあります。AMRMClient
を使用する場合は、AMRMClient#registerTimelineV2Client
を呼び出してタイムラインクライアントを登録するだけで十分です。
amRMClient.registerTimelineV2Client(timelineClient);
それ以外の場合は、アドレスをAM割り当て応答から取得し、タイムラインクライアントに明示的に設定する必要があります。
timelineClient.setTimelineCollectorInfo(response.getCollectorInfo());
以前のバージョンと同様に、独自のエンティティ、イベント、およびメトリクスを作成して発行できます。
TimelineEntityオブジェクトには、タイムラインデータを保持するための次のフィールドがあります。
タイムラインメトリクスを投稿する際、TimelineMetric#setRealtimeAggregationOp()
メソッドを使用して、各メトリクスをどのように集計するかを選択できることに注意してください。ここでの「集計」とは、一連のエンティティに対してTimelineMetricOperation
のいずれかを適用することを意味します。タイムラインサービスv2は、組み込みのアプリケーションレベル集計を提供しており、これは1つのYARNアプリケーション内の異なるタイムラインエンティティからのメトリクスを集計することを意味します。現在、TimelineMetricOperation
でサポートされている操作は2種類あります。
MAX
: すべてのTimelineMetric
オブジェクトの中で最大値を取得します。SUM
: すべてのTimelineMetric
オブジェクトの合計を取得します。デフォルトでは、NOP
操作はリアルタイム集計操作を実行しないことを意味します。
アプリケーションフレームワークは、Timeline Service v.2が提供するフローサポートを利用するために、可能な限り「フローコンテキスト」を設定する必要があります。フローコンテキストは以下で構成されます。
フローコンテキストが指定されていない場合、これらの属性にはデフォルト値が提供されます。
YARNアプリケーションタグを介してフローコンテキストを提供できます。
ApplicationSubmissionContext appContext = app.getApplicationSubmissionContext(); // set the flow context as YARN application tags Set<String> tags = new HashSet<>(); tags.add(TimelineUtils.generateFlowNameTag("distributed grep")); tags.add(Timelineutils.generateFlowVersionTag("3df8b0d6100530080d2e0decf9e528e57c42a90a")); tags.add(TimelineUtils.generateFlowRunIdTag(System.currentTimeMillis())); appContext.setApplicationTags(tags);
注意:ResourceManagerは、YARNアプリケーションタグを格納する前に小文字に変換します。したがって、REST APIクエリで使用する前に、フロー名とフローバージョンを小文字に変換する必要があります。
Timeline Service v.2のクエリは現在、REST API経由でのみサポートされています。YARNライブラリにはAPIクライアントは実装されていません。
v.2 REST APIは、Timeline Service Webサービスのパス/ws/v2/timeline/
の下に実装されています。
以下は、APIの非公式な説明です。
GET /ws/v2/timeline/
サービスインスタンスとバージョン情報を記述するJSONオブジェクトを返します。
{ "About":"Timeline Reader API", "timeline-service-version":"3.0.0-alpha1-SNAPSHOT", "timeline-service-build-version":"3.0.0-alpha1-SNAPSHOT from fb0acd08e6f0b030d82eeb7cbfa5404376313e60 by sjlee source checksum be6cba0e42417d53be16459e1685e7", "timeline-service-version-built-on":"2016-04-11T23:15Z", "hadoop-version":"3.0.0-alpha1-SNAPSHOT", "hadoop-build-version":"3.0.0-alpha1-SNAPSHOT from fb0acd08e6f0b030d82eeb7cbfa5404376313e60 by sjlee source checksum ee968fd0aedcc7384230ee3ca216e790", "hadoop-version-built-on":"2016-04-11T23:14Z" }
以下は、REST APIでサポートされているクエリを示しています。
フロークエリAPIを使用すると、最近実行されたアクティブなフローのリストを取得できます。クラスター名なしでRESTエンドポイントを使用した場合、yarn-site.xml
の構成yarn.resourcemanager.cluster-id
で指定されたクラスターが使用されます。どのフローも述語に一致しない場合、空のリストが返されます。
GET /ws/v2/timeline/clusters/{cluster name}/flows/ or GET /ws/v2/timeline/flows/
limit
- 指定した場合、返すフローの数を定義します。limitの最大可能な値は、Longの最大値です。指定されていない場合、または0未満の値がある場合は、limitは100と見なされます。daterange
- 指定した場合、「[開始日]-[終了日]」(つまり、開始日と終了日が「-」で区切られている)または単一の日付として与えられます。日付はyyyyMMdd形式で解釈され、UTCであると想定されます。単一の日付が指定されている場合、その日付でアクティブなすべてのフローが返されます。開始日と終了日の両方が指定されている場合、開始日と終了日の間でアクティブなすべてのフローが返されます。開始日のみが指定されている場合、開始日以降にアクティブなフローが返されます。終了日のみが指定されている場合、終了日以前にアクティブなフローが返されます。fromid
- 指定した場合、指定されたfromidから次のフローのセットを取得します。取得されたエンティティのセットには、指定されたfromidが含まれます。fromidは、以前に送信されたフローエンティティレスポンスのFROM_ID infoキーに関連付けられた値から取得する必要があります。[ { "metrics": [], "events": [], "id": "test-cluster/1460419200000/sjlee@ds-date", "type": "YARN_FLOW_ACTIVITY", "createdtime": 0, "flowruns": [ { "metrics": [], "events": [], "id": "sjlee@ds-date/1460420305659", "type": "YARN_FLOW_RUN", "createdtime": 0, "info": { "SYSTEM_INFO_FLOW_VERSION": "1", "SYSTEM_INFO_FLOW_RUN_ID": 1460420305659, "SYSTEM_INFO_FLOW_NAME": "ds-date", "SYSTEM_INFO_USER": "sjlee" }, "isrelatedto": {}, "relatesto": {} }, { "metrics": [], "events": [], "id": "sjlee@ds-date/1460420587974", "type": "YARN_FLOW_RUN", "createdtime": 0, "info": { "SYSTEM_INFO_FLOW_VERSION": "1", "SYSTEM_INFO_FLOW_RUN_ID": 1460420587974, "SYSTEM_INFO_FLOW_NAME": "ds-date", "SYSTEM_INFO_USER": "sjlee" }, "isrelatedto": {}, "relatesto": {} } ], "info": { "SYSTEM_INFO_CLUSTER": "test-cluster", "UID": "test-cluster!sjlee!ds-date", "FROM_ID": "test-cluster!1460419200000!sjlee!ds-date", "SYSTEM_INFO_FLOW_NAME": "ds-date", "SYSTEM_INFO_DATE": 1460419200000, "SYSTEM_INFO_USER": "sjlee" }, "isrelatedto": {}, "relatesto": {} } ]
フロー実行クエリAPIを使用すると、特定のフローの実行(特定のインスタンス)を取得するために、さらにドリルダウンできます。これにより、指定されたフローに属する最新の実行が返されます。クラスター名なしでRESTエンドポイントを使用した場合、yarn-site.xml
の構成yarn.resourcemanager.cluster-id
で指定されたクラスターが使用されます。どのフロー実行も述語に一致しない場合、空のリストが返されます。
GET /ws/v2/timeline/clusters/{cluster name}/users/{user name}/flows/{flow name}/runs/ or GET /ws/v2/timeline/users/{user name}/flows/{flow name}/runs/
limit
- 指定した場合、返すフローの数を定義します。limitの最大可能な値は、Longの最大値です。指定されていない場合、または0未満の値がある場合は、limitは100と見なされます。createdtimestart
- 指定した場合、このタイムスタンプ以降に開始されたフロー実行のみが返されます。createdtimeend
- 指定した場合、このタイムスタンプより前に開始されたフロー実行のみが返されます。metricstoretrieve
- 指定した場合、取得するメトリクスまたは取得せずにレスポンスで返すメトリクスを定義します。metricstoretrieveは、次の形式の式にすることができます。METRICS
がfieldsクエリパラメータで指定されているかどうかに関係なく、メトリックが取得されます。スペースなどのURLセーフでない文字は適切にエンコードする必要があることに注意してください。fields
- 取得するフィールドを指定します。フロー実行のクエリの場合、ALL
またはMETRICS
のみが有効なフィールドです。他のフィールドは、HTTP 400(Bad Request)レスポンスにつながります。指定されていない場合、レスポンスでid、type、createdtime、infoの各フィールドが返されます。fromid
- 指定した場合、指定されたfromidから次のフロー実行エンティティのセットを取得します。取得されたエンティティのセットには、指定されたfromidが含まれます。fromidは、以前に送信されたフローエンティティレスポンスのFROM_ID infoキーに関連付けられた値から取得する必要があります。[ { "metrics": [], "events": [], "id": "sjlee@ds-date/1460420587974", "type": "YARN_FLOW_RUN", "createdtime": 1460420587974, "info": { "UID": "test-cluster!sjlee!ds-date!1460420587974", "FROM_ID": "test-cluster!sjlee!ds-date!1460420587974", "SYSTEM_INFO_FLOW_RUN_ID": 1460420587974, "SYSTEM_INFO_FLOW_NAME": "ds-date", "SYSTEM_INFO_FLOW_RUN_END_TIME": 1460420595198, "SYSTEM_INFO_USER": "sjlee" }, "isrelatedto": {}, "relatesto": {} }, { "metrics": [], "events": [], "id": "sjlee@ds-date/1460420305659", "type": "YARN_FLOW_RUN", "createdtime": 1460420305659, "info": { "UID": "test-cluster!sjlee!ds-date!1460420305659", "FROM_ID": "test-cluster!sjlee!ds-date!1460420305659", "SYSTEM_INFO_FLOW_RUN_ID": 1460420305659, "SYSTEM_INFO_FLOW_NAME": "ds-date", "SYSTEM_INFO_FLOW_RUN_END_TIME": 1460420311966, "SYSTEM_INFO_USER": "sjlee" }, "isrelatedto": {}, "relatesto": {} } ]
このAPIを使用すると、クラスター、ユーザー、フロー名、および実行IDで識別される特定のフロー実行をクエリできます。クラスター名なしでRESTエンドポイントを使用した場合、yarn-site.xml
の構成yarn.resourcemanager.cluster-id
で指定されたクラスターが使用されます。個々のフロー実行をクエリする際には、デフォルトでメトリックが返されます。
GET /ws/v2/timeline/clusters/{cluster name}/users/{user name}/flows/{flow name}/runs/{run id} or GET /ws/v2/timeline/users/{user name}/flows/{flow name}/runs/{run id}
metricstoretrieve
- 指定した場合、取得するメトリクスまたは取得せずにレスポンスで返すメトリクスを定義します。metricstoretrieveは、次の形式の式にすることができます。{ "metrics": [ { "type": "SINGLE_VALUE", "id": "org.apache.hadoop.mapreduce.lib.input.FileInputFormatCounter:BYTES_READ", "aggregationOp": "NOP", "values": { "1465246377261": 118 } }, { "type": "SINGLE_VALUE", "id": "org.apache.hadoop.mapreduce.lib.output.FileOutputFormatCounter:BYTES_WRITTEN", "aggregationOp": "NOP", "values": { "1465246377261": 97 } } ], "events": [], "id": "varun@QuasiMonteCarlo/1465246348599", "type": "YARN_FLOW_RUN", "createdtime": 1465246348599, "isrelatedto": {}, "info": { "UID":"yarn-cluster!varun!QuasiMonteCarlo!1465246348599", "FROM_ID":"yarn-cluster!varun!QuasiMonteCarlo!1465246348599", "SYSTEM_INFO_FLOW_RUN_END_TIME":1465246378051, "SYSTEM_INFO_FLOW_NAME":"QuasiMonteCarlo", "SYSTEM_INFO_USER":"varun", "SYSTEM_INFO_FLOW_RUN_ID":1465246348599 }, "relatesto": {} }
このAPIを使用すると、特定のフローの一部であるすべてのYARNアプリケーションをクエリできます。クラスター名なしでRESTエンドポイントを使用した場合、yarn-site.xml
の構成yarn.resourcemanager.cluster-id
で指定されたクラスターが使用されます。一致するアプリケーションの数が制限を超えている場合、制限までの最新のアプリが返されます。どのアプリも述語に一致しない場合、空のリストが返されます。
GET /ws/v2/timeline/clusters/{cluster name}/users/{user name}/flows/{flow name}/apps or GET /ws/v2/timeline/users/{user name}/flows/{flow name}/apps
limit
- 指定した場合、返すアプリケーションの数を定義します。limitの最大可能な値は、Longの最大値です。指定されていない場合、または0未満の値がある場合は、limitは100と見なされます。createdtimestart
- 指定した場合、このタイムスタンプ以降に作成されたアプリケーションのみが返されます。createdtimeend
- 指定した場合、このタイムスタンプより前に作成されたアプリケーションのみが返されます。relatesto
- 指定した場合、一致するアプリケーションは、エンティティタイプに関連付けられた指定されたエンティティに関連するか、関連しない必要があります。relatestoは、次の形式の式として表されます。isrelatedto
- 指定した場合、一致するアプリケーションは、エンティティタイプに関連付けられた指定されたエンティティに関連するか、関連しない必要があります。isrelatedtoは、relatestoと同じ形式で表されます。infofilters
- 指定した場合、一致するアプリケーションは、指定されたinfoキーと完全に一致する必要があり、指定された値と等しいか等しくない必要があります。infoキーは文字列ですが、値は任意のオブジェクトにすることができます。infofiltersは、次の形式の式で表されます。conffilters
- 指定した場合、一致するアプリケーションは、指定された構成名と完全に一致する必要があり、指定された構成値と等しいか等しくないかのいずれかである必要があります。構成名と値は両方とも文字列である必要があります。conffilters は infofilters と同じ形式で表現されます。metricfilters
- 指定した場合、一致するアプリケーションは、指定されたメトリックと完全に一致する必要があり、メトリック値との指定された関係を満たす必要があります。メトリック ID は文字列であり、メトリック値は整数値である必要があります。metricfilters は次の形式の式として表現されますeventfilters
- 指定した場合、一致するアプリケーションは、式に応じて、指定されたイベントを含むか、含まない必要があります。eventfilters は次の形式の式として表現されますmetricstoretrieve
- 指定した場合、取得するメトリクスまたは取得せずにレスポンスで返すメトリクスを定義します。metricstoretrieveは、次の形式の式にすることができます。METRICS
がfieldsクエリパラメータで指定されているかどうかに関係なく、メトリックが取得されます。スペースなどのURLセーフでない文字は適切にエンコードする必要があることに注意してください。confstoretrieve
- 指定した場合、取得する構成、または取得せずに応答で返信する構成を定義します。confstoretrieve は次の形式の式にすることができます。CONFIGS
が指定されているかどうかに関係なく、構成が取得されます。スペースなどの URL に安全でない文字は適切にエンコードする必要があることに注意してください。fields
- 取得するフィールドを指定します。フィールドの可能な値は、EVENTS
、INFO
、CONFIGS
、METRICS
、RELATES_TO
、IS_RELATED_TO
および ALL
です。ALL
が指定された場合、すべてのフィールドが取得されます。複数のフィールドをコンマ区切りのリストとして指定できます。fields が指定されていない場合、応答では、アプリ ID、タイプ (YARN_APPLICATION に相当)、アプリの作成時刻、および info フィールドの UID が返されます。metricslimit
- 指定した場合、返すメトリックの数を定義します。fields に METRICS/ALL が含まれている場合、または metricstoretrieve が指定されている場合にのみ考慮されます。それ以外の場合は無視されます。metricslimit の最大可能な値は Integer の最大値です。指定されていないか、1 未満の値を持つ場合、メトリックを取得する必要がある場合、metricslimit は 1 と見なされます。つまり、メトリックの最新の単一値が返されます。metricstimestart
- 指定した場合、このタイムスタンプ以降のエンティティのメトリックが返されます。metricstimeend
- 指定した場合、このタイムスタンプ以前のエンティティのメトリックが返されます。fromid
- 指定した場合、指定された fromid から次のアプリケーションエンティティのセットを取得します。取得されたエンティティのセットには、指定された fromid が含まれます。fromid は、以前に送信されたフローエンティティ応答の FROM_ID 情報キーに関連付けられた値から取得する必要があります。[ { "metrics": [ ], "events": [ ], "type": "YARN_APPLICATION", "id": "application_1465246237936_0001", "createdtime": 1465246348599, "isrelatedto": { }, "configs": { }, "info": { "UID": "yarn-cluster!application_1465246237936_0001" "FROM_ID": "yarn-cluster!varun!QuasiMonteCarlo!1465246348599!application_1465246237936_0001", }, "relatesto": { } }, { "metrics": [ ], "events": [ ], "type": "YARN_APPLICATION", "id": "application_1464983628730_0005", "createdtime": 1465033881959, "isrelatedto": { }, "configs": { }, "info": { "UID": "yarn-cluster!application_1464983628730_0005" "FROM_ID": "yarn-cluster!varun!QuasiMonteCarlo!1465246348599!application_1464983628730_0005", }, "relatesto": { } } ]
この API を使用すると、特定のフロー実行の一部であるすべての YARN アプリケーションをクエリできます。クラスタ名なしで REST エンドポイントが使用されている場合、yarn-site.xml
の構成 yarn.resourcemanager.cluster-id
で指定されたクラスタが使用されます。一致するアプリケーションの数が制限を超える場合、制限までの最も新しいアプリケーションが返されます。述語に一致するアプリケーションがない場合は、空のリストが返されます。
GET /ws/v2/timeline/clusters/{cluster name}/users/{user name}/flows/{flow name}/runs/{run id}/apps or GET /ws/v2/timeline/users/{user name}/flows/{flow name}/runs/{run id}/apps/
limit
- 指定した場合、返すアプリケーションの数を定義します。limitの最大可能な値は、Longの最大値です。指定されていない場合、または0未満の値がある場合は、limitは100と見なされます。createdtimestart
- 指定した場合、このタイムスタンプ以降に作成されたアプリケーションのみが返されます。createdtimeend
- 指定した場合、このタイムスタンプより前に作成されたアプリケーションのみが返されます。relatesto
- 指定した場合、一致するアプリケーションは、エンティティタイプに関連付けられた指定されたエンティティに関連するか、関連しない必要があります。relatestoは、次の形式の式として表されます。isrelatedto
- 指定した場合、一致するアプリケーションは、エンティティタイプに関連付けられた指定されたエンティティに関連するか、関連しない必要があります。isrelatedtoは、relatestoと同じ形式で表されます。infofilters
- 指定した場合、一致するアプリケーションは、指定されたinfoキーと完全に一致する必要があり、指定された値と等しいか等しくない必要があります。infoキーは文字列ですが、値は任意のオブジェクトにすることができます。infofiltersは、次の形式の式で表されます。conffilters
- 指定した場合、一致するアプリケーションは、指定された構成名と完全に一致する必要があり、指定された構成値と等しいか等しくないかのいずれかである必要があります。構成名と値は両方とも文字列である必要があります。conffilters は infofilters と同じ形式で表現されます。metricfilters
- 指定した場合、一致するアプリケーションは、指定されたメトリックと完全に一致する必要があり、メトリック値との指定された関係を満たす必要があります。メトリック ID は文字列であり、メトリック値は整数値である必要があります。metricfilters は次の形式の式として表現されますeventfilters
- 指定した場合、一致するアプリケーションは、式に応じて、指定されたイベントを含むか、含まない必要があります。eventfilters は次の形式の式として表現されますmetricstoretrieve
- 指定した場合、取得するメトリクスまたは取得せずにレスポンスで返すメトリクスを定義します。metricstoretrieveは、次の形式の式にすることができます。METRICS
がfieldsクエリパラメータで指定されているかどうかに関係なく、メトリックが取得されます。スペースなどのURLセーフでない文字は適切にエンコードする必要があることに注意してください。confstoretrieve
- 指定した場合、取得する構成、または取得せずに応答で返信する構成を定義します。confstoretrieve は次の形式の式にすることができます。CONFIGS
が指定されているかどうかに関係なく、構成が取得されます。スペースなどの URL に安全でない文字は適切にエンコードする必要があることに注意してください。fields
- 取得するフィールドを指定します。フィールドの可能な値は、EVENTS
、INFO
、CONFIGS
、METRICS
、RELATES_TO
、IS_RELATED_TO
および ALL
です。ALL
が指定された場合、すべてのフィールドが取得されます。複数のフィールドをコンマ区切りのリストとして指定できます。fields が指定されていない場合、応答では、アプリ ID、タイプ (YARN_APPLICATION に相当)、アプリの作成時刻、および info フィールドの UID が返されます。metricslimit
- 指定した場合、返すメトリックの数を定義します。fields に METRICS/ALL が含まれている場合、または metricstoretrieve が指定されている場合にのみ考慮されます。それ以外の場合は無視されます。metricslimit の最大可能な値は Integer の最大値です。指定されていないか、1 未満の値を持つ場合、メトリックを取得する必要がある場合、metricslimit は 1 と見なされます。つまり、メトリックの最新の単一値が返されます。metricstimestart
- 指定した場合、このタイムスタンプ以降のエンティティのメトリックが返されます。metricstimeend
- 指定した場合、このタイムスタンプ以前のエンティティのメトリックが返されます。fromid
- 指定した場合、指定された fromid から次のアプリケーションエンティティのセットを取得します。取得されたエンティティのセットには、指定された fromid が含まれます。fromid は、以前に送信されたフローエンティティ応答の FROM_ID 情報キーに関連付けられた値から取得する必要があります。[ { "metrics": [], "events": [], "id": "application_1460419579913_0002", "type": "YARN_APPLICATION", "createdtime": 1460419580171, "info": { "UID": "test-cluster!sjlee!ds-date!1460419580171!application_1460419579913_0002" "FROM_ID": "test-cluster!sjlee!ds-date!1460419580171!application_1460419579913_0002", }, "configs": {}, "isrelatedto": {}, "relatesto": {} } ]
この API を使用すると、クラスタとアプリケーション ID で識別される単一の YARN アプリケーションをクエリできます。クラスタ名なしで REST エンドポイントが使用されている場合、yarn-site.xml
の構成 yarn.resourcemanager.cluster-id
で指定されたクラスタが使用されます。フローコンテキスト情報 (つまり、ユーザー、フロー名、および実行 ID) は必須ではありませんが、クエリパラメータで指定されている場合、クラスタとアプリ ID に基づいてフローコンテキスト情報をフェッチするための追加操作の必要性を排除できます。
GET /ws/v2/timeline/clusters/{cluster name}/apps/{app id} or GET /ws/v2/timeline/apps/{app id}
userid
- 指定した場合、このユーザーに属するアプリケーションのみが返されます。このクエリパラメータは、flowname および flowrunid クエリパラメータと一緒に指定する必要があります。そうしないと無視されます。userid、flowname、flowrunid が指定されていない場合、クエリの実行中にクラスタと appid に基づいてフローコンテキスト情報をフェッチする必要があります。flowname
- このフロー名に属するアプリケーションのみが返されます。このクエリパラメータは、userid および flowrunid クエリパラメータと一緒に指定する必要があります。そうしないと無視されます。userid、flowname、flowrunid が指定されていない場合、クエリの実行中にクラスタと appid に基づいてフローコンテキスト情報をフェッチする必要があります。flowrunid
- このフロー実行 ID に属するアプリケーションのみが返されます。このクエリパラメータは、userid および flowname クエリパラメータと一緒に指定する必要があります。そうしないと無視されます。userid、flowname、flowrunid が指定されていない場合、クエリの実行中にクラスタと appid に基づいてフローコンテキスト情報をフェッチする必要があります。metricstoretrieve
- 指定した場合、取得するメトリクスまたは取得せずにレスポンスで返すメトリクスを定義します。metricstoretrieveは、次の形式の式にすることができます。METRICS
がfieldsクエリパラメータで指定されているかどうかに関係なく、メトリックが取得されます。スペースなどのURLセーフでない文字は適切にエンコードする必要があることに注意してください。confstoretrieve
- 指定した場合、取得する構成、または取得せずに応答で返信する構成を定義します。confstoretrieve は次の形式の式にすることができます。CONFIGS
が指定されているかどうかに関係なく、構成が取得されます。スペースなどの URL に安全でない文字は適切にエンコードする必要があることに注意してください。fields
- 取得するフィールドを指定します。フィールドの可能な値は、EVENTS
、INFO
、CONFIGS
、METRICS
、RELATES_TO
、IS_RELATED_TO
および ALL
です。ALL
が指定された場合、すべてのフィールドが取得されます。複数のフィールドをコンマ区切りのリストとして指定できます。fields が指定されていない場合、応答では、アプリ ID、タイプ (YARN_APPLICATION に相当)、アプリの作成時刻、および info フィールドの UID が返されます。metricslimit
- 指定した場合、返すメトリックの数を定義します。fields に METRICS/ALL が含まれている場合、または metricstoretrieve が指定されている場合にのみ考慮されます。それ以外の場合は無視されます。metricslimit の最大可能な値は Integer の最大値です。指定されていないか、1 未満の値を持つ場合、メトリックを取得する必要がある場合、metricslimit は 1 と見なされます。つまり、メトリックの最新の単一値が返されます。metricstimestart
- 指定した場合、このタイムスタンプ以降のエンティティのメトリックが返されます。metricstimeend
- 指定した場合、このタイムスタンプ以前のエンティティのメトリックが返されます。{ "metrics": [], "events": [], "id": "application_1460419579913_0002", "type": "YARN_APPLICATION", "createdtime": 1460419580171, "info": { "UID": "test-cluster!sjlee!ds-date!1460419580171!application_1460419579913_0002" }, "configs": {}, "isrelatedto": {}, "relatesto": {} }
この API を使用すると、クラスタ ID、アプリケーション ID、およびフレームワークごとのエンティティタイプで識別されるジェネリックエンティティをクエリできます。クラスタ名なしで REST エンドポイントが使用されている場合、yarn-site.xml
の構成 yarn.resourcemanager.cluster-id
で指定されたクラスタが使用されます。フローコンテキスト情報 (つまり、ユーザー、フロー名、および実行 ID) は必須ではありませんが、クエリパラメータで指定されている場合、クラスタとアプリ ID に基づいてフローコンテキスト情報をフェッチするための追加操作の必要性を排除できます。一致するエンティティの数が制限を超える場合、制限までの最新のエンティティが返されます。このエンドポイントを使用して、コンテナ、アプリケーション試行、またはクライアントがバックエンドに配置するその他のジェネリックエンティティをクエリできます。たとえば、エンティティタイプとして YARN_CONTAINER
を指定してコンテナをクエリしたり、エンティティタイプとして YARN_APPLICATION_ATTEMPT
を指定してアプリケーション試行をクエリしたりできます。述語に一致するエンティティがない場合は、空のリストが返されます。
GET /ws/v2/timeline/clusters/{cluster name}/apps/{app id}/entities/{entity type} or GET /ws/v2/timeline/apps/{app id}/entities/{entity type}
userid
- 指定した場合、このユーザーに属するエンティティのみが返されます。このクエリパラメータは、flowname および flowrunid クエリパラメータと一緒に指定する必要があります。そうしないと無視されます。userid、flowname、flowrunid が指定されていない場合、クエリの実行中にクラスタと appid に基づいてフローコンテキスト情報をフェッチする必要があります。flowname
- 指定した場合、このフロー名に属するエンティティのみが返されます。このクエリパラメータは、userid および flowrunid クエリパラメータと一緒に指定する必要があります。そうしないと無視されます。userid、flowname、flowrunid が指定されていない場合、クエリの実行中にクラスタと appid に基づいてフローコンテキスト情報をフェッチする必要があります。flowrunid
- 指定した場合、このフロー実行 ID に属するエンティティのみが返されます。このクエリパラメータは、userid および flowname クエリパラメータと一緒に指定する必要があります。そうしないと無視されます。userid、flowname、flowrunid が指定されていない場合、クエリの実行中にクラスタと appid に基づいてフローコンテキスト情報をフェッチする必要があります。limit
- 指定した場合、返すエンティティの数を定義します。制限の最大可能な値は Long の最大値です。指定されていないか、0 未満の値を持つ場合、制限は 100 と見なされます。createdtimestart
- 指定した場合、このタイムスタンプ以降に作成されたエンティティのみが返されます。createdtimeend
- 指定した場合、このタイムスタンプ以前に作成されたエンティティのみが返されます。relatesto
- 指定した場合、一致するエンティティは、エンティティタイプに関連付けられた指定されたエンティティに関連するか、関連しない必要があります。relatesto は次の形式の式として表現されますisrelatedto
- 指定した場合、一致するエンティティは、エンティティタイプに関連付けられた指定されたエンティティに関連するか、関連しない必要があります。isrelatedto は relatesto と同じ形式で表現されます。infofilters
- 指定した場合、一致するエンティティは、指定された情報キーと完全に一致する必要があり、指定された値と等しいか等しくないかのいずれかである必要があります。情報キーは文字列ですが、値は任意のオブジェクトにすることができます。infofilters は次の形式の式として表現されますconffilters
- 指定した場合、一致するエンティティは、指定された構成名と完全に一致し、かつ指定された構成値と等しいか等しくないかのいずれかである必要があります。構成名と値の両方が文字列である必要があります。conffiltersはinfofiltersと同じ形式で表現されます。metricfilters
- 指定した場合、一致するエンティティは、指定されたメトリックと完全に一致し、メトリック値との指定された関係を満たす必要があります。メトリック ID は文字列である必要があり、メトリック値は整数値である必要があります。metricfiltersは次の形式の式で表されます。eventfilters
- 指定した場合、一致するエンティティは、式に応じて指定されたイベントを含むか含まない必要があります。eventfiltersは次の形式の式で表されます。metricstoretrieve
- 指定した場合、取得するメトリクスまたは取得せずにレスポンスで返すメトリクスを定義します。metricstoretrieveは、次の形式の式にすることができます。METRICS
がfieldsクエリパラメータで指定されているかどうかに関係なく、メトリックが取得されます。スペースなどのURLセーフでない文字は適切にエンコードする必要があることに注意してください。confstoretrieve
- 指定した場合、取得する構成、または取得せずに応答で返信する構成を定義します。confstoretrieve は次の形式の式にすることができます。CONFIGS
が指定されているかどうかに関係なく、構成が取得されます。スペースなどの URL に安全でない文字は適切にエンコードする必要があることに注意してください。fields
- 取得するフィールドを指定します。fields の可能な値は、EVENTS
、INFO
、CONFIGS
、METRICS
、RELATES_TO
、IS_RELATED_TO
および ALL
です。ALL
が指定された場合は、すべてのフィールドが取得されます。複数のフィールドは、カンマ区切りのリストとして指定できます。フィールドが指定されていない場合、レスポンスでは、エンティティ ID、エンティティ タイプ、作成時刻、および info フィールドの UID が返されます。metricslimit
- 指定した場合、返すメトリックの数を定義します。fields に METRICS/ALL が含まれている場合、または metricstoretrieve が指定されている場合にのみ考慮されます。それ以外の場合は無視されます。metricslimit の最大可能な値は Integer の最大値です。指定されていないか、1 未満の値を持つ場合、メトリックを取得する必要がある場合、metricslimit は 1 と見なされます。つまり、メトリックの最新の単一値が返されます。metricstimestart
- 指定した場合、このタイムスタンプ以降のエンティティのメトリックが返されます。metricstimeend
- 指定した場合、このタイムスタンプ以前のエンティティのメトリックが返されます。fromid
- 指定した場合、指定された fromid から次の汎用エンティティのセットを取得します。取得されるエンティティのセットには、指定された fromid が含まれます。fromid は、以前に送信されたフローエンティティレスポンスの FROM_ID info キーに関連付けられた値から取得する必要があります。[ { "metrics": [ ], "events": [ ], "type": "YARN_APPLICATION_ATTEMPT", "id": "appattempt_1465246237936_0001_000001", "createdtime": 1465246358873, "isrelatedto": { }, "configs": { }, "info": { "UID": "yarn-cluster!application_1465246237936_0001!YARN_APPLICATION_ATTEMPT!appattempt_1465246237936_0001_000001" "FROM_ID": "yarn-cluster!sjlee!ds-date!1460419580171!application_1465246237936_0001!YARN_APPLICATION_ATTEMPT!0!appattempt_1465246237936_0001_000001" }, "relatesto": { } }, { "metrics": [ ], "events": [ ], "type": "YARN_APPLICATION_ATTEMPT", "id": "appattempt_1465246237936_0001_000002", "createdtime": 1465246359045, "isrelatedto": { }, "configs": { }, "info": { "UID": "yarn-cluster!application_1465246237936_0001!YARN_APPLICATION_ATTEMPT!appattempt_1465246237936_0001_000002" "FROM_ID": "yarn-cluster!sjlee!ds-date!1460419580171!application_1465246237936_0001!YARN_APPLICATION_ATTEMPT!0!appattempt_1465246237936_0001_000002" }, "relatesto": { } } ]
この API を使用すると、クラスター ID、doAsUser、およびエンティティタイプによって識別されるユーザーごとに汎用エンティティをクエリできます。クラスター名のない REST エンドポイントが使用されている場合、yarn-site.xml
の構成 yarn.resourcemanager.cluster-id
で指定されたクラスターが使用されます。一致するエンティティの数が制限を超えている場合、制限までの最新のエンティティが返されます。このエンドポイントは、クライアントがバックエンドに配置する汎用エンティティをクエリするために使用できます。たとえば、エンティティタイプを TEZ_DAG_ID
として指定することで、ユーザーエンティティをクエリできます。述語に一致するエンティティがない場合は、空のリストが返されます。注: 現時点では、アプリケーションの所有者とは異なる doAsUser で公開されているエンティティのみをクエリできます。
GET /ws/v2/timeline/clusters/{cluster name}/users/{userid}/entities/{entitytype} or GET /ws/v2/timeline/users/{userid}/entities/{entitytype}
limit
- 指定した場合、返すエンティティの数を定義します。制限の最大可能な値は Long の最大値です。指定されていないか、0 未満の値を持つ場合、制限は 100 と見なされます。createdtimestart
- 指定した場合、このタイムスタンプ以降に作成されたエンティティのみが返されます。createdtimeend
- 指定した場合、このタイムスタンプ以前に作成されたエンティティのみが返されます。relatesto
- 指定した場合、一致するエンティティは、エンティティタイプに関連付けられた指定されたエンティティに関連するか、関連しない必要があります。relatesto は次の形式の式として表現されますisrelatedto
- 指定した場合、一致するエンティティは、エンティティタイプに関連付けられた指定されたエンティティに関連するか、関連しない必要があります。isrelatedto は relatesto と同じ形式で表現されます。infofilters
- 指定した場合、一致するエンティティは、指定された情報キーと完全に一致する必要があり、指定された値と等しいか等しくないかのいずれかである必要があります。情報キーは文字列ですが、値は任意のオブジェクトにすることができます。infofilters は次の形式の式として表現されますconffilters
- 指定した場合、一致するエンティティは、指定された構成名と完全に一致し、かつ指定された構成値と等しいか等しくないかのいずれかである必要があります。構成名と値の両方が文字列である必要があります。conffiltersはinfofiltersと同じ形式で表現されます。metricfilters
- 指定した場合、一致するエンティティは、指定されたメトリックと完全に一致し、メトリック値との指定された関係を満たす必要があります。メトリック ID は文字列である必要があり、メトリック値は整数値である必要があります。metricfiltersは次の形式の式で表されます。eventfilters
- 指定した場合、一致するエンティティは、式に応じて指定されたイベントを含むか含まない必要があります。eventfiltersは次の形式の式で表されます。metricstoretrieve
- 指定した場合、取得するメトリクスまたは取得せずにレスポンスで返すメトリクスを定義します。metricstoretrieveは、次の形式の式にすることができます。METRICS
がfieldsクエリパラメータで指定されているかどうかに関係なく、メトリックが取得されます。スペースなどのURLセーフでない文字は適切にエンコードする必要があることに注意してください。confstoretrieve
- 指定した場合、取得する構成、または取得せずに応答で返信する構成を定義します。confstoretrieve は次の形式の式にすることができます。CONFIGS
が指定されているかどうかに関係なく、構成が取得されます。スペースなどの URL に安全でない文字は適切にエンコードする必要があることに注意してください。fields
- 取得するフィールドを指定します。fields の可能な値は、EVENTS
、INFO
、CONFIGS
、METRICS
、RELATES_TO
、IS_RELATED_TO
および ALL
です。ALL
が指定された場合は、すべてのフィールドが取得されます。複数のフィールドは、カンマ区切りのリストとして指定できます。フィールドが指定されていない場合、レスポンスでは、エンティティ ID、エンティティ タイプ、作成時刻、および info フィールドの UID が返されます。metricslimit
- 指定した場合、返すメトリックの数を定義します。fields に METRICS/ALL が含まれている場合、または metricstoretrieve が指定されている場合にのみ考慮されます。それ以外の場合は無視されます。metricslimit の最大可能な値は Integer の最大値です。指定されていないか、1 未満の値を持つ場合、メトリックを取得する必要がある場合、metricslimit は 1 と見なされます。つまり、メトリックの最新の単一値が返されます。metricstimestart
- 指定した場合、このタイムスタンプ以降のエンティティのメトリックが返されます。metricstimeend
- 指定した場合、このタイムスタンプ以前のエンティティのメトリックが返されます。fromid
- 指定した場合、指定された fromid から次の汎用エンティティのセットを取得します。取得されるエンティティのセットには、指定された fromid が含まれます。fromid は、以前に送信されたフローエンティティレスポンスの FROM_ID info キーに関連付けられた値から取得する必要があります。[ { "metrics": [ ], "events": [ ], "type": "TEZ_DAG_ID", "id": "dag_1465246237936_0001_000001", "createdtime": 1465246358873, "isrelatedto": { }, "configs": { }, "info": { "UID": "yarn-cluster!sjlee!TEZ_DAG_ID!0!dag_1465246237936_0001_000001" "FROM_ID": "sjlee!yarn-cluster!TEZ_DAG_ID!0!dag_1465246237936_0001_000001" }, "relatesto": { } }, { "metrics": [ ], "events": [ ], "type": "TEZ_DAG_ID", "id": "dag_1465246237936_0001_000002", "createdtime": 1465246359045, "isrelatedto": { }, "configs": { }, "info": { "UID": "yarn-cluster!sjlee!TEZ_DAG_ID!0!dag_1465246237936_0001_000002!userX" "FROM_ID": "sjlee!yarn-cluster!TEZ_DAG_ID!0!dag_1465246237936_0001_000002!userX" }, "relatesto": { } } ]
この API を使用すると、クラスター ID、アプリケーション ID、フレームワークごとのエンティティタイプ、およびエンティティ ID によって識別される特定の汎用エンティティをクエリできます。クラスター名のない REST エンドポイントが使用されている場合、yarn-site.xml
の構成 yarn.resourcemanager.cluster-id
で指定されたクラスターが使用されます。フローコンテキスト情報、つまりユーザー、フロー名、および実行 ID は必須ではありませんが、クエリパラメータで指定されている場合は、クラスターとアプリ ID に基づいてフローコンテキスト情報をフェッチするための追加操作の必要性を排除できます。このエンドポイントは、単一のコンテナ、アプリケーション試行、またはクライアントがバックエンドに配置するその他の汎用エンティティをクエリするために使用できます。たとえば、エンティティタイプを YARN_CONTAINER
として指定し、エンティティ ID をコンテナ ID として指定することで、特定の YARN コンテナをクエリできます。同様に、エンティティタイプを YARN_APPLICATION_ATTEMPT
として指定し、エンティティ ID をアプリケーション試行 ID にすることで、アプリケーション試行をクエリできます。
GET /ws/v2/timeline/clusters/{cluster name}/apps/{app id}/entities/{entity type}/{entity id} or GET /ws/v2/timeline/apps/{app id}/entities/{entity type}/{entity id}
userid
- 指定した場合、エンティティはこのユーザーに属している必要があります。このクエリパラメータは、flowname および flowrunid クエリパラメータとともに指定する必要があります。そうでない場合は無視されます。userid、flowname、および flowrunid が指定されていない場合は、クエリの実行中に、クラスターと appid に基づいてフローコンテキスト情報をフェッチする必要があります。flowname
- 指定した場合、エンティティはこのフロー名に属している必要があります。このクエリパラメータは、userid および flowrunid クエリパラメータとともに指定する必要があります。そうでない場合は無視されます。userid、flowname、および flowrunid が指定されていない場合は、クエリの実行中に、クラスターと appid に基づいてフローコンテキスト情報をフェッチする必要があります。flowrunid
- 指定した場合、エンティティはこのフロー実行 ID に属している必要があります。このクエリパラメータは、userid および flowname クエリパラメータとともに指定する必要があります。そうでない場合は無視されます。userid、flowname、および flowrunid が指定されていない場合は、クエリの実行中に、クラスターと appid に基づいてフローコンテキスト情報をフェッチする必要があります。metricstoretrieve
- 指定した場合、取得するメトリクスまたは取得せずにレスポンスで返すメトリクスを定義します。metricstoretrieveは、次の形式の式にすることができます。METRICS
がfieldsクエリパラメータで指定されているかどうかに関係なく、メトリックが取得されます。スペースなどのURLセーフでない文字は適切にエンコードする必要があることに注意してください。confstoretrieve
- 指定した場合、取得する構成、または取得せずに応答で返信する構成を定義します。confstoretrieve は次の形式の式にすることができます。CONFIGS
が指定されているかどうかに関係なく、構成が取得されます。スペースなどの URL に安全でない文字は適切にエンコードする必要があることに注意してください。fields
- 取得するフィールドを指定します。fields の可能な値は、EVENTS
、INFO
、CONFIGS
、METRICS
、RELATES_TO
、IS_RELATED_TO
および ALL
です。ALL
が指定された場合は、すべてのフィールドが取得されます。複数のフィールドは、カンマ区切りのリストとして指定できます。フィールドが指定されていない場合、レスポンスでは、エンティティ ID、エンティティ タイプ、作成時刻、および info フィールドの UID が返されます。metricslimit
- 指定した場合、返すメトリックの数を定義します。fields に METRICS/ALL が含まれている場合、または metricstoretrieve が指定されている場合にのみ考慮されます。それ以外の場合は無視されます。metricslimit の最大可能な値は Integer の最大値です。指定されていないか、1 未満の値を持つ場合、メトリックを取得する必要がある場合、metricslimit は 1 と見なされます。つまり、メトリックの最新の単一値が返されます。metricstimestart
- 指定した場合、このタイムスタンプ以降のエンティティのメトリックが返されます。metricstimeend
- 指定した場合、このタイムスタンプ以前のエンティティのメトリックが返されます。entityidprefix
- フェッチするエンティティの ID プレフィックスを定義します。指定した場合、エンティティの取得が高速化されます。{ "metrics": [ ], "events": [ ], "type": "YARN_APPLICATION_ATTEMPT", "id": "appattempt_1465246237936_0001_000001", "createdtime": 1465246358873, "isrelatedto": { }, "configs": { }, "info": { "UID": "yarn-cluster!application_1465246237936_0001!YARN_APPLICATION_ATTEMPT!0!appattempt_1465246237936_0001_000001" "FROM_ID": "yarn-cluster!sjlee!ds-date!1460419580171!application_1465246237936_0001!YARN_APPLICATION_ATTEMPT!0!appattempt_1465246237936_0001_000001" }, "relatesto": { } }
この API を使用すると、クラスター ID、doAsUser、エンティティタイプ、およびエンティティ ID によって識別されるユーザーごとに汎用エンティティをクエリできます。クラスター名のない REST エンドポイントが使用されている場合、yarn-site.xml
の構成 yarn.resourcemanager.cluster-id
で指定されたクラスターが使用されます。一致するエンティティの数が制限を超えている場合、制限までの最新のエンティティが返されます。このエンドポイントは、クライアントがバックエンドに配置する汎用エンティティをクエリするために使用できます。たとえば、エンティティタイプを TEZ_DAG_ID
として指定することで、ユーザーエンティティをクエリできます。述語に一致するエンティティがない場合は、空のリストが返されます。注: 現時点では、アプリケーションの所有者とは異なる doAsUser で公開されているエンティティのみをクエリできます。
GET /ws/v2/timeline/clusters/{cluster name}/users/{userid}/entities/{entitytype}/{entityid} or GET /ws/v2/timeline/users/{userid}/entities/{entitytype}/{entityid}
metricstoretrieve
- 指定した場合、取得するメトリクスまたは取得せずにレスポンスで返すメトリクスを定義します。metricstoretrieveは、次の形式の式にすることができます。METRICS
がfieldsクエリパラメータで指定されているかどうかに関係なく、メトリックが取得されます。スペースなどのURLセーフでない文字は適切にエンコードする必要があることに注意してください。confstoretrieve
- 指定した場合、取得する構成、または取得せずに応答で返信する構成を定義します。confstoretrieve は次の形式の式にすることができます。CONFIGS
が指定されているかどうかに関係なく、構成が取得されます。スペースなどの URL に安全でない文字は適切にエンコードする必要があることに注意してください。fields
- 取得するフィールドを指定します。fields の可能な値は、EVENTS
、INFO
、CONFIGS
、METRICS
、RELATES_TO
、IS_RELATED_TO
および ALL
です。ALL
が指定された場合は、すべてのフィールドが取得されます。複数のフィールドは、カンマ区切りのリストとして指定できます。フィールドが指定されていない場合、レスポンスでは、エンティティ ID、エンティティ タイプ、作成時刻、および info フィールドの UID が返されます。metricslimit
- 指定した場合、返すメトリックの数を定義します。fields に METRICS/ALL が含まれている場合、または metricstoretrieve が指定されている場合にのみ考慮されます。それ以外の場合は無視されます。metricslimit の最大可能な値は Integer の最大値です。指定されていないか、1 未満の値を持つ場合、メトリックを取得する必要がある場合、metricslimit は 1 と見なされます。つまり、メトリックの最新の単一値が返されます。metricstimestart
- 指定した場合、このタイムスタンプ以降のエンティティのメトリックが返されます。metricstimeend
- 指定した場合、このタイムスタンプ以前のエンティティのメトリックが返されます。fromid
- 指定した場合、指定された fromid から次の汎用エンティティのセットを取得します。取得されるエンティティのセットには、指定された fromid が含まれます。fromid は、以前に送信されたフローエンティティレスポンスの FROM_ID info キーに関連付けられた値から取得する必要があります。[ { "metrics": [ ], "events": [ ], "type": "TEZ_DAG_ID", "id": "dag_1465246237936_0001_000001", "createdtime": 1465246358873, "isrelatedto": { }, "configs": { }, "info": { "UID": "yarn-cluster!sjlee!TEZ_DAG_ID!0!dag_1465246237936_0001_000001!userX" "FROM_ID": "sjlee!yarn-cluster!TEZ_DAG_ID!0!dag_1465246237936_0001_000001!userX" }, "relatesto": { } } ]
この API を使用すると、指定されたアプリ ID の使用可能なエンティティタイプのセットをクエリできます。クラスター名のない REST エンドポイントが使用されている場合、yarn-site.xml の構成 yarn.resourcemanager.cluster-id で指定されたクラスターが使用されます。userid、フロー名、およびフロー実行 ID (オプションのクエリパラメータ) が指定されていない場合は、基になるストレージ実装に格納されているフローコンテキスト情報からアプリ ID とクラスター ID に基づいてクエリされます。
GET /ws/v2/timeline/apps/{appid}/entity-types or GET /ws/v2/timeline/clusters/{clusterid}/apps/{appid}/entity-types
userid
- 指定した場合、エンティティはこのユーザーに属している必要があります。このクエリパラメータは、flowname および flowrunid クエリパラメータとともに指定する必要があります。そうでない場合は無視されます。userid、flowname、および flowrunid が指定されていない場合、タイムラインリーダーは、クエリの実行中にクラスターと appid に基づいてフローコンテキスト情報をフェッチします。flowname
- 指定した場合、エンティティはこのフロー名に属している必要があります。このクエリパラメータは、userid および flowrunid クエリパラメータとともに指定する必要があります。そうでない場合は無視されます。userid、flowname、および flowrunid が指定されていない場合は、クエリの実行中に、クラスターと appid に基づいてフローコンテキスト情報をフェッチする必要があります。flowrunid
- 指定した場合、エンティティはこのフロー実行 ID に属している必要があります。このクエリパラメータは、userid および flowname クエリパラメータとともに指定する必要があります。そうでない場合は無視されます。userid、flowname、および flowrunid が指定されていない場合は、クエリの実行中に、クラスターと appid に基づいてフローコンテキスト情報をフェッチする必要があります。{ YARN_APPLICATION_ATTEMPT, YARN_CONTAINER, MAPREDUCE_JOB, MAPREDUCE_TASK, MAPREDUCE_TASK_ATTEMPT }
TimelineService v.2 は、履歴アプリの集約ログの提供をサポートしています。これを有効にするには、yarn-site.xml
で "yarn.log.server.web-service.url" を "${yarn.timeline-service.hostname}:8188/ws/v2/applicationlog" に構成します。