Spark jar が HDFS に既に存在するLivyを使用して、クラスターの外部から HTTP 呼び出しを介して Spark ジョブを実行したいと思います。
spark-submit
クラスターノードのシェルからジョブを実行できます。たとえば、次のようになります。
spark-submit --class io.woolford.Main --master yarn-cluster hdfs://hadoop01:8020/path/to/spark-job.jar
--master yarn-cluster
jar が存在する HDFS にアクセスするには、 が必要であることに注意してください。
を使用して、Livy 経由でコマンドを送信することもできますcurl
。たとえば、次のリクエスト:
curl -X POST --data '{"file": "/path/to/spark-job.jar", "className": "io.woolford.Main"}' -H "Content-Type: application/json" hadoop01:8998/batches
... クラスターで次のコマンドを実行します。
spark-submit --class io.woolford.Main hdfs://hadoop01:8020/path/to/spark-job.jar
これは、機能するコマンドからパラメーターを除いたものと同じ--master yarn-cluster
です。これはテーリングによって確認されました/var/log/livy/livy-livy-server.out
。
そのため、コマンドがLivy によって実行されるときcurl
に含めるようにコマンドを変更する必要があります。--master yarn-cluster
一見すると、JSON ディクショナリに引数を追加することで、これが可能になるはずです。残念ながら、これらは通過しません。
システム全体の変更--master yarn-cluster
を行わずにジョブが YARN で実行されるように Livyに渡す方法を知っている人はいますか?