YARNタイムラインサービス v.2

概要

はじめに

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 エンティティ間の関係を示しています。

Flow Hierarchy

アーキテクチャ

YARN Timeline Service v.2 は、一連のコレクター (ライター) を使用して、データをバックエンドストレージに書き込みます。コレクターは分散され、専用のアプリケーションマスターと同じ場所に配置されます。リソースマネージャーのタイムラインコレクターを除き、そのアプリケーションに属するすべてのデータは、アプリケーションレベルのタイムラインコレクターに送信されます。

特定のアプリケーションの場合、アプリケーションマスターは、アプリケーションのデータを同じ場所に配置されたタイムラインコレクター (このリリースでは NM 補助サービス) に書き込むことができます。さらに、アプリケーションのコンテナーを実行している他のノードのノードマネージャーも、アプリケーションマスターを実行しているノードのタイムラインコレクターにデータを書き込みます。

リソースマネージャーも独自のタイムラインコレクターを維持します。書き込み量を合理的に保つために、YARN 固有のライフサイクルイベントのみを発行します。

タイムラインリーダーは、タイムラインコレクターとは別の独立したデーモンであり、REST API を介してクエリを提供することに特化しています。

次の図は、高レベルでの設計を示しています。

Timeline Service v.2  architecture

現状と今後の計画

書き込みと読み取りのエンドツーエンドの完全なフローは機能しており、バックエンドとして 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 が無効になっている場合、他の既存の機能に機能やパフォーマンスへの影響がないことが予想されます。

ロードマップには以下が含まれます。

  • より堅牢なストレージフォールトトレランス。
  • オフクラスタークライアントのサポート
  • エンティティ ACL のサポート
  • レポートと分析のための、フロー、ユーザー、キューのオフライン (時間ベースの定期的) 集計
  • v.1 との移行と互換性

デプロイ

設定

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.typekerberosに設定するとセキュリティが有効になり、その後、以下の構成オプションが利用可能になります。

構成プロパティ 説明
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をエンティティ所有者で認証します。一致しない場合、これらのエンティティは応答から削除されます。

CORSサポートの有効化

タイムラインサービス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の有効化

ストレージ用のApache HBaseクラスタの準備

タイムラインサービスv.2のストレージを準備するために、いくつかの手順を実行する必要があります。

ステップ1) HBaseクラスタの設定

ステップ2) コプロセッサの有効化

ステップ3) タイムラインサービスv.2のスキーマの作成

各ステップについては、以下で詳しく説明します。

ステップ1) HBaseクラスタの設定

最初の部分は、ストレージクラスタとして使用する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)

HBaseの単純なデプロイメント

データのロードは軽いが、ノードの出入りに関係なくデータを永続化する必要がある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クラスタの準備ができたら、次の手順を実行します。

ステップ2) コプロセッサの有効化

このバージョンでは、コプロセッサは動的にロードされます (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>
ステップ3) タイムラインサービススキーマの作成

スキーマの作成は、タイムラインサービステーブルを格納する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の有効化

以下は、タイムラインサービス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で設定されたバージョンになります。

タイムラインサービスv.2の実行

リソースマネージャーとノードマネージャーを再起動して、新しい構成を適用します。コレクターは、リソースマネージャー内およびノードマネージャー内で埋め込み方式で起動します。

タイムラインサービスリーダーは、個別のYARNデーモンであり、次の構文を使用して起動できます。

$ yarn-daemon.sh start timelinereader

MapReduceでタイムラインサービスv.2に書き込むための有効化

MapReduceフレームワークデータをタイムラインサービスv.2に書き込むには、mapred-site.xmlで次の構成を有効にします。

<property>
  <name>mapreduce.job.emit-timeline-data</name>
  <value>true</value>
</property>

alpha1からGAへのアップグレード

現在、タイムラインサービス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メソッドには、putEntitiesputEntitiesAsyncの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オブジェクトには、タイムラインデータを保持するための次のフィールドがあります。

  • events: TimelineEventsのセット。イベントのタイムスタンプで降順に並べられています。各イベントには、1つのIDと、関連情報を格納するためのマップが含まれており、1つのタイムスタンプに関連付けられています。
  • configs: エンティティに関連付けられたすべての構成を表す、文字列 (構成名) から文字列 (構成値) へのマップ。ユーザーは、構成全体または一部を構成フィールドに投稿できます。アプリケーションエンティティと汎用エンティティでサポートされています。
  • metrics: このエンティティに関連するメトリクスのセット。メトリクスには、単一値メトリクスと時系列メトリクスの2種類があります。各メトリクス項目には、メトリクス名 (id)、値、およびこのメトリクスで実行する必要がある集計操作の種類 (デフォルトではno-op) が含まれています。フロー実行、アプリケーションエンティティ、および汎用エンティティでサポートされています。
  • info: このエンティティに関連する情報を保持するために、文字列(infoキー名)からオブジェクト(info値)へのマップです。アプリケーションエンティティと汎用エンティティでサポートされています。
  • isrelatedtoEntitiesとrelatestoEntities: エンティティ間の関係を表すことも可能です。各エンティティには、他のエンティティへの関係を表すrelatestoEntitiesフィールドとisrelatedtoEntitiesフィールドが含まれています。両方のフィールドは、文字列(関係の名前)からタイムラインエンティティへのマップとして表されます。このようにして、エンティティ間の関係をDAGとして表現できます。

タイムラインメトリクスを投稿する際、TimelineMetric#setRealtimeAggregationOp() メソッドを使用して、各メトリクスをどのように集計するかを選択できることに注意してください。ここでの「集計」とは、一連のエンティティに対してTimelineMetricOperation のいずれかを適用することを意味します。タイムラインサービスv2は、組み込みのアプリケーションレベル集計を提供しており、これは1つのYARNアプリケーション内の異なるタイムラインエンティティからのメトリクスを集計することを意味します。現在、TimelineMetricOperation でサポートされている操作は2種類あります。

  • MAX: すべてのTimelineMetricオブジェクトの中で最大値を取得します。
  • SUM: すべてのTimelineMetricオブジェクトの合計を取得します。

デフォルトでは、NOP操作はリアルタイム集計操作を実行しないことを意味します。

アプリケーションフレームワークは、Timeline Service v.2が提供するフローサポートを利用するために、可能な限り「フローコンテキスト」を設定する必要があります。フローコンテキストは以下で構成されます。

  • フロー名: 高レベルのフローを識別する文字列(例:「分散grep」またはアプリを一意に表すことができる識別可能な名前)。
  • フロー実行ID: 同じフローの異なる実行を区別する、単調増加する数値のシーケンス。
  • (オプション) フローバージョン: フローのバージョンを示す文字列識別子。フローバージョンは、コード変更やスクリプト変更など、フローの変更を識別するために使用できます。

フローコンテキストが指定されていない場合、これらの属性にはデフォルト値が提供されます。

  • フロー名: YARNアプリケーション名(名前が設定されていない場合はアプリケーションID)。
  • フロー実行ID: Unix時間(ミリ秒)でのアプリケーションの開始時間。
  • フローバージョン: “1”

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

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で指定されたクラスターが使用されます。どのフローも述語に一致しない場合、空のリストが返されます。

HTTPリクエスト

GET /ws/v2/timeline/clusters/{cluster name}/flows/

or

GET /ws/v2/timeline/flows/

サポートされているクエリパラメータ

  1. limit - 指定した場合、返すフローの数を定義します。limitの最大可能な値は、Longの最大値です。指定されていない場合、または0未満の値がある場合は、limitは100と見なされます。
  2. daterange - 指定した場合、「[開始日]-[終了日]」(つまり、開始日と終了日が「-」で区切られている)または単一の日付として与えられます。日付はyyyyMMdd形式で解釈され、UTCであると想定されます。単一の日付が指定されている場合、その日付でアクティブなすべてのフローが返されます。開始日と終了日の両方が指定されている場合、開始日と終了日の間でアクティブなすべてのフローが返されます。開始日のみが指定されている場合、開始日以降にアクティブなフローが返されます。終了日のみが指定されている場合、終了日以前にアクティブなフローが返されます。
    例: :
    「daterange=20150711」は、20150711にアクティブなフローを返します。
    「daterange=20150711-20150714」は、これら2つの日付の間にアクティブなフローを返します。
    「daterange=20150711-」は、20150711以降にアクティブなフローを返します。
    「daterange=-20150711」は、20150711以前にアクティブなフローを返します。
  3. fromid - 指定した場合、指定されたfromidから次のフローのセットを取得します。取得されたエンティティのセットには、指定されたfromidが含まれます。fromidは、以前に送信されたフローエンティティレスポンスのFROM_ID infoキーに関連付けられた値から取得する必要があります。

JSONレスポンスの例

[
  {
    "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": {}
  }
]

レスポンスコード

  1. 成功した場合、HTTP 200(OK)レスポンスが返されます。
  2. リクエストの解析中に問題が発生した場合、HTTP 400(Bad Request)が返されます。
  3. データの取得中に回復不能なエラーが発生した場合、HTTP 500(Internal Server Error)が返されます。

フロー実行のクエリ

フロー実行クエリAPIを使用すると、特定のフローの実行(特定のインスタンス)を取得するために、さらにドリルダウンできます。これにより、指定されたフローに属する最新の実行が返されます。クラスター名なしでRESTエンドポイントを使用した場合、yarn-site.xmlの構成yarn.resourcemanager.cluster-idで指定されたクラスターが使用されます。どのフロー実行も述語に一致しない場合、空のリストが返されます。

