2017-02-13 4 views
0

私はクライアントアプリケーションが接続できるようにgrpcを使用するSpark 2アプリケーションを持っています。スパーク2:ノードがマスタかワーカーかを確認してください

しかし、grpcコードは、作業者ではなくマスターノードでのみ起動します。

スパーク2では、コードが現在実行されているノードがマスターノードであるかどうかをチェックする可能性はありますか?

+0

あなたはドライバーが走っているところ*について話しています*から? –

+0

はい!実行しているコードがドライバの一部として実行されているかどうかをチェックしたいと思います。 – navige

答えて

1

あなたからドライバのホスト名を取得することができます:私は「ホスト」を使用してそれを行うための方法を好きではない、あなたは右のインターフェイスのマッチングに依存し、また、同じノードが両方のドライバを含めることができます

sc.getConf.get(“spark.driver.host”) 
+0

をチェックしてください: 'java.net.InetAddress.getLocalHost()。getHostName()== mainContext.sc.getConf.get(" spark.driver.host ")'は、私が – navige

+1

というよりは、平等をチェックする、http://stackoverflow.com/questions/2406341/how-to-check-if-an-ip-address-is-the-local-host-on-a-multi-homed-system – navige

+0

私はドンを参照してくださいこれはまったく安全だとは思わないでしょう。ローカルモードまたは糸クラスターでコードを実行すると、エグゼキュータはドライバと同じ位置に着陸することができます。 – BiS

1

とマスター。個人的に、私は

spark.executorEnv.RUNNING_ON_EXECUTOR=yes 

、その後、私のコードで(ここではPythonを使用して、それが他の言語で動作するはずです)変数の環境を設定します。

import os 
if "RUNNING_ON_EXECUTOR" in os.environ: 
     //Run executor code 
else: 
     //run driver code 
関連する問題