새소식

반응형
GCP/Dataproc

GCP - dataproc 메모리 이슈

  • -
반응형

안녕하세요. 

GCP의 dataproc을 처음으로 사용하면서 겪은 이슈에 대해서 글 올려 봅니다. 혼자서 바보같이 3일 동안 찾아봤으나 완전히 방향을 잘못 잡아서 혹시 저와 같은 이슈가 있는 분들이 계실 것 같아서 글 올립니다. 우선 dataproc을 국내에서는 잘 사용하지 않는 듯 하여 한글 자료는 거의 없다고 보는게 맞을 듯 합니다. 

다시 본론으로 들어가서 오류의 내용은 다음과 같습니다. 

 

Bit Server VM warning: INFO: os::commit_memory(0x00000000bac00000, 155713536, 0) failed; error='Cannot allocate memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 155713536 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /tmp/20200113_cluster_test_03/hs_err_pid6435.log

 

결론적으로 보면 메모리 이슈 입니다. 메모리가 부족 한거 같은데 전혀 그렇지 않습니다. 장비의 메모리가 슬레이브까지 24GB입니다. 그런데.. 어떻게 저걸 못 받을까요? 그래서 이런 저런 방법을 엄청 찾아봤습니다. 

처음에 옵션을 잘못 넣었다고 생각해서 spark configuration을 변경 해보려고 했으나 잘 몰라서 실패하였고 파일이 너무 커서 그런가 했는데 저기 보시면 파일은 4개인데, 이 파일의 각 용량이 50~100mb밖에 안됩니다. 그리고 메모리의 양도 엄청 작습니다. 그래서 이게 뭘까 하던 와중에 지인의 도움으로 해결 하였습니다.

 

1
2
3
4
5
6
7
8
9
from pyspark import SparkContext,SparkConf
 
logFile = "file path"
 
sc = SparkContext("local")
logData = sc.textFile(logFile).cache()
 
numAs = logData.filter(lambda s: 'GET_MARKERS' in s).count()
print(numAs)
cs

 

위의 내용에서 sparkContext에서 "local"을 지정하면 standalone으로 처리 합니다. 즉 master노드에서 처리 하려고 하고 아래의 work 노드는 가만히 놀고 있습니다. 그걸 어떻게 알았을까요?

 

 

위의 그림은 Stackdriver에서 확인 한 모니터링 수치 입니다. 보시면 중간 부분에 GCP와 Sent Bytes가 혼자 튀는 그래프가 있는데 저게 Master노드 입니다. 그리고 YARN Memory를 보면 그전까지 allocated 메모리가 계속 바닥을 붙어 있었는데, 제가 코드를 변경하고 실행 한 순간 순식간에 할당 합니다. 결과적으로 계속 standalone으로 처리하고 있었으니 안되던 것 입니다. 

결론적으로 sparkcontext에서 "local"을 빼고 실행 할 경우 정상적으로 분산 처리를 하였습니다. 또한 저기 위의 2번째 분산 처리 했던 파일의 개수의 경우 50~100MB 파일 96개 였습니다. 그런데도 CPU , sent bytes가 균일하게 분배하여 수치가 안정적입니다. 

그리고 새롭게 실행 했을때 메시지 또한 달라지는 것을 볼 수 있습니다.

 


20/01/13 06:22:57 INFO org.apache.hadoop.yarn.client.RMProxy: Connecting to ResourceManager at jeff-dataproc-m/10.142.15.239:8032
20/01/13 06:22:58 INFO org.apache.hadoop.yarn.client.AHSProxy: Connecting to Application History server at jeff-dataproc-m/10.142.15.239:10200
20/01/13 06:23:02 INFO org.apache.hadoop.yarn.client.api.impl.YarnClientImpl: Submitted application application_1578894566493_0001

 

메모리 이슈가 발생하였다면 다른 문제를 보기 전에 다음과 같이 한번 해보시길 권장 드립니다.

 

반응형

'GCP > Dataproc' 카테고리의 다른 글

Dataproc 사용하기  (0) 2020.01.13
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.