2016-09-15 6 views
0

私はSparkを初めて使用しており、私のアプリから「クイックスタート」ジョブを提出しようとしています。私は自分のlocalhost上でマスターとスレーブを起動してスタンドアロンモードをエミュレートしようとします。スパークスタンドアローンモード:プログラムによるジョブの送信

object SimpleApp { 

    def main(args: Array[String]): Unit = { 

    val logFile = "/opt/spark-2.0.0-bin-hadoop2.7/README.md" 
    val conf = new SparkConf().setAppName("SimpleApp") 
    conf.setMaster("spark://10.49.30.77:7077") 
    val sc = new SparkContext(conf) 

    val logData = sc.textFile(logFile,2).cache(); 
    val numAs = logData.filter(line => line.contains("a")).count() 
    val numBs = logData.filter(line => line.contains("b")).count() 
    println("Lines with a: %s , lines with b: %s".format(numAs,numBs)) 

    } 

} 

IDE(IntelliJ)でSparkアプリケーションを実行します。

ログ(workernodeのログ)を見ると、sparkがジョブクラスを見つけることができないようです。

16/09/15 17:50:58 INFO MemoryStore: Block broadcast_1_piece0 stored as bytes in memory (estimated size 1912.0 B, free 366.3 MB) 
16/09/15 17:50:58 INFO TorrentBroadcast: Reading broadcast variable 1 took 137 ms 
16/09/15 17:50:58 INFO MemoryStore: Block broadcast_1 stored as values in memory (estimated size 3.1 KB, free 366.3 MB) 
16/09/15 17:50:58 ERROR Executor: Exception in task 0.0 in stage 0.0 (TID 0) 
java.lang.ClassNotFoundException: SimpleApp$$anonfun$1 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:270) 

1.これは、ジョブリソース(クラス)がスレーブノードに送信されないことを意味しますか?

2.スタンドアロンモードの場合、「spark-submit」CLIを使用してジョブを送信する必要がありますか?もしそうなら、アプリからスパークジョブを提出する方法(ウェブアプリケーションなど)

3.関連性のない質問:ログにDriverProgramがサーバー(ポート4040)を開始しています。 DriveProgramはクライアントで、なぜこのサービスを開始しますか?

16/09/15 17:50:52 INFO SparkEnv: Registering OutputCommitCoordinator 
16/09/15 17:50:53 INFO Utils: Successfully started service 'SparkUI' on port 4040. 
16/09/15 17:50:53 INFO SparkUI: Bound SparkUI to 0.0.0.0, and started at http://10.49.30.77:4040 

答えて

2

あなたはsetJars方法を使用してSparkConf内のリソースのパスを設定するか、またはCLIから実行したとき--jarsオプション付き​​コマンド内のリソースを提供しなければならないのいずれか。

関連する問題