に失敗したクラスタ (27コア/ 240Gラムの合計)シンプルスパーク仕事は、私は、スタンドアロンのスパーク(2.1.1)を作成したため、GCオーバーヘッドの制限
コード私はX これに1からすべての数字を合計サンプルスパークの仕事を持っている:
package com.example
import org.apache.spark.sql.SparkSession
object ExampleMain {
def main(args: Array[String]): Unit = {
val spark = SparkSession.builder
.master("spark://192.168.1.2:7077")
.config("spark.driver.maxResultSize" ,"3g")
.appName("ExampleApp")
.getOrCreate()
val sc = spark.SparkContext
val rdd = sc.parallelize(Lisst.range(1, 1000))
val sum = rdd.reduce((a,b) => a+b)
println(sum)
done
}
def done = {
println("\n\n")
println("-------- DONE --------")
}
}
私は はそう私はcranckedてきた数秒後に結果を得る上記のコードを実行しています1から1B(1,000,000,000)までのすべての数値を合計するコードと、GCオーバーヘッドの上限に達した回数が
に達しました私は、十分なメモリがない場合、私は自分のクラスタ構成で再生しようとしたが、それは助けにならなかった、HDDにメモリをこぼすべきだと読んだ。
Driver memory = 6G
Number of workers = 24
Cores per worker = 1
Memory per worker = 10
私は開発者ではなく、Scalaについて知識がありませんが、GCの問題なしでこのコードを実行するソリューションを探したいと考えています。私はまた私のスパーク/ confに私の火花-submitコマンド
/opt/spark-2.1.1/bin/spark-submit \
--class "com.example.ExampleMain" \
--master spark://192.168.1.2:6066 \
--deploy-mode cluster \
/mnt/spark-share/example_2.11-1.0.jar
を追加している@philantrovert要求パー
は次のとおりです。
- 奴隷ファイル私のノードの3つのIPアドレスを含みます(マスター含む)
- 火花デフォルトは含む:
- spark.masterスパーク://192.168.1.2:7 077
- spark.driver.memory 10グラム含むspark-env.sh
- :すべてのノード
- SPARK_EXECUTOR_MEMORY = 10G
- SPARK_DRIVER_MEMORY = 10G
- うち
- SPARK_LOCAL_DIRS =共有フォルダSPARK_WORKER_CORES = 1
- SPARK_WORKER_MEMORY = 10G
- SPARK_WORKER_INSTANCESすべてのノード間= 8
- SPARK_WORKER_DIR =共有フォルダ
- SPARK_WORKER_OPTS = " - Dspark.worker.cleanup.enabled =真"
おかげ
'spark-submit'コマンドを質問に追加できますか? – philantrovert
@philantrovertがspark-submit + my sparkの設定を追加しました –
プログラムの代わりに '--conf" spark.driver.maxResultSize = 3G "'をspark-submitに追加しようとしました。私はSpark Standaloneクラスタでは働いていませんが、プログラムで 'conf.set(..)'を実行する前にドライバが起動すると思います。私は間違っているかもしれません。 – philantrovert