Sparkには簡単なプログラムがあります。
/* SimpleApp.scala */
import org.Apache.spark.SparkContext
import org.Apache.spark.SparkContext._
import org.Apache.spark.SparkConf
object SimpleApp {
def main(args: Array[String]) {
val conf = new SparkConf().setMaster("spark://10.250.7.117:7077").setAppName("Simple Application").set("spark.cores.max","2")
val sc = new SparkContext(conf)
val ratingsFile = sc.textFile("hdfs://hostname:8020/user/hdfs/mydata/movieLens/ds_small/ratings.csv")
//first get the first 10 records
println("Getting the first 10 records: ")
ratingsFile.take(10)
//get the number of records in the movie ratings file
println("The number of records in the movie list are : ")
ratingsFile.count()
}
}
Spark-Shellからこのプログラムを実行しようとすると、つまり、ネームノード(Clouderaインストール)にログインし、spark-Shellでコマンドを順番に実行します。
val ratingsFile = sc.textFile("hdfs://hostname:8020/user/hdfs/mydata/movieLens/ds_small/ratings.csv")
println("Getting the first 10 records: ")
ratingsFile.take(10)
println("The number of records in the movie list are : ")
ratingsFile.count()
正しい結果が得られますが、Eclipseからプログラムを実行しようとすると、プログラムにリソースが割り当てられず、コンソールログに表示されるのは次のとおりです。
WARN TaskSchedulerImpl:初期ジョブはリソースを受け入れませんでした。クラスターUIをチェックして、ワーカーが登録され、十分なリソースがあることを確認します
また、Spark UIでは、これが表示されます:
また、このバージョンのsparkはClouderaとともにインストールされたため、ワーカーノードが表示されないことに注意してください。
この作業を行うにはどうすればよいですか?
編集:
HistoryServerを確認しましたが、これらのジョブはそこに表示されません(不完全なアプリケーションでも)
多くのspark=クラスターの構成とパフォーマンスの調整を行いました。これは、ワークロードを処理するためにクラスターを最初に準備/構成するときに表示される非常に一般的/通常のメッセージです。
これは、ジョブを起動するのに十分なリソースがないためです。ジョブは次のいずれかを要求しています:
クラスターの作業ノードコアを確認できます。アプリケーションはそれを超えることはできません。たとえば、2つの作業ノードがあります。作業ノードごとに4つのコアがあります。次に、2つのアプリケーションを実行します。そのため、すべてのアプリケーションに4つのコアを与えてジョブを実行できます。
コードで次のように設定できます。
SparkConf sparkConf = new SparkConf().setAppName("JianSheJieDuan")
.set("spark.cores.max", "4");
わたしにはできる。
最後に答えが何であるかを見つけました。
YARNクラスターにsparkプログラムをデプロイする場合、マスターURLは単なる糸です。
したがって、プログラムでは、sparkコンテキストは次のようになります。
val conf = new SparkConf().setAppName("SimpleApp")
次に、このEclipseプロジェクトをMavenを使用してビルドし、生成されたjarをクラスターにコピーしてから、次のコマンドを実行してクラスターにデプロイする必要があります。
spark-submit --master yarn --class "SimpleApp" Recommender_2-0.0.1-SNAPSHOT.jar
これは、Eclipseから直接実行すると機能しないことを意味します。
ここに投稿されたもの以外にも、この同じエラーメッセージの原因がいくつかあります。
spark-on-mesos
クラスターの場合、Java8以降 Java version on mesos slaves
]があることを確認してください。
spark standalone
については、workers
にJava8
(またはそれ以降)があることを確認してください。