HTTPリクエスト

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/

サポートされているクエリパラメータ

  1. limit - 指定した場合、返すフローの数を定義します。limitの最大可能な値は、Longの最大値です。指定されていない場合、または0未満の値がある場合は、limitは100と見なされます。
  2. createdtimestart - 指定した場合、このタイムスタンプ以降に開始されたフロー実行のみが返されます。
  3. createdtimeend - 指定した場合、このタイムスタンプより前に開始されたフロー実行のみが返されます。
  4. metricstoretrieve - 指定した場合、取得するメトリクスまたは取得せずにレスポンスで返すメトリクスを定義します。metricstoretrieveは、次の形式の式にすることができます。
    (<metricprefix>,<metricprefix>,<metricprefix>,<metricprefix>…)
    これは、メトリックIDプレフィックスのコンマ区切りリストを指定します。プレフィックスのいずれかに一致するメトリックのみが取得されます。単純な式の場合、括弧はオプションです。または、式は次の形式にすることができます。
    !(<metricprefix>,<metricprefix>,<metricprefix>,<metricprefix>…)
    これは、メトリックIDプレフィックスのコンマ区切りリストを指定します。プレフィックスのいずれにも一致しないメトリックのみが取得されます。
    metricstoretrieveが指定されている場合、METRICSがfieldsクエリパラメータで指定されているかどうかに関係なく、メトリックが取得されます。スペースなどのURLセーフでない文字は適切にエンコードする必要があることに注意してください。
  5. fields - 取得するフィールドを指定します。フロー実行のクエリの場合、ALLまたはMETRICSのみが有効なフィールドです。他のフィールドは、HTTP 400(Bad Request)レスポンスにつながります。指定されていない場合、レスポンスでid、type、createdtime、infoの各フィールドが返されます。
  6. fromid - 指定した場合、指定されたfromidから次のフロー実行エンティティのセットを取得します。取得されたエンティティのセットには、指定されたfromidが含まれます。fromidは、以前に送信されたフローエンティティレスポンスのFROM_ID infoキーに関連付けられた値から取得する必要があります。

JSONレスポンスの例

[
  {
    "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": {}
  }
]

レスポンスコード

  1. 成功した場合、HTTP 200(OK)レスポンスが返されます。
  2. リクエストの解析中に問題が発生した場合、またはフィールドクエリパラメータで無効なフィールドが指定された場合、HTTP 400(Bad Request)が返されます。
  3. データの取得中に回復不能なエラーが発生した場合、HTTP 500(Internal Server Error)が返されます。

フロー実行のクエリ

このAPIを使用すると、クラスター、ユーザー、フロー名、および実行IDで識別される特定のフロー実行をクエリできます。クラスター名なしでRESTエンドポイントを使用した場合、yarn-site.xmlの構成yarn.resourcemanager.cluster-idで指定されたクラスターが使用されます。個々のフロー実行をクエリする際には、デフォルトでメトリックが返されます。

HTTPリクエスト

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}

サポートされているクエリパラメータ

  1. metricstoretrieve - 指定した場合、取得するメトリクスまたは取得せずにレスポンスで返すメトリクスを定義します。metricstoretrieveは、次の形式の式にすることができます。
    (<metricprefix>,<metricprefix>,<metricprefix>,<metricprefix>…)
    これは、メトリックIDプレフィックスのコンマ区切りリストを指定します。プレフィックスのいずれかに一致するメトリックのみが取得されます。単純な式の場合、括弧はオプションです。または、式は次の形式にすることができます。
    !(<metricprefix>,<metricprefix>,<metricprefix>,<metricprefix>…)
    これは、メトリックIDプレフィックスのコンマ区切りリストを指定します。プレフィックスのいずれにも一致しないメトリックのみが取得されます。
    スペースなどのURLセーフでない文字は適切にエンコードする必要があることに注意してください。

JSONレスポンスの例

{
  "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": {}
}

レスポンスコード

  1. 成功した場合、HTTP 200(OK)レスポンスが返されます。
  2. リクエストの解析中に問題が発生した場合、HTTP 400(Bad Request)が返されます。
  3. 指定されたフロー実行IDのフロー実行が見つからない場合、HTTP 404(Not Found)が返されます。
  4. データの取得中に回復不能なエラーが発生した場合、HTTP 500(Internal Server Error)が返されます。

フローのアプリケーションのクエリ

このAPIを使用すると、特定のフローの一部であるすべてのYARNアプリケーションをクエリできます。クラスター名なしでRESTエンドポイントを使用した場合、yarn-site.xmlの構成yarn.resourcemanager.cluster-idで指定されたクラスターが使用されます。一致するアプリケーションの数が制限を超えている場合、制限までの最新のアプリが返されます。どのアプリも述語に一致しない場合、空のリストが返されます。

HTTPリクエスト

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

サポートされているクエリパラメータ

  1. limit - 指定した場合、返すアプリケーションの数を定義します。limitの最大可能な値は、Longの最大値です。指定されていない場合、または0未満の値がある場合は、limitは100と見なされます。
  2. createdtimestart - 指定した場合、このタイムスタンプ以降に作成されたアプリケーションのみが返されます。
  3. createdtimeend - 指定した場合、このタイムスタンプより前に作成されたアプリケーションのみが返されます。
  4. relatesto - 指定した場合、一致するアプリケーションは、エンティティタイプに関連付けられた指定されたエンティティに関連するか、関連しない必要があります。relatestoは、次の形式の式として表されます。
    “(<entitytype>:<entityid>:<entityid>…,<entitytype>:<entityid>:<entityid>…) <op> !(<entitytype>:<entityid>:<entityid>…,<entitytype>:<entityid>:<entityid>…)”。
    relatesto式に「!」の前に囲み括弧内に指定されたエンティティタイプ-エンティティID(複数可)の関係がある場合、これは、そのrelatestoフィールドにこれらの関係を持つアプリは返されないことを意味します。「!」のない式またはサブ式の場合、relatestoフィールドに指定された関係を持つすべてのアプリが返されます。「op」は論理演算子であり、ANDまたはORのいずれかになります。エンティティタイプの後に任意の数のエンティティID(複数可)を続けることができます。また、任意の数のANDとORを組み合わせて、複雑な式を作成できます。括弧を使用して、式をグループ化できます。
    :relatestoは「(((type1:id1:id2:id3,type3:id9) AND !(type2:id7:id8)) OR (type1:id4))」にすることができます。
    スペースなどのURLセーフでない文字は適切にエンコードする必要があることに注意してください。
  5. isrelatedto - 指定した場合、一致するアプリケーションは、エンティティタイプに関連付けられた指定されたエンティティに関連するか、関連しない必要があります。isrelatedtoは、relatestoと同じ形式で表されます。
  6. infofilters - 指定した場合、一致するアプリケーションは、指定されたinfoキーと完全に一致する必要があり、指定された値と等しいか等しくない必要があります。infoキーは文字列ですが、値は任意のオブジェクトにすることができます。infofiltersは、次の形式の式で表されます。
    “(<key> <compareop> <value>) <op> (<key> <compareop> <value>)”。
    ここで、opはANDまたはORのいずれかになります。また、compareopは、「eq」、「ne」、または「ene」のいずれかになります。
    「eq」は等しい、「ne」は等しくないことを意味し、キーの存在は一致には必須ではありません。「ene」は等しくないことを意味しますが、キーの存在が必要です。複雑な式を作成するために、任意の数の AND と OR を組み合わせることができます。括弧を使用して式をグループ化できます。
    : infofilters は「(((infokey1 eq value1) AND (infokey2 ne value1)) OR (infokey1 ene value3))」のようになります。
    注: 値がオブジェクトの場合、値はスペースなしの JSON 形式で指定できます。
    : infofilters は (infokey1 eq {“<key>”:“<value>”,“<key>”:“<value>”…}) のようになります。
    スペースなどのURLセーフでない文字は適切にエンコードする必要があることに注意してください。
  7. conffilters - 指定した場合、一致するアプリケーションは、指定された構成名と完全に一致する必要があり、指定された構成値と等しいか等しくないかのいずれかである必要があります。構成名と値は両方とも文字列である必要があります。conffilters は infofilters と同じ形式で表現されます。
  8. metricfilters - 指定した場合、一致するアプリケーションは、指定されたメトリックと完全に一致する必要があり、メトリック値との指定された関係を満たす必要があります。メトリック ID は文字列であり、メトリック値は整数値である必要があります。metricfilters は次の形式の式として表現されます
    「(<metricid> <compareop> <metricvalue>) <op> (<metricid> <compareop> <metricvalue>)」。
    ここで、op は AND または OR のいずれかです。また、compareop は "eq"、"ne"、"ene"、"gt"、"ge"、"lt" および "le" のいずれかです。
    「eq」は等しい、「ne」は等しくないことを意味し、メトリックの存在は一致には必須ではありません。「ene」は等しくないことを意味しますが、メトリックの存在が必要です。「gt」はより大きい、「ge」は以上、「lt」はより小さい、「le」は以下を意味します。複雑な式を作成するために、任意の数の AND と OR を組み合わせることができます。括弧を使用して式をグループ化できます。
    : metricfilters は「(((metric1 eq 50) AND (metric2 gt 40)) OR (metric1 lt 20))」のようになります。
    これは本質的に「(metric1 == 50 AND metric2 > 40) OR (metric1 < 20)」と同等の式です。
    スペースなどのURLセーフでない文字は適切にエンコードする必要があることに注意してください。
  9. eventfilters - 指定した場合、一致するアプリケーションは、式に応じて、指定されたイベントを含むか、含まない必要があります。eventfilters は次の形式の式として表現されます
    「(<eventid>,<eventid>) <op> !(<eventid>,<eventid>,<eventid>)」。
    ここで、「!」は、「!」の直前の括弧内のコンマ区切りのイベントリストのいずれも、一致が発生するために存在してはならないことを意味します。「!」が指定されていない場合、括弧内の指定されたイベントが存在する必要があります。op は論理演算子であり、AND または OR のいずれかです。複雑な式を作成するために、任意の数の AND と OR を組み合わせることができます。括弧を使用して式をグループ化できます。
    : eventfilters は「(((event1,event2) AND !(event4)) OR (event3,event7,event5))」のようになります。
    スペースなどのURLセーフでない文字は適切にエンコードする必要があることに注意してください。
  10. metricstoretrieve - 指定した場合、取得するメトリクスまたは取得せずにレスポンスで返すメトリクスを定義します。metricstoretrieveは、次の形式の式にすることができます。
    (<metricprefix>,<metricprefix>,<metricprefix>,<metricprefix>…)
    これは、コンマ区切りのメトリック ID プレフィックスのリストを指定します。プレフィックスのいずれかに一致するメトリックのみが取得されます。単純な式の場合、括弧はオプションです。または、式は次の形式にすることもできます。
    !(<metricprefix>,<metricprefix>,<metricprefix>,<metricprefix>…)
    これは、メトリックIDプレフィックスのコンマ区切りリストを指定します。プレフィックスのいずれにも一致しないメトリックのみが取得されます。
    metricstoretrieveが指定されている場合、METRICSがfieldsクエリパラメータで指定されているかどうかに関係なく、メトリックが取得されます。スペースなどのURLセーフでない文字は適切にエンコードする必要があることに注意してください。
  11. confstoretrieve - 指定した場合、取得する構成、または取得せずに応答で返信する構成を定義します。confstoretrieve は次の形式の式にすることができます。
    (<config_name_prefix>,<config_name_prefix>,<config_name_prefix>,<config_name_prefix>…)
    これは、コンマ区切りの構成名プレフィックスのリストを指定します。プレフィックスのいずれかに一致する構成のみが取得されます。単純な式の場合、括弧はオプションです。または、式は次の形式にすることもできます。
    !(<config_name_prefix>,<config_name_prefix>,<config_name_prefix>,<config_name_prefix>…)
    これは、コンマ区切りの構成名プレフィックスのリストを指定します。プレフィックスのいずれにも一致しない構成のみが取得されます。
    confstoretrieve が指定されている場合、フィールドクエリパラメータで CONFIGS が指定されているかどうかに関係なく、構成が取得されます。スペースなどの URL に安全でない文字は適切にエンコードする必要があることに注意してください。
  12. fields - 取得するフィールドを指定します。フィールドの可能な値は、EVENTSINFOCONFIGSMETRICSRELATES_TOIS_RELATED_TO および ALL です。ALL が指定された場合、すべてのフィールドが取得されます。複数のフィールドをコンマ区切りのリストとして指定できます。fields が指定されていない場合、応答では、アプリ ID、タイプ (YARN_APPLICATION に相当)、アプリの作成時刻、および info フィールドの UID が返されます。
  13. metricslimit - 指定した場合、返すメトリックの数を定義します。fields に METRICS/ALL が含まれている場合、または metricstoretrieve が指定されている場合にのみ考慮されます。それ以外の場合は無視されます。metricslimit の最大可能な値は Integer の最大値です。指定されていないか、1 未満の値を持つ場合、メトリックを取得する必要がある場合、metricslimit は 1 と見なされます。つまり、メトリックの最新の単一値が返されます。
  14. metricstimestart - 指定した場合、このタイムスタンプ以降のエンティティのメトリックが返されます。
  15. metricstimeend - 指定した場合、このタイムスタンプ以前のエンティティのメトリックが返されます。
  16. fromid - 指定した場合、指定された fromid から次のアプリケーションエンティティのセットを取得します。取得されたエンティティのセットには、指定された fromid が含まれます。fromid は、以前に送信されたフローエンティティ応答の FROM_ID 情報キーに関連付けられた値から取得する必要があります。

JSONレスポンスの例

[
  {
    "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": { }
  }
]

レスポンスコード

  1. 成功した場合、HTTP 200(OK)レスポンスが返されます。
  2. リクエストの解析中に問題が発生した場合、HTTP 400(Bad Request)が返されます。
  3. データの取得中に回復不能なエラーが発生した場合、HTTP 500(Internal Server Error)が返されます。

フロー実行のアプリケーションをクエリする

この API を使用すると、特定のフロー実行の一部であるすべての YARN アプリケーションをクエリできます。クラスタ名なしで REST エンドポイントが使用されている場合、yarn-site.xml の構成 yarn.resourcemanager.cluster-id で指定されたクラスタが使用されます。一致するアプリケーションの数が制限を超える場合、制限までの最も新しいアプリケーションが返されます。述語に一致するアプリケーションがない場合は、空のリストが返されます。

HTTPリクエスト

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/

サポートされているクエリパラメータ

  1. limit - 指定した場合、返すアプリケーションの数を定義します。limitの最大可能な値は、Longの最大値です。指定されていない場合、または0未満の値がある場合は、limitは100と見なされます。
  2. createdtimestart - 指定した場合、このタイムスタンプ以降に作成されたアプリケーションのみが返されます。
  3. createdtimeend - 指定した場合、このタイムスタンプより前に作成されたアプリケーションのみが返されます。
  4. relatesto - 指定した場合、一致するアプリケーションは、エンティティタイプに関連付けられた指定されたエンティティに関連するか、関連しない必要があります。relatestoは、次の形式の式として表されます。
    “(<entitytype>:<entityid>:<entityid>…,<entitytype>:<entityid>:<entityid>…) <op> !(<entitytype>:<entityid>:<entityid>…,<entitytype>:<entityid>:<entityid>…)”。
    relatesto式に「!」の前に囲み括弧内に指定されたエンティティタイプ-エンティティID(複数可)の関係がある場合、これは、そのrelatestoフィールドにこれらの関係を持つアプリは返されないことを意味します。「!」のない式またはサブ式の場合、relatestoフィールドに指定された関係を持つすべてのアプリが返されます。「op」は論理演算子であり、ANDまたはORのいずれかになります。エンティティタイプの後に任意の数のエンティティID(複数可)を続けることができます。また、任意の数のANDとORを組み合わせて、複雑な式を作成できます。括弧を使用して、式をグループ化できます。
    :relatestoは「(((type1:id1:id2:id3,type3:id9) AND !(type2:id7:id8)) OR (type1:id4))」にすることができます。
    スペースなどのURLセーフでない文字は適切にエンコードする必要があることに注意してください。
  5. isrelatedto - 指定した場合、一致するアプリケーションは、エンティティタイプに関連付けられた指定されたエンティティに関連するか、関連しない必要があります。isrelatedtoは、relatestoと同じ形式で表されます。
  6. infofilters - 指定した場合、一致するアプリケーションは、指定されたinfoキーと完全に一致する必要があり、指定された値と等しいか等しくない必要があります。infoキーは文字列ですが、値は任意のオブジェクトにすることができます。infofiltersは、次の形式の式で表されます。
    “(<key> <compareop> <value>) <op> (<key> <compareop> <value>)”。
    ここで、opはANDまたはORのいずれかになります。また、compareopは、「eq」、「ne」、または「ene」のいずれかになります。
    「eq」は等しい、「ne」は等しくないことを意味し、キーの存在は一致には必須ではありません。「ene」は等しくないことを意味しますが、キーの存在が必要です。複雑な式を作成するために、任意の数の AND と OR を組み合わせることができます。括弧を使用して式をグループ化できます。
    : infofilters は「(((infokey1 eq value1) AND (infokey2 ne value1)) OR (infokey1 ene value3))」のようになります。
    注: 値がオブジェクトの場合、値はスペースなしの JSON 形式で指定できます。
    : infofilters は (infokey1 eq {“<key>”:“<value>”,“<key>”:“<value>”…}) のようになります。
    スペースなどのURLセーフでない文字は適切にエンコードする必要があることに注意してください。
  7. conffilters - 指定した場合、一致するアプリケーションは、指定された構成名と完全に一致する必要があり、指定された構成値と等しいか等しくないかのいずれかである必要があります。構成名と値は両方とも文字列である必要があります。conffilters は infofilters と同じ形式で表現されます。
  8. metricfilters - 指定した場合、一致するアプリケーションは、指定されたメトリックと完全に一致する必要があり、メトリック値との指定された関係を満たす必要があります。メトリック ID は文字列であり、メトリック値は整数値である必要があります。metricfilters は次の形式の式として表現されます
    「(<metricid> <compareop> <metricvalue>) <op> (<metricid> <compareop> <metricvalue>)」。
    ここで、op は AND または OR のいずれかです。また、compareop は "eq"、"ne"、"ene"、"gt"、"ge"、"lt" および "le" のいずれかです。
    「eq」は等しい、「ne」は等しくないことを意味し、メトリックの存在は一致には必須ではありません。「ene」は等しくないことを意味しますが、メトリックの存在が必要です。「gt」はより大きい、「ge」は以上、「lt」はより小さい、「le」は以下を意味します。複雑な式を作成するために、任意の数の AND と OR を組み合わせることができます。括弧を使用して式をグループ化できます。
    : metricfilters は「(((metric1 eq 50) AND (metric2 gt 40)) OR (metric1 lt 20))」のようになります。
    これは本質的に「(metric1 == 50 AND metric2 > 40) OR (metric1 < 20)」と同等の式です。
    スペースなどのURLセーフでない文字は適切にエンコードする必要があることに注意してください。
  9. eventfilters - 指定した場合、一致するアプリケーションは、式に応じて、指定されたイベントを含むか、含まない必要があります。eventfilters は次の形式の式として表現されます
    「(<eventid>,<eventid>) <op> !(<eventid>,<eventid>,<eventid>)」。
    ここで、「!」は、「!」の直前の括弧内のコンマ区切りのイベントリストのいずれも、一致が発生するために存在してはならないことを意味します。「!」が指定されていない場合、括弧内の指定されたイベントが存在する必要があります。op は論理演算子であり、AND または OR のいずれかです。複雑な式を作成するために、任意の数の AND と OR を組み合わせることができます。括弧を使用して式をグループ化できます。
    : eventfilters は「(((event1,event2) AND !(event4)) OR (event3,event7,event5))」のようになります。
    スペースなどのURLセーフでない文字は適切にエンコードする必要があることに注意してください。
  10. metricstoretrieve - 指定した場合、取得するメトリクスまたは取得せずにレスポンスで返すメトリクスを定義します。metricstoretrieveは、次の形式の式にすることができます。
    (<metricprefix>,<metricprefix>,<metricprefix>,<metricprefix>…)
    これは、メトリックIDプレフィックスのコンマ区切りリストを指定します。プレフィックスのいずれかに一致するメトリックのみが取得されます。単純な式の場合、括弧はオプションです。または、式は次の形式にすることができます。
    !(<metricprefix>,<metricprefix>,<metricprefix>,<metricprefix>…)
    これは、メトリックIDプレフィックスのコンマ区切りリストを指定します。プレフィックスのいずれにも一致しないメトリックのみが取得されます。
    metricstoretrieveが指定されている場合、METRICSがfieldsクエリパラメータで指定されているかどうかに関係なく、メトリックが取得されます。スペースなどのURLセーフでない文字は適切にエンコードする必要があることに注意してください。
  11. confstoretrieve - 指定した場合、取得する構成、または取得せずに応答で返信する構成を定義します。confstoretrieve は次の形式の式にすることができます。
    (<config_name_prefix>,<config_name_prefix>,<config_name_prefix>,<config_name_prefix>…)
    これは、コンマ区切りの構成名プレフィックスのリストを指定します。プレフィックスのいずれかに一致する構成のみが取得されます。単純な式の場合、括弧はオプションです。または、式は次の形式にすることもできます。
    !(<config_name_prefix>,<config_name_prefix>,<config_name_prefix>,<config_name_prefix>…)
    これは、コンマ区切りの構成名プレフィックスのリストを指定します。プレフィックスのいずれにも一致しない構成のみが取得されます。
    confstoretrieve が指定されている場合、フィールドクエリパラメータで CONFIGS が指定されているかどうかに関係なく、構成が取得されます。スペースなどの URL に安全でない文字は適切にエンコードする必要があることに注意してください。
  12. fields - 取得するフィールドを指定します。フィールドの可能な値は、EVENTSINFOCONFIGSMETRICSRELATES_TOIS_RELATED_TO および ALL です。ALL が指定された場合、すべてのフィールドが取得されます。複数のフィールドをコンマ区切りのリストとして指定できます。fields が指定されていない場合、応答では、アプリ ID、タイプ (YARN_APPLICATION に相当)、アプリの作成時刻、および info フィールドの UID が返されます。
  13. metricslimit - 指定した場合、返すメトリックの数を定義します。fields に METRICS/ALL が含まれている場合、または metricstoretrieve が指定されている場合にのみ考慮されます。それ以外の場合は無視されます。metricslimit の最大可能な値は Integer の最大値です。指定されていないか、1 未満の値を持つ場合、メトリックを取得する必要がある場合、metricslimit は 1 と見なされます。つまり、メトリックの最新の単一値が返されます。
  14. metricstimestart - 指定した場合、このタイムスタンプ以降のエンティティのメトリックが返されます。
  15. metricstimeend - 指定した場合、このタイムスタンプ以前のエンティティのメトリックが返されます。
  16. fromid - 指定した場合、指定された fromid から次のアプリケーションエンティティのセットを取得します。取得されたエンティティのセットには、指定された fromid が含まれます。fromid は、以前に送信されたフローエンティティ応答の FROM_ID 情報キーに関連付けられた値から取得する必要があります。

JSONレスポンスの例

[
  {
    "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": {}
  }
]

レスポンスコード

  1. 成功した場合、HTTP 200(OK)レスポンスが返されます。
  2. リクエストの解析中に問題が発生した場合、HTTP 400(Bad Request)が返されます。
  3. データの取得中に回復不能なエラーが発生した場合、HTTP 500(Internal Server Error)が返されます。

アプリケーションをクエリする

この API を使用すると、クラスタとアプリケーション ID で識別される単一の YARN アプリケーションをクエリできます。クラスタ名なしで REST エンドポイントが使用されている場合、yarn-site.xml の構成 yarn.resourcemanager.cluster-id で指定されたクラスタが使用されます。フローコンテキスト情報 (つまり、ユーザー、フロー名、および実行 ID) は必須ではありませんが、クエリパラメータで指定されている場合、クラスタとアプリ ID に基づいてフローコンテキスト情報をフェッチするための追加操作の必要性を排除できます。

HTTPリクエスト

GET /ws/v2/timeline/clusters/{cluster name}/apps/{app id}

or

GET /ws/v2/timeline/apps/{app id}

サポートされているクエリパラメータ

  1. userid - 指定した場合、このユーザーに属するアプリケーションのみが返されます。このクエリパラメータは、flowname および flowrunid クエリパラメータと一緒に指定する必要があります。そうしないと無視されます。userid、flowname、flowrunid が指定されていない場合、クエリの実行中にクラスタと appid に基づいてフローコンテキスト情報をフェッチする必要があります。
  2. flowname - このフロー名に属するアプリケーションのみが返されます。このクエリパラメータは、userid および flowrunid クエリパラメータと一緒に指定する必要があります。そうしないと無視されます。userid、flowname、flowrunid が指定されていない場合、クエリの実行中にクラスタと appid に基づいてフローコンテキスト情報をフェッチする必要があります。
  3. flowrunid - このフロー実行 ID に属するアプリケーションのみが返されます。このクエリパラメータは、userid および flowname クエリパラメータと一緒に指定する必要があります。そうしないと無視されます。userid、flowname、flowrunid が指定されていない場合、クエリの実行中にクラスタと appid に基づいてフローコンテキスト情報をフェッチする必要があります。
  4. metricstoretrieve - 指定した場合、取得するメトリクスまたは取得せずにレスポンスで返すメトリクスを定義します。metricstoretrieveは、次の形式の式にすることができます。
    (<metricprefix>,<metricprefix>,<metricprefix>,<metricprefix>…)
    これは、メトリックIDプレフィックスのコンマ区切りリストを指定します。プレフィックスのいずれかに一致するメトリックのみが取得されます。単純な式の場合、括弧はオプションです。または、式は次の形式にすることができます。
    !(<metricprefix>,<metricprefix>,<metricprefix>,<metricprefix>…)
    これは、メトリックIDプレフィックスのコンマ区切りリストを指定します。プレフィックスのいずれにも一致しないメトリックのみが取得されます。
    metricstoretrieveが指定されている場合、METRICSがfieldsクエリパラメータで指定されているかどうかに関係なく、メトリックが取得されます。スペースなどのURLセーフでない文字は適切にエンコードする必要があることに注意してください。
  5. confstoretrieve - 指定した場合、取得する構成、または取得せずに応答で返信する構成を定義します。confstoretrieve は次の形式の式にすることができます。
    (<config_name_prefix>,<config_name_prefix>,<config_name_prefix>,<config_name_prefix>…)
    これは、コンマ区切りの構成名プレフィックスのリストを指定します。プレフィックスのいずれかに一致する構成のみが取得されます。単純な式の場合、括弧はオプションです。または、式は次の形式にすることもできます。
    !(<config_name_prefix>,<config_name_prefix>,<config_name_prefix>,<config_name_prefix>…)
    これは、コンマ区切りの構成名プレフィックスのリストを指定します。プレフィックスのいずれにも一致しない構成のみが取得されます。
    confstoretrieve が指定されている場合、フィールドクエリパラメータで CONFIGS が指定されているかどうかに関係なく、構成が取得されます。スペースなどの URL に安全でない文字は適切にエンコードする必要があることに注意してください。
  6. fields - 取得するフィールドを指定します。フィールドの可能な値は、EVENTSINFOCONFIGSMETRICSRELATES_TOIS_RELATED_TO および ALL です。ALL が指定された場合、すべてのフィールドが取得されます。複数のフィールドをコンマ区切りのリストとして指定できます。fields が指定されていない場合、応答では、アプリ ID、タイプ (YARN_APPLICATION に相当)、アプリの作成時刻、および info フィールドの UID が返されます。
  7. metricslimit - 指定した場合、返すメトリックの数を定義します。fields に METRICS/ALL が含まれている場合、または metricstoretrieve が指定されている場合にのみ考慮されます。それ以外の場合は無視されます。metricslimit の最大可能な値は Integer の最大値です。指定されていないか、1 未満の値を持つ場合、メトリックを取得する必要がある場合、metricslimit は 1 と見なされます。つまり、メトリックの最新の単一値が返されます。
  8. metricstimestart - 指定した場合、このタイムスタンプ以降のエンティティのメトリックが返されます。
  9. metricstimeend - 指定した場合、このタイムスタンプ以前のエンティティのメトリックが返されます。

