복붙노트

[HADOOP] spark - java 힙 공간 문제 - ExecutorLostFailure - 상태 143으로 종료 된 컨테이너

HADOOP

spark - java 힙 공간 문제 - ExecutorLostFailure - 상태 143으로 종료 된 컨테이너

나는 길이가 100k 바이트 이상이고 너비를 기준으로 열을 나누는 문자열을 읽습니다. 나는 위의 문자열 너비를 기반으로 분할 16K 열에 가깝습니다.

하지만 마루에 쓰는 동안 아래 코드를 사용하고 있습니다.

rdd1=spark.sparkContext.textfile("file1")

{ var now=0
 { val collector= new array[String] (ColLenghth.length) 
 val recordlength=line.length
for (k<- 0 to colLength.length -1)
 { collector(k) = line.substring(now,now+colLength(k))
 now =now+colLength(k)
 }
 collector.toSeq}


StringArray=rdd1.map(SubstrSting(_,ColLengthSeq))
#here ColLengthSeq is read from another schema file which is column lengths



StringArray.toDF("StringCol").select(0 until ColCount).map(j=>$"StringCol"(j) as column_seq(j):_*).write.mode("overwrite").parquet("c"\home\")

여기서 ColCount = 16000이고 column_seq는 16K 열 이름을 가진 seq (문자열)입니다.

저는 16GB 집행자 메모리와 20 명의 집행자와 함께 원사에서 이걸 실행하고 있습니다. 파일 크기는 4GB입니다.

나는 오류를 받고있다.

Lost task 113.0 in stage 0.0 (TID 461, gsta32512.foo.com): ExecutorLostFailure (executor 28 exited caused by one of the running tasks) Reason: 
Container marked as failed: 
container_e05_1472185459203_255575_01_000183 on host: gsta32512.foo.com. Exit status: 143. Diagnostics: 
Container killed on request. Exit code is 143
Container exited with a non-zero exit code 143
Killed by external signal

UI의 상태를 확인할 때

#java.lang.outofmemoryerror java heap space
#java.lang.outofmemoryerror gc overhead limit exceeded

위에서 언급 한 코드의 성능 튜닝 및 스파크 제출 매개 변수 최적화 가이드

해결법

    from https://stackoverflow.com/questions/51118204/spark-java-heap-space-issue-executorlostfailure-container-exited-with-stat by cc-by-sa and MIT license