簡體   English   中英

使用Yarn客戶端或任何其他方式從Spring Web應用程序運行Apache spark作業

[英]Running Apache spark job from Spring Web application using Yarn client or any alternate way

我最近開始使用spark,我想從Spring Web應用程序運行spark作業。

我有一種情況,我使用Spring boot在Tomcat服務器上運行Web應用程序。我的Web應用程序接收基於它的REST Web服務請求它需要在Yarn集群中觸發spark計算作業。 由於我的工作可能需要更長的時間才能運行並且可以從HDFS訪問數據,所以我想在yarn-cluster模式下運行spark作業,我不想在我的web層中保持spark上下文的活動。 另一個原因是我的應用程序是多租戶,因此每個租戶都可以運行它自己的工作,因此在紗線集群模式下,每個租戶的工作可以啟動它自己的驅動程序並運行在它自己的火花集群中。 在Web應用程序JVM中,我假設我無法在一個JVM中運行多個spark上下文。

我想在我的Web應用程序中從java程序觸發yarn-cluster模式的spark作業。 實現這一目標的最佳方法是什么。 我正在探索各種選擇,並尋找關於哪一個最好的指導

1)我可以使用spark-submit命令行shell來提交我的工作。 但要從我的Web應用程序觸發它,我需要使用Java ProcessBuilder api或基於java ProcessBuilder構建的一些包。 這有兩個問題。 首先,它聽起來不像是一種干凈的方式。 我應該采用編程方式觸發我的火花應用程序。 第二個問題是我將失去監視提交的應用程序並獲得它的狀態的能力。只有粗略的做法是讀取spark-submit shell的輸出流,這聽起來不是好方法。

2)我嘗試使用Yarn客戶端從spring應用程序提交作業。 以下是我用於使用Yarn客戶端提交spark作業的代碼:

Configuration config = new Configuration();
System.setProperty("SPARK_YARN_MODE", "true");        
SparkConf conf = new SparkConf();
ClientArguments cArgs = new ClientArguments(sparkArgs, conf);
Client client = new Client(cArgs, config, conf);
client.run();

但是當我運行上面的代碼時,它只嘗試在localhost上連接。 我收到此錯誤:

5/08/05 14:06:10 INFO Client: Retrying connect to server: 0.0.0.0/0.0.0.0:8032. Already tried 0 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS) 15/08/05 14:06:12 INFO Client: Retrying connect to server: 0.0.0.0/0.0.0.0:8032. Already tried 1 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS)

所以我不認為它可以連接到遠程機器。

請建議,使用最新版本的spark,這是最好的方法。 后來我計划在亞馬遜EMR中部署整個應用程序。 所以方法也應該在那里工作。

提前致謝

Spark JobServer可能會提供幫助: https//github.com/spark-jobserver/spark-jobserver ,此項目接收RESTful Web請求並啟動spark作業。 結果以json響應的形式返回。

我也有類似的問題試圖運行連接到YARN集群的Spark應用程序 - 沒有集群配置它嘗試連接到本地計算機,就像集群的主節點一樣,顯然失敗了。

當我將core-site.xml和yarn-site.xml放入類路徑(典型的sbt或Maven項目結構中的src / main / resources)時,它對我有用 - 應用程序正確連接到集群。

當使用這些文件的spark-submit位置時,通常由HADOOP_CONF_DIR環境變量指定,但對於獨立應用程序,它沒有效果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM