[HADOOP] 스파크 작업 오류 GC 오버 헤드 한도를 초과 함 [중복]
HADOOP스파크 작업 오류 GC 오버 헤드 한도를 초과 함 [중복]
스파크 작업을 실행 중이며 spark-defaults.sh에서 다음 구성을 설정하고 있습니다. 이름 노드에서 다음과 같이 변경되었습니다. 하나의 데이터 노드가 있습니다. 그리고 2GB의 데이터를 작업 중입니다.
spark.master spark://master:7077
spark.executor.memory 5g
spark.eventLog.enabled true
spark.eventLog.dir hdfs://namenode:8021/directory
spark.serializer org.apache.spark.serializer.KryoSerializer
spark.driver.memory 5g
spark.executor.extraJavaOptions -XX:+PrintGCDetails -Dkey=value -Dnumbers="one two three"
그러나 GC 한도를 초과했다는 오류가 발생합니다.
내가 작업중 인 코드는 다음과 같습니다.
import os
import sys
import unicodedata
from operator import add
try:
from pyspark import SparkConf
from pyspark import SparkContext
except ImportError as e:
print ("Error importing Spark Modules", e)
sys.exit(1)
# delimeter function
def findDelimiter(text):
sD = text[1]
eD = text[2]
return (eD, sD)
def tokenize(text):
sD = findDelimiter(text)[1]
eD = findDelimiter(text)[0]
arrText = text.split(sD)
text = ""
seg = arrText[0].split(eD)
arrText=""
senderID = seg[6].strip()
yield (senderID, 1)
conf = SparkConf()
sc = SparkContext(conf=conf)
textfile = sc.textFile("hdfs://my_IP:9000/data/*/*.txt")
rdd = textfile.flatMap(tokenize)
rdd = rdd.reduceByKey(lambda a,b: a+b)
rdd.coalesce(1).saveAsTextFile("hdfs://my_IP:9000/data/total_result503")
나는 대신 groupByKey를 시도했다. 그러나 나는 같은 오류가 발생합니다. 그러나 reduceByKey 또는 groupByKey를 제거하려고하면 출력이 표시됩니다. 어떤 사람 이이 오류를 도울 수 있습니까?
hadoop에서 GC의 크기도 늘려야합니다. 앞에서 말했듯이 driver.memory를 5gb로 설정 했으므로 이름 노드에서 수행했습니다. 데이터 노드에서도 그렇게해야합니까?
해결법
-
==============================
1.spark-defaults.sh에 아래 설정을 추가하십시오.
spark-defaults.sh에 아래 설정을 추가하십시오.
spark.driver.extraJavaOptions -XX : + UseG1GC
spark.executor.extraJavaOptions -XX : + UseG1GC
jvm 가비지 수집 조정이 까다로울 수 있지만 "G1GC"는 꽤 잘 작동합니다. 노력할만한 가치가 있습니다 !!
-
==============================
2.당신의 구성과 함께 작동했던 코드. 앞서 제안했듯이 G1GC를 사용해보십시오. 또한 저장 메모리 비율을 줄이십시오. 기본적으로 60 %입니다. 40 % 이하로 줄이십시오. spark.storage.memoryFraction 0.4를 추가하여 설정할 수 있습니다
당신의 구성과 함께 작동했던 코드. 앞서 제안했듯이 G1GC를 사용해보십시오. 또한 저장 메모리 비율을 줄이십시오. 기본적으로 60 %입니다. 40 % 이하로 줄이십시오. spark.storage.memoryFraction 0.4를 추가하여 설정할 수 있습니다
-
==============================
3.나는 문제를 해결할 수 있었다. 마스터 노드의 루트 사용자에서 하둡을 실행 중이었습니다. 그러나 데이터 노드의 다른 사용자에서 hadoop을 구성했습니다. 이제 데이터 노드의 루트 사용자에서 구성하고 실행기 및 드라이버 메모리를 늘 렸습니다.
나는 문제를 해결할 수 있었다. 마스터 노드의 루트 사용자에서 하둡을 실행 중이었습니다. 그러나 데이터 노드의 다른 사용자에서 hadoop을 구성했습니다. 이제 데이터 노드의 루트 사용자에서 구성하고 실행기 및 드라이버 메모리를 늘 렸습니다.
from https://stackoverflow.com/questions/37958522/spark-job-error-gc-overhead-limit-exceeded by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] StreamExecutionEnvironment를 사용하여 S3 싱크를 사용하여 S3에 쓸 수 없음-Apache Flink 1.1.4 (0) | 2019.09.16 |
---|---|
[HADOOP] HRegionServer는“마스터에게 가동 중임을 알리는 오류”를 표시합니다. 소켓 예외 표시 : 잘못된 인수 (0) | 2019.09.16 |
[HADOOP] Hadoop 파일의 분산 캐싱에서 예외를 찾을 수 없음 (0) | 2019.09.16 |
[HADOOP] 프라이빗 클라우드에서 Cloudera Manager를 사용하는 HDFS (0) | 2019.09.16 |
[HADOOP] pyhs2를 통해 Python을 통해 Hadoop Hive에 연결하는 방법은 무엇입니까? (0) | 2019.09.16 |