2016-12-15 27 views
3

マスター・ノード上のJavaヒープがゆっくりと枯渇する問題が発生しています。以下は私が作成した簡単な例です。これは200回繰り返します。スパーク・ドライバ・ヒープ・メモリーの問題

16/12/15 17:55:46 INFO YarnSchedulerBackend$YarnDriverEndpoint: Launching task 97578 on executor id: 9 hostname: ip-xxx-xxx-xx-xx 
# 
# java.lang.OutOfMemoryError: Java heap space 
# -XX:OnOutOfMemoryError="kill -9 %p" 
# Executing /bin/sh -c "kill -9 20160"... 

コード::私はM4を使用してAWS EMR-5.1.0上で実行しているよ

import org.apache.spark.sql.functions._ 
import org.apache.spark._ 

object MemTest { 

case class X(colval: Long, colname: Long, ID: Long) 

def main(args: Array[String]) { 
    val conf = new SparkConf().setAppName("MemTest") 
    val spark = new SparkContext(conf) 

    val sc = org.apache.spark.sql.SQLContext.getOrCreate(spark) 
    import sc.implicits._; 

    for(a <- 1 to 200) 
    { 
     var df = spark.parallelize((1 to 5000000).map(x => X(x.toLong, x.toLong % 10, x.toLong/10))).toDF() 
     df = df.groupBy("ID").pivot("colname").agg(max("colval")) 
     df.count 
    } 

    spark.stop() 
    } 
} 

次のエラーで約1時間のメモリのうちマスターラン以下の設定で。 xlarge(4ノード+1マスター)。ここで

{ 
    "Classification": "spark-defaults", 
    "Properties": { 
    "spark.dynamicAllocation.enabled": "false", 
    "spark.executor.instances": "16", 
    "spark.executor.memory": "2560m", 
    "spark.driver.memory": "768m", 
    "spark.executor.cores": "1" 
    } 
}, 
{ 
    "Classification": "spark", 
    "Properties": { 
     "maximizeResourceAllocation": "false" 
    } 
}, 

私は

name := "Simple Project" 

version := "1.0" 

scalaVersion := "2.11.7" 

libraryDependencies ++= Seq(
    "org.apache.spark" %% "spark-core" % "2.0.2" % "provided", 
    "org.apache.spark" %% "spark-sql" % "2.0.2") 

を使用してSBTを指定してコンパイルしてから、私はjava.lang.Longscala.Tuple2が成長し続ける見るjmap -histoでメモリを見てみると

spark-submit --class MemTest target/scala-2.11/simple-project_2.11-1.0.jar 

使用してそれを実行して、私の火花の設定があります。

答えて

0

クラスタにインストールされているスパークのバージョンが2.0.2であることを確認してください。

クラスタに複数のSparkがインストールされている場合は、正確な(2.0.2)スパーク送信を呼び出していますか?

(私は残念ながらそうそれは私が答えとしてこれを掲示理由だコメントすることはできません)

+0

それが何EMR-5.1.0ですので、それはスパーク2.0.1です。 emr-5.2.0を試してみます。 –

+0

スパーク2.0.2との違いはありません –