2016-01-27 64 views
4

我已經可以從Eclipse IDE提交local Spark作業(用Scala編寫)。但是,我想修改我的Spark上下文(在我的應用程序中),這樣當我'運行'該應用程序(Eclipse內部)時,作業將作爲資源管理器使用Yarn發送到遠程羣集。從Eclipse和Spark上提交Spark應用程序作爲紗線作業上下文

使用​​,我可以成功地將作業提交到集羣: spark-submit --class <main class> --master yarn-cluster <jar>

我想實現在IDE中相同的結果。 我SBT配置(應用程序根目錄)看起來像: libraryDependencies += "org.apache.spark" %% "spark-core" % "1.5.1" libraryDependencies += "org.apache.spark" %% "spark-yarn" % "1.5.1" % "provided" 內我的應用程序: val conf = new SparkConf().setAppName("xxx").setMaster("yarn-cluster") 不過,我收到以下錯誤:

Detected yarn-cluster mode, but isn't running on a cluster. Deployment to YARN is not supported directly by SparkContext. Please use spark-submit.

回答

1

1)根據研究,我已經進行了你不能在從Eclipse遠程提交時,使用yarn-cluster作爲代碼的主數據,請改爲使用spark-client

new SparkConf().setAppName("test-app").setMaster("yarn-client"); 

入住這Cloudera資源,他們是在什麼可能是約束阻止您運行在集羣模式下,「互動」應用切碎一些輕。

2)您可能會遇到資源不足,無法正確複製到羣集的問題。是什麼在我的情況下,被包括在該項目的類路徑中的以下文件解決了這個問題(沒有任何裝飾性,現在我只是複製他們到項目的src/java目錄):

  • 核心現場。 XML
  • HDFS-site.xml中
  • 紗的site.xml

確保特別是核心的site.xml在classpath中,因爲沒有我看過提到的教程。而你會遇到麻煩,因爲沒有fs.defaultFS配置目前,Spark會考慮t目標目錄與源(本地文件系統)相同,而不是遠程HDFS文件系統。

相關問題