JSONレスポンスの例

{
  "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": {}
}

レスポンスコード

  1. 成功した場合、HTTP 200(OK)レスポンスが返されます。
  2. リクエストの解析中に問題が発生した場合、HTTP 400(Bad Request)が返されます。
  3. フローコンテキスト情報を取得できない場合、または指定されたアプリ ID のアプリケーションが見つからない場合、HTTP 404 (Not Found) が返されます。
  4. データの取得中に回復不能なエラーが発生した場合、HTTP 500(Internal Server Error)が返されます。

アプリケーションのスコープ内のジェネリックエンティティをクエリする

この API を使用すると、クラスタ ID、アプリケーション ID、およびフレームワークごとのエンティティタイプで識別されるジェネリックエンティティをクエリできます。クラスタ名なしで REST エンドポイントが使用されている場合、yarn-site.xml の構成 yarn.resourcemanager.cluster-id で指定されたクラスタが使用されます。フローコンテキスト情報 (つまり、ユーザー、フロー名、および実行 ID) は必須ではありませんが、クエリパラメータで指定されている場合、クラスタとアプリ ID に基づいてフローコンテキスト情報をフェッチするための追加操作の必要性を排除できます。一致するエンティティの数が制限を超える場合、制限までの最新のエンティティが返されます。このエンドポイントを使用して、コンテナ、アプリケーション試行、またはクライアントがバックエンドに配置するその他のジェネリックエンティティをクエリできます。たとえば、エンティティタイプとして YARN_CONTAINER を指定してコンテナをクエリしたり、エンティティタイプとして YARN_APPLICATION_ATTEMPT を指定してアプリケーション試行をクエリしたりできます。述語に一致するエンティティがない場合は、空のリストが返されます。

HTTPリクエスト

GET /ws/v2/timeline/clusters/{cluster name}/apps/{app id}/entities/{entity type}

or

GET /ws/v2/timeline/apps/{app id}/entities/{entity type}

サポートされているクエリパラメータ

  1. userid - 指定した場合、このユーザーに属するエンティティのみが返されます。このクエリパラメータは、flowname および flowrunid クエリパラメータと一緒に指定する必要があります。そうしないと無視されます。userid、flowname、flowrunid が指定されていない場合、クエリの実行中にクラスタと appid に基づいてフローコンテキスト情報をフェッチする必要があります。
  2. flowname - 指定した場合、このフロー名に属するエンティティのみが返されます。このクエリパラメータは、userid および flowrunid クエリパラメータと一緒に指定する必要があります。そうしないと無視されます。userid、flowname、flowrunid が指定されていない場合、クエリの実行中にクラスタと appid に基づいてフローコンテキスト情報をフェッチする必要があります。
  3. flowrunid - 指定した場合、このフロー実行 ID に属するエンティティのみが返されます。このクエリパラメータは、userid および flowname クエリパラメータと一緒に指定する必要があります。そうしないと無視されます。userid、flowname、flowrunid が指定されていない場合、クエリの実行中にクラスタと appid に基づいてフローコンテキスト情報をフェッチする必要があります。
  4. limit - 指定した場合、返すエンティティの数を定義します。制限の最大可能な値は Long の最大値です。指定されていないか、0 未満の値を持つ場合、制限は 100 と見なされます。
  5. createdtimestart - 指定した場合、このタイムスタンプ以降に作成されたエンティティのみが返されます。
  6. createdtimeend - 指定した場合、このタイムスタンプ以前に作成されたエンティティのみが返されます。
  7. relatesto - 指定した場合、一致するエンティティは、エンティティタイプに関連付けられた指定されたエンティティに関連するか、関連しない必要があります。relatesto は次の形式の式として表現されます
    “(<entitytype>:<entityid>:<entityid>…,<entitytype>:<entityid>:<entityid>…) <op> !(<entitytype>:<entityid>:<entityid>…,<entitytype>:<entityid>:<entityid>…)”。
    relatesto 式にエンティティタイプ - エンティティ ID(s) 関係が「!」の直前の括弧内に指定されている場合、これは、relatesto フィールドにこれらの関係を持つエンティティは返されないことを意味します。「!」なしの式またはサブ式の場合、relatesto フィールドに指定された関係を持つすべてのエンティティが返されます。「op」は論理演算子であり、AND または OR のいずれかです。エンティティタイプには任意の数のエンティティ ID(s) を続けることができます。また、複雑な式を作成するために、任意の数の AND と OR を組み合わせることができます。括弧を使用して式をグループ化できます。
    :relatestoは「(((type1:id1:id2:id3,type3:id9) AND !(type2:id7:id8)) OR (type1:id4))」にすることができます。
    スペースなどのURLセーフでない文字は適切にエンコードする必要があることに注意してください。
  8. isrelatedto - 指定した場合、一致するエンティティは、エンティティタイプに関連付けられた指定されたエンティティに関連するか、関連しない必要があります。isrelatedto は relatesto と同じ形式で表現されます。
  9. infofilters - 指定した場合、一致するエンティティは、指定された情報キーと完全に一致する必要があり、指定された値と等しいか等しくないかのいずれかである必要があります。情報キーは文字列ですが、値は任意のオブジェクトにすることができます。infofilters は次の形式の式として表現されます
    “(<key> <compareop> <value>) <op> (<key> <compareop> <value>)”。
    ここで、opはANDまたはORのいずれかになります。また、compareopは、「eq」、「ne」、または「ene」のいずれかになります。
    「eq」は等しい、「ne」は等しくないことを意味し、キーの存在は一致には必須ではありません。「ene」は等しくないことを意味しますが、キーの存在が必要です。複雑な式を作成するために、任意の数の AND と OR を組み合わせることができます。括弧を使用して式をグループ化できます。
    : infofilters は「(((infokey1 eq value1) AND (infokey2 ne value1)) OR (infokey1 ene value3))」のようになります。
    注: 値がオブジェクトの場合、値はスペースなしの JSON 形式で指定できます。
    : infofilters は (infokey1 eq {“<key>”:“<value>”,“<key>”:“<value>”…}) のようになります。
    スペースなどのURLセーフでない文字は適切にエンコードする必要があることに注意してください。
  10. conffilters - 指定した場合、一致するエンティティは、指定された構成名と完全に一致し、かつ指定された構成値と等しいか等しくないかのいずれかである必要があります。構成名と値の両方が文字列である必要があります。conffiltersはinfofiltersと同じ形式で表現されます。
  11. metricfilters - 指定した場合、一致するエンティティは、指定されたメトリックと完全に一致し、メトリック値との指定された関係を満たす必要があります。メトリック ID は文字列である必要があり、メトリック値は整数値である必要があります。metricfiltersは次の形式の式で表されます。
    “(<metricid> <compareop> <metricvalue>) <op> (<metricid> <compareop> <metricvalue>)”
    ここで、op は AND または OR のいずれかです。また、compareop は "eq"、"ne"、"ene"、"gt"、"ge"、"lt" および "le" のいずれかです。
    「eq」は等しい、「ne」は等しくないことを意味し、メトリックの存在は一致には必須ではありません。「ene」は等しくないことを意味しますが、メトリックの存在が必要です。「gt」はより大きい、「ge」は以上、「lt」はより小さい、「le」は以下を意味します。複雑な式を作成するために、任意の数の AND と OR を組み合わせることができます。括弧を使用して式をグループ化できます。
    : metricfilters は「(((metric1 eq 50) AND (metric2 gt 40)) OR (metric1 lt 20))」のようになります。
    これは本質的に「(metric1 == 50 AND metric2 > 40) OR (metric1 < 20)」と同等の式です。
    スペースなどのURLセーフでない文字は適切にエンコードする必要があることに注意してください。
  12. eventfilters - 指定した場合、一致するエンティティは、式に応じて指定されたイベントを含むか含まない必要があります。eventfiltersは次の形式の式で表されます。
    「(<eventid>,<eventid>) <op> !(<eventid>,<eventid>,<eventid>)」。
    ここで、「!」は、「!」の直前の括弧内のコンマ区切りのイベントリストのいずれも、一致が発生するために存在してはならないことを意味します。「!」が指定されていない場合、括弧内の指定されたイベントが存在する必要があります。op は論理演算子であり、AND または OR のいずれかです。複雑な式を作成するために、任意の数の AND と OR を組み合わせることができます。括弧を使用して式をグループ化できます。
    : eventfilters は「(((event1,event2) AND !(event4)) OR (event3,event7,event5))」のようになります。
    スペースなどのURLセーフでない文字は適切にエンコードする必要があることに注意してください。
  13. metricstoretrieve - 指定した場合、取得するメトリクスまたは取得せずにレスポンスで返すメトリクスを定義します。metricstoretrieveは、次の形式の式にすることができます。
    (<metricprefix>,<metricprefix>,<metricprefix>,<metricprefix>…)
    これは、コンマ区切りのメトリック ID プレフィックスのリストを指定します。プレフィックスのいずれかに一致するメトリックのみが取得されます。単純な式の場合、括弧はオプションです。または、式は次の形式にすることもできます。
    !(<metricprefix>,<metricprefix>,<metricprefix>,<metricprefix>…)
    これは、メトリックIDプレフィックスのコンマ区切りリストを指定します。プレフィックスのいずれにも一致しないメトリックのみが取得されます。
    metricstoretrieveが指定されている場合、METRICSがfieldsクエリパラメータで指定されているかどうかに関係なく、メトリックが取得されます。スペースなどのURLセーフでない文字は適切にエンコードする必要があることに注意してください。
  14. confstoretrieve - 指定した場合、取得する構成、または取得せずに応答で返信する構成を定義します。confstoretrieve は次の形式の式にすることができます。
    (<config_name_prefix>,<config_name_prefix>,<config_name_prefix>,<config_name_prefix>…)
    これは、コンマ区切りの構成名プレフィックスのリストを指定します。プレフィックスのいずれかに一致する構成のみが取得されます。単純な式の場合、括弧はオプションです。または、式は次の形式にすることもできます。
    !(<config_name_prefix>,<config_name_prefix>,<config_name_prefix>,<config_name_prefix>…)
    これは、コンマ区切りの構成名プレフィックスのリストを指定します。プレフィックスのいずれにも一致しない構成のみが取得されます。
    confstoretrieve が指定されている場合、フィールドクエリパラメータで CONFIGS が指定されているかどうかに関係なく、構成が取得されます。スペースなどの URL に安全でない文字は適切にエンコードする必要があることに注意してください。
  15. fields - 取得するフィールドを指定します。fields の可能な値は、EVENTSINFOCONFIGSMETRICSRELATES_TOIS_RELATED_TO および ALL です。ALL が指定された場合は、すべてのフィールドが取得されます。複数のフィールドは、カンマ区切りのリストとして指定できます。フィールドが指定されていない場合、レスポンスでは、エンティティ ID、エンティティ タイプ、作成時刻、および info フィールドの UID が返されます。
  16. metricslimit - 指定した場合、返すメトリックの数を定義します。fields に METRICS/ALL が含まれている場合、または metricstoretrieve が指定されている場合にのみ考慮されます。それ以外の場合は無視されます。metricslimit の最大可能な値は Integer の最大値です。指定されていないか、1 未満の値を持つ場合、メトリックを取得する必要がある場合、metricslimit は 1 と見なされます。つまり、メトリックの最新の単一値が返されます。
  17. metricstimestart - 指定した場合、このタイムスタンプ以降のエンティティのメトリックが返されます。
  18. metricstimeend - 指定した場合、このタイムスタンプ以前のエンティティのメトリックが返されます。
  19. fromid - 指定した場合、指定された fromid から次の汎用エンティティのセットを取得します。取得されるエンティティのセットには、指定された fromid が含まれます。fromid は、以前に送信されたフローエンティティレスポンスの FROM_ID info キーに関連付けられた値から取得する必要があります。

