2017-01-21 10 views
0

は、我々はスパークジョブは、糸とdataprocクラスタ上で実行している - 我々はまた、ジョブの状態のための一定のポーリングを行い、私たちは糸からジョブの状態を監視しているPythonでラッパープログラムを持っている - 次のように示されているよう:dataprocクライアントからの糸の状態 - なぜそれは常にリストオブジェクトですか?

dataproc = discovery.build('dataproc', 'v1', credentials=credentials) 
job_id = '8873a82c-6201-48d4-8ad3-d8f236ef9c49' 
projectId='dev-111111' 
REGION = 'global' 

result = dataproc.projects().regions().jobs().get(projectId=projectId,region=REGION,jobId=job_id).execute() 

print result['yarnApplications'][0]['state'] 
「結果」は、上記のJSONオブジェクトであり、JSONオブジェクト内の最初で唯一の要素そのジョブの状態を含むリストオブジェクトである「yarnApplications」と呼ばれるフィールドがあり、Googleのdataprocのdoc here

によって示唆されるよう

私たちは興味があります。

質問i s - なぜ、この "yarnApplications"オブジェクトは常に1つの糸ジョブを実行しているにもかかわらず常にリストオブジェクトですか?我々は、糸が複数の試行を試みている状況を見てきました。この状況では、 "yarnApplications"フィールドには複数の要素が含まれていますか?

また、糸に1つのジョブしか実行されていない場合、「yarnApplications」リストオブジェクトには1つの要素しか含まれません。

これはdataprocクライアントのベータ版であることを理解していますが、実動システムが稼動しているので、入力や提案は感謝します。

おかげDataproc API job definitionパー

答えて

1

、ジョブはYarnApplicationsの「コレクション」を含む、一般的に、この定義は、それが実行時の内容に基づいて、型の変更はできません。たとえば、リストに1つの要素があるかどうかにかかわらず、Job.getYarnApplications()returns a java.util.ListのJavaインタフェースを使用します。

このAPI定義は、HiveやPigなど、ジョブごとに複数のYARNアプリケーションを提出するさまざまなジョブタイプに対応するように設計されています。場合によっては、ドライバプログラムがApache Crunchプログラムである場合や、Gridmixを実行している場合など、Hadoopのjarfilesは複数のジョブも送信します。

YARNで1つのジョブしか実行されていない場合、リストオブジェクトには1つの要素しか含まれません。リスト内のYARNアプリケーションは、指定されたJob呼び出しによって作成されたものだけです。複数のDataprocジョブを同時に実行しても、同時に異なるYARNアプリケーションを送信する場合でも、各ジョブにはジョブが送信した特定のYARNアプリケーションのみが含まれます。

+0

ありがとう、デニス、あなたのコメントをいただきありがとうございます。 あなたは「あなたがヤーンで1つの仕事しかしていないと、実際には保証されている」と言いました。それがドキュメンテーションのものなら、共有してもよろしいですか?再度、感謝します! –

+0

"ヤーンが複数の試行を行っている"ところで、YARNの1つのYARNアプリケーションIDの下に残り、複数の試行がその中にリストされている状況で説明しました。 "yarn applications -list -appStates ALL"は、すべての試行に対して1つのアプリケーションIDだけを返します。だからDataprocは、1つのアプリケーションだけが動作しているときにYARNアプリケーションを浮上させることに関して特別なことは約束していません。むしろDataprocはjobidタグを使ってYARNアプリケーションを追跡します。ドライバプログラム自体がYARNアプリケーションの発行を再試行すると、Dataprocは実際に複数のアプリケーションを表示します。 –

+0

現在のドキュメントは、[ジョブリソース定義](https://cloud.google.com/dataproc/docs/reference/rest/v1/projects.regions.jobs#resource-job)内にありますが、再試行がジョブ内にリストされているYARNアプリケーションの数にどのように影響するかについて詳しく調べてください。その動作はエンジンによって異なる場合があります。結局、DataprocのYARNアプリケーションのリストには、クラスタ内で 'yarn application -list'を実行するのと同様の内容が含まれますが、アプリケーションを生成したjobidによってフィルタリングされます。 –

関連する問題