JSONレスポンスの例

[
  {
    "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": { }
  }
]

レスポンスコード

  1. 成功した場合、HTTP 200(OK)レスポンスが返されます。
  2. リクエストの解析中に問題が発生した場合、HTTP 400(Bad Request)が返されます。
  3. フローコンテキスト情報を取得できない場合は、HTTP 404 (Not Found) が返されます。
  4. データの取得中に回復不能なエラーが発生した場合、HTTP 500(Internal Server Error)が返されます。

汎用エンティティをクエリします。

この API を使用すると、クラスター ID、doAsUser、およびエンティティタイプによって識別されるユーザーごとに汎用エンティティをクエリできます。クラスター名のない REST エンドポイントが使用されている場合、yarn-site.xml の構成 yarn.resourcemanager.cluster-id で指定されたクラスターが使用されます。一致するエンティティの数が制限を超えている場合、制限までの最新のエンティティが返されます。このエンドポイントは、クライアントがバックエンドに配置する汎用エンティティをクエリするために使用できます。たとえば、エンティティタイプを TEZ_DAG_ID として指定することで、ユーザーエンティティをクエリできます。述語に一致するエンティティがない場合は、空のリストが返されます。: 現時点では、アプリケーションの所有者とは異なる doAsUser で公開されているエンティティのみをクエリできます。

HTTPリクエスト

GET /ws/v2/timeline/clusters/{cluster name}/users/{userid}/entities/{entitytype}

or

GET /ws/v2/timeline/users/{userid}/entities/{entitytype}

サポートされているクエリパラメータ

  1. limit - 指定した場合、返すエンティティの数を定義します。制限の最大可能な値は Long の最大値です。指定されていないか、0 未満の値を持つ場合、制限は 100 と見なされます。
  2. createdtimestart - 指定した場合、このタイムスタンプ以降に作成されたエンティティのみが返されます。
  3. createdtimeend - 指定した場合、このタイムスタンプ以前に作成されたエンティティのみが返されます。
  4. relatesto - 指定した場合、一致するエンティティは、エンティティタイプに関連付けられた指定されたエンティティに関連するか、関連しない必要があります。relatesto は次の形式の式として表現されます
    “(<entitytype>:<entityid>:<entityid>…,<entitytype>:<entityid>:<entityid>…) <op> !(<entitytype>:<entityid>:<entityid>…,<entitytype>:<entityid>:<entityid>…)”。
    relatesto 式にエンティティタイプ - エンティティ ID(s) 関係が「!」の直前の括弧内に指定されている場合、これは、relatesto フィールドにこれらの関係を持つエンティティは返されないことを意味します。「!」なしの式またはサブ式の場合、relatesto フィールドに指定された関係を持つすべてのエンティティが返されます。「op」は論理演算子であり、AND または OR のいずれかです。エンティティタイプには任意の数のエンティティ ID(s) を続けることができます。また、複雑な式を作成するために、任意の数の AND と OR を組み合わせることができます。括弧を使用して式をグループ化できます。
    :relatestoは「(((type1:id1:id2:id3,type3:id9) AND !(type2:id7:id8)) OR (type1:id4))」にすることができます。
    スペースなどのURLセーフでない文字は適切にエンコードする必要があることに注意してください。
  5. isrelatedto - 指定した場合、一致するエンティティは、エンティティタイプに関連付けられた指定されたエンティティに関連するか、関連しない必要があります。isrelatedto は relatesto と同じ形式で表現されます。
  6. infofilters - 指定した場合、一致するエンティティは、指定された情報キーと完全に一致する必要があり、指定された値と等しいか等しくないかのいずれかである必要があります。情報キーは文字列ですが、値は任意のオブジェクトにすることができます。infofilters は次の形式の式として表現されます
    “(<key> <compareop> <value>) <op> (<key> <compareop> <value>)”。
    ここで、opはANDまたはORのいずれかになります。また、compareopは、「eq」、「ne」、または「ene」のいずれかになります。
    「eq」は等しい、「ne」は等しくないことを意味し、キーの存在は一致には必須ではありません。「ene」は等しくないことを意味しますが、キーの存在が必要です。複雑な式を作成するために、任意の数の AND と OR を組み合わせることができます。括弧を使用して式をグループ化できます。
    : infofilters は「(((infokey1 eq value1) AND (infokey2 ne value1)) OR (infokey1 ene value3))」のようになります。
    注: 値がオブジェクトの場合、値はスペースなしの JSON 形式で指定できます。
    : infofilters は (infokey1 eq {“<key>”:“<value>”,“<key>”:“<value>”…}) のようになります。
    スペースなどのURLセーフでない文字は適切にエンコードする必要があることに注意してください。
  7. conffilters - 指定した場合、一致するエンティティは、指定された構成名と完全に一致し、かつ指定された構成値と等しいか等しくないかのいずれかである必要があります。構成名と値の両方が文字列である必要があります。conffiltersはinfofiltersと同じ形式で表現されます。
  8. metricfilters - 指定した場合、一致するエンティティは、指定されたメトリックと完全に一致し、メトリック値との指定された関係を満たす必要があります。メトリック ID は文字列である必要があり、メトリック値は整数値である必要があります。metricfiltersは次の形式の式で表されます。
    “(<metricid> <compareop> <metricvalue>) <op> (<metricid> <compareop> <metricvalue>)”
    ここで、op は AND または OR のいずれかです。また、compareop は "eq"、"ne"、"ene"、"gt"、"ge"、"lt" および "le" のいずれかです。
    「eq」は等しい、「ne」は等しくないことを意味し、メトリックの存在は一致には必須ではありません。「ene」は等しくないことを意味しますが、メトリックの存在が必要です。「gt」はより大きい、「ge」は以上、「lt」はより小さい、「le」は以下を意味します。複雑な式を作成するために、任意の数の AND と OR を組み合わせることができます。括弧を使用して式をグループ化できます。
    : metricfilters は「(((metric1 eq 50) AND (metric2 gt 40)) OR (metric1 lt 20))」のようになります。
    これは本質的に「(metric1 == 50 AND metric2 > 40) OR (metric1 < 20)」と同等の式です。
    スペースなどのURLセーフでない文字は適切にエンコードする必要があることに注意してください。
  9. eventfilters - 指定した場合、一致するエンティティは、式に応じて指定されたイベントを含むか含まない必要があります。eventfiltersは次の形式の式で表されます。
    「(<eventid>,<eventid>) <op> !(<eventid>,<eventid>,<eventid>)」。
    ここで、「!」は、「!」の直前の括弧内のコンマ区切りのイベントリストのいずれも、一致が発生するために存在してはならないことを意味します。「!」が指定されていない場合、括弧内の指定されたイベントが存在する必要があります。op は論理演算子であり、AND または OR のいずれかです。複雑な式を作成するために、任意の数の AND と OR を組み合わせることができます。括弧を使用して式をグループ化できます。
    : eventfilters は「(((event1,event2) AND !(event4)) OR (event3,event7,event5))」のようになります。
    スペースなどのURLセーフでない文字は適切にエンコードする必要があることに注意してください。
  10. metricstoretrieve - 指定した場合、取得するメトリクスまたは取得せずにレスポンスで返すメトリクスを定義します。metricstoretrieveは、次の形式の式にすることができます。
    (<metricprefix>,<metricprefix>,<metricprefix>,<metricprefix>…)
    これは、コンマ区切りのメトリック ID プレフィックスのリストを指定します。プレフィックスのいずれかに一致するメトリックのみが取得されます。単純な式の場合、括弧はオプションです。または、式は次の形式にすることもできます。
    !(<metricprefix>,<metricprefix>,<metricprefix>,<metricprefix>…)
    これは、メトリックIDプレフィックスのコンマ区切りリストを指定します。プレフィックスのいずれにも一致しないメトリックのみが取得されます。
    metricstoretrieveが指定されている場合、METRICSがfieldsクエリパラメータで指定されているかどうかに関係なく、メトリックが取得されます。スペースなどのURLセーフでない文字は適切にエンコードする必要があることに注意してください。
  11. confstoretrieve - 指定した場合、取得する構成、または取得せずに応答で返信する構成を定義します。confstoretrieve は次の形式の式にすることができます。
    (<config_name_prefix>,<config_name_prefix>,<config_name_prefix>,<config_name_prefix>…)
    これは、コンマ区切りの構成名プレフィックスのリストを指定します。プレフィックスのいずれかに一致する構成のみが取得されます。単純な式の場合、括弧はオプションです。または、式は次の形式にすることもできます。
    !(<config_name_prefix>,<config_name_prefix>,<config_name_prefix>,<config_name_prefix>…)
    これは、コンマ区切りの構成名プレフィックスのリストを指定します。プレフィックスのいずれにも一致しない構成のみが取得されます。
    confstoretrieve が指定されている場合、フィールドクエリパラメータで CONFIGS が指定されているかどうかに関係なく、構成が取得されます。スペースなどの URL に安全でない文字は適切にエンコードする必要があることに注意してください。
  12. fields - 取得するフィールドを指定します。fields の可能な値は、EVENTSINFOCONFIGSMETRICSRELATES_TOIS_RELATED_TO および ALL です。ALL が指定された場合は、すべてのフィールドが取得されます。複数のフィールドは、カンマ区切りのリストとして指定できます。フィールドが指定されていない場合、レスポンスでは、エンティティ ID、エンティティ タイプ、作成時刻、および info フィールドの UID が返されます。
  13. metricslimit - 指定した場合、返すメトリックの数を定義します。fields に METRICS/ALL が含まれている場合、または metricstoretrieve が指定されている場合にのみ考慮されます。それ以外の場合は無視されます。metricslimit の最大可能な値は Integer の最大値です。指定されていないか、1 未満の値を持つ場合、メトリックを取得する必要がある場合、metricslimit は 1 と見なされます。つまり、メトリックの最新の単一値が返されます。
  14. metricstimestart - 指定した場合、このタイムスタンプ以降のエンティティのメトリックが返されます。
  15. metricstimeend - 指定した場合、このタイムスタンプ以前のエンティティのメトリックが返されます。
  16. fromid - 指定した場合、指定された fromid から次の汎用エンティティのセットを取得します。取得されるエンティティのセットには、指定された fromid が含まれます。fromid は、以前に送信されたフローエンティティレスポンスの FROM_ID info キーに関連付けられた値から取得する必要があります。

JSONレスポンスの例

[
  {
    "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": { }
  }
]

レスポンスコード

  1. 成功した場合、HTTP 200(OK)レスポンスが返されます。
  2. リクエストの解析中に問題が発生した場合、HTTP 400(Bad Request)が返されます。
  3. データの取得中に回復不能なエラーが発生した場合、HTTP 500(Internal Server Error)が返されます。

アプリケーションのスコープ内の汎用エンティティをクエリします

この API を使用すると、クラスター ID、アプリケーション ID、フレームワークごとのエンティティタイプ、およびエンティティ ID によって識別される特定の汎用エンティティをクエリできます。クラスター名のない REST エンドポイントが使用されている場合、yarn-site.xml の構成 yarn.resourcemanager.cluster-id で指定されたクラスターが使用されます。フローコンテキスト情報、つまりユーザー、フロー名、および実行 ID は必須ではありませんが、クエリパラメータで指定されている場合は、クラスターとアプリ ID に基づいてフローコンテキスト情報をフェッチするための追加操作の必要性を排除できます。このエンドポイントは、単一のコンテナ、アプリケーション試行、またはクライアントがバックエンドに配置するその他の汎用エンティティをクエリするために使用できます。たとえば、エンティティタイプを YARN_CONTAINER として指定し、エンティティ ID をコンテナ ID として指定することで、特定の YARN コンテナをクエリできます。同様に、エンティティタイプを YARN_APPLICATION_ATTEMPT として指定し、エンティティ ID をアプリケーション試行 ID にすることで、アプリケーション試行をクエリできます。

HTTPリクエスト

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}

サポートされているクエリパラメータ

  1. userid - 指定した場合、エンティティはこのユーザーに属している必要があります。このクエリパラメータは、flowname および flowrunid クエリパラメータとともに指定する必要があります。そうでない場合は無視されます。userid、flowname、および flowrunid が指定されていない場合は、クエリの実行中に、クラスターと appid に基づいてフローコンテキスト情報をフェッチする必要があります。
  2. flowname - 指定した場合、エンティティはこのフロー名に属している必要があります。このクエリパラメータは、userid および flowrunid クエリパラメータとともに指定する必要があります。そうでない場合は無視されます。userid、flowname、および flowrunid が指定されていない場合は、クエリの実行中に、クラスターと appid に基づいてフローコンテキスト情報をフェッチする必要があります。
  3. flowrunid - 指定した場合、エンティティはこのフロー実行 ID に属している必要があります。このクエリパラメータは、userid および flowname クエリパラメータとともに指定する必要があります。そうでない場合は無視されます。userid、flowname、および flowrunid が指定されていない場合は、クエリの実行中に、クラスターと appid に基づいてフローコンテキスト情報をフェッチする必要があります。
  4. metricstoretrieve - 指定した場合、取得するメトリクスまたは取得せずにレスポンスで返すメトリクスを定義します。metricstoretrieveは、次の形式の式にすることができます。
    (<metricprefix>,<metricprefix>,<metricprefix>,<metricprefix>…)
    これは、コンマ区切りのメトリック ID プレフィックスのリストを指定します。プレフィックスのいずれかに一致するメトリックのみが取得されます。単純な式の場合、括弧はオプションです。または、式は次の形式にすることもできます。
    !(<metricprefix>,<metricprefix>,<metricprefix>,<metricprefix>…)
    これは、メトリックIDプレフィックスのコンマ区切りリストを指定します。プレフィックスのいずれにも一致しないメトリックのみが取得されます。
    metricstoretrieveが指定されている場合、METRICSがfieldsクエリパラメータで指定されているかどうかに関係なく、メトリックが取得されます。スペースなどのURLセーフでない文字は適切にエンコードする必要があることに注意してください。
  5. confstoretrieve - 指定した場合、取得する構成、または取得せずに応答で返信する構成を定義します。confstoretrieve は次の形式の式にすることができます。
    (<config_name_prefix>,<config_name_prefix>,<config_name_prefix>,<config_name_prefix>…)
    これは、コンマ区切りの構成名プレフィックスのリストを指定します。プレフィックスのいずれかに一致する構成のみが取得されます。単純な式の場合、括弧はオプションです。または、式は次の形式にすることもできます。
    !(<config_name_prefix>,<config_name_prefix>,<config_name_prefix>,<config_name_prefix>…)
    これは、コンマ区切りの構成名プレフィックスのリストを指定します。プレフィックスのいずれにも一致しない構成のみが取得されます。
    confstoretrieve が指定されている場合、フィールドクエリパラメータで CONFIGS が指定されているかどうかに関係なく、構成が取得されます。スペースなどの URL に安全でない文字は適切にエンコードする必要があることに注意してください。
  6. fields - 取得するフィールドを指定します。fields の可能な値は、EVENTSINFOCONFIGSMETRICSRELATES_TOIS_RELATED_TO および ALL です。ALL が指定された場合は、すべてのフィールドが取得されます。複数のフィールドは、カンマ区切りのリストとして指定できます。フィールドが指定されていない場合、レスポンスでは、エンティティ ID、エンティティ タイプ、作成時刻、および info フィールドの UID が返されます。
  7. metricslimit - 指定した場合、返すメトリックの数を定義します。fields に METRICS/ALL が含まれている場合、または metricstoretrieve が指定されている場合にのみ考慮されます。それ以外の場合は無視されます。metricslimit の最大可能な値は Integer の最大値です。指定されていないか、1 未満の値を持つ場合、メトリックを取得する必要がある場合、metricslimit は 1 と見なされます。つまり、メトリックの最新の単一値が返されます。
  8. metricstimestart - 指定した場合、このタイムスタンプ以降のエンティティのメトリックが返されます。
  9. metricstimeend - 指定した場合、このタイムスタンプ以前のエンティティのメトリックが返されます。
  10. entityidprefix - フェッチするエンティティの ID プレフィックスを定義します。指定した場合、エンティティの取得が高速化されます。

JSONレスポンスの例

{
  "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": { }
}

レスポンスコード

  1. 成功した場合、HTTP 200(OK)レスポンスが返されます。
  2. リクエストの解析中に問題が発生した場合、HTTP 400(Bad Request)が返されます。
  3. フローコンテキスト情報を取得できない場合、または指定されたエンティティ ID のエンティティが見つからない場合は、HTTP 404 (Not Found) が返されます。
  4. データの取得中に回復不能なエラーが発生した場合、HTTP 500(Internal Server Error)が返されます。

汎用エンティティをクエリします。

この API を使用すると、クラスター ID、doAsUser、エンティティタイプ、およびエンティティ ID によって識別されるユーザーごとに汎用エンティティをクエリできます。クラスター名のない REST エンドポイントが使用されている場合、yarn-site.xml の構成 yarn.resourcemanager.cluster-id で指定されたクラスターが使用されます。一致するエンティティの数が制限を超えている場合、制限までの最新のエンティティが返されます。このエンドポイントは、クライアントがバックエンドに配置する汎用エンティティをクエリするために使用できます。たとえば、エンティティタイプを TEZ_DAG_ID として指定することで、ユーザーエンティティをクエリできます。述語に一致するエンティティがない場合は、空のリストが返されます。: 現時点では、アプリケーションの所有者とは異なる doAsUser で公開されているエンティティのみをクエリできます。

HTTPリクエスト

GET /ws/v2/timeline/clusters/{cluster name}/users/{userid}/entities/{entitytype}/{entityid}

or

GET /ws/v2/timeline/users/{userid}/entities/{entitytype}/{entityid}

サポートされているクエリパラメータ

  1. metricstoretrieve - 指定した場合、取得するメトリクスまたは取得せずにレスポンスで返すメトリクスを定義します。metricstoretrieveは、次の形式の式にすることができます。
    (<metricprefix>,<metricprefix>,<metricprefix>,<metricprefix>…)
    これは、コンマ区切りのメトリック ID プレフィックスのリストを指定します。プレフィックスのいずれかに一致するメトリックのみが取得されます。単純な式の場合、括弧はオプションです。または、式は次の形式にすることもできます。
    !(<metricprefix>,<metricprefix>,<metricprefix>,<metricprefix>…)
    これは、メトリックIDプレフィックスのコンマ区切りリストを指定します。プレフィックスのいずれにも一致しないメトリックのみが取得されます。
    metricstoretrieveが指定されている場合、METRICSがfieldsクエリパラメータで指定されているかどうかに関係なく、メトリックが取得されます。スペースなどのURLセーフでない文字は適切にエンコードする必要があることに注意してください。
  2. confstoretrieve - 指定した場合、取得する構成、または取得せずに応答で返信する構成を定義します。confstoretrieve は次の形式の式にすることができます。
    (<config_name_prefix>,<config_name_prefix>,<config_name_prefix>,<config_name_prefix>…)
    これは、コンマ区切りの構成名プレフィックスのリストを指定します。プレフィックスのいずれかに一致する構成のみが取得されます。単純な式の場合、括弧はオプションです。または、式は次の形式にすることもできます。
    !(<config_name_prefix>,<config_name_prefix>,<config_name_prefix>,<config_name_prefix>…)
    これは、コンマ区切りの構成名プレフィックスのリストを指定します。プレフィックスのいずれにも一致しない構成のみが取得されます。
    confstoretrieve が指定されている場合、フィールドクエリパラメータで CONFIGS が指定されているかどうかに関係なく、構成が取得されます。スペースなどの URL に安全でない文字は適切にエンコードする必要があることに注意してください。
  3. fields - 取得するフィールドを指定します。fields の可能な値は、EVENTSINFOCONFIGSMETRICSRELATES_TOIS_RELATED_TO および ALL です。ALL が指定された場合は、すべてのフィールドが取得されます。複数のフィールドは、カンマ区切りのリストとして指定できます。フィールドが指定されていない場合、レスポンスでは、エンティティ ID、エンティティ タイプ、作成時刻、および info フィールドの UID が返されます。
  4. metricslimit - 指定した場合、返すメトリックの数を定義します。fields に METRICS/ALL が含まれている場合、または metricstoretrieve が指定されている場合にのみ考慮されます。それ以外の場合は無視されます。metricslimit の最大可能な値は Integer の最大値です。指定されていないか、1 未満の値を持つ場合、メトリックを取得する必要がある場合、metricslimit は 1 と見なされます。つまり、メトリックの最新の単一値が返されます。
  5. metricstimestart - 指定した場合、このタイムスタンプ以降のエンティティのメトリックが返されます。
  6. metricstimeend - 指定した場合、このタイムスタンプ以前のエンティティのメトリックが返されます。
  7. fromid - 指定した場合、指定された fromid から次の汎用エンティティのセットを取得します。取得されるエンティティのセットには、指定された fromid が含まれます。fromid は、以前に送信されたフローエンティティレスポンスの FROM_ID info キーに関連付けられた値から取得する必要があります。

JSONレスポンスの例

[
  {
    "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": { }
  }
]

レスポンスコード

  1. 成功した場合、HTTP 200(OK)レスポンスが返されます。
  2. リクエストの解析中に問題が発生した場合、HTTP 400(Bad Request)が返されます。
  3. データの取得中に回復不能なエラーが発生した場合、HTTP 500(Internal Server Error)が返されます。

汎用エンティティタイプをクエリします

この API を使用すると、指定されたアプリ ID の使用可能なエンティティタイプのセットをクエリできます。クラスター名のない REST エンドポイントが使用されている場合、yarn-site.xml の構成 yarn.resourcemanager.cluster-id で指定されたクラスターが使用されます。userid、フロー名、およびフロー実行 ID (オプションのクエリパラメータ) が指定されていない場合は、基になるストレージ実装に格納されているフローコンテキスト情報からアプリ ID とクラスター ID に基づいてクエリされます。

HTTPリクエスト

GET /ws/v2/timeline/apps/{appid}/entity-types

or

GET /ws/v2/timeline/clusters/{clusterid}/apps/{appid}/entity-types

サポートされているクエリパラメータ

  1. userid - 指定した場合、エンティティはこのユーザーに属している必要があります。このクエリパラメータは、flowname および flowrunid クエリパラメータとともに指定する必要があります。そうでない場合は無視されます。userid、flowname、および flowrunid が指定されていない場合、タイムラインリーダーは、クエリの実行中にクラスターと appid に基づいてフローコンテキスト情報をフェッチします。
  2. flowname - 指定した場合、エンティティはこのフロー名に属している必要があります。このクエリパラメータは、userid および flowrunid クエリパラメータとともに指定する必要があります。そうでない場合は無視されます。userid、flowname、および flowrunid が指定されていない場合は、クエリの実行中に、クラスターと appid に基づいてフローコンテキスト情報をフェッチする必要があります。
  3. flowrunid - 指定した場合、エンティティはこのフロー実行 ID に属している必要があります。このクエリパラメータは、userid および flowname クエリパラメータとともに指定する必要があります。そうでない場合は無視されます。userid、flowname、および flowrunid が指定されていない場合は、クエリの実行中に、クラスターと appid に基づいてフローコンテキスト情報をフェッチする必要があります。

JSONレスポンスの例

{
  YARN_APPLICATION_ATTEMPT,
  YARN_CONTAINER,
  MAPREDUCE_JOB,
  MAPREDUCE_TASK,
  MAPREDUCE_TASK_ATTEMPT
}

レスポンスコード

  1. 成功した場合、HTTP 200(OK)レスポンスが返されます。
  2. リクエストの解析中に問題が発生した場合、HTTP 400(Bad Request)が返されます。
  3. フローコンテキスト情報を取得できない場合、または指定されたエンティティ ID のエンティティが見つからない場合は、HTTP 404 (Not Found) が返されます。
  4. データの取得中に回復不能なエラーが発生した場合、HTTP 500(Internal Server Error)が返されます。

履歴アプリの集約ログサービス

TimelineService v.2 は、履歴アプリの集約ログの提供をサポートしています。これを有効にするには、yarn-site.xml で "yarn.log.server.web-service.url" を "${yarn.timeline-service.hostname}:8188/ws/v2/applicationlog" に構成します。