EMR 노트북에서 Spark 애플리케이션을 실행할 수 없는 이유는 무엇입니까?

3분 분량
0

Amazon EMR 노트북에서 Apache Spark 애플리케이션을 실행할 수 없습니다.

간략한 설명

EMR 노트북에서 실행되는 Spark 애플리케이션이 다음과 같은 예외로 시작되지 않을 수 있습니다.

The code failed because of a fatal error:
Session 4 did not start up in 60 seconds.

해결 방법

다음은 EMR 노트북에서 Spark 애플리케이션을 실행하기 위한 일반적인 문제 해결 단계입니다.

클러스터의 리소스 확인

Spark의 클러스터에 Jupyter가 Spark 컨텍스트를 생성할 수 있도록 사용 가능한 리소스가 충분한지 확인하십시오. Amazon CloudWatch 지표 또는 리소스 관리자를 사용하여 사용 가능한 리소스를 확인할 수 있습니다.

Sparkmagic 라이브러리가 올바르게 구성되어 있는지 확인

Jupyter 관리자에게 문의하여 Sparkmagic 라이브러리가 올바르게 구성되었는지 확인하십시오.

노트북 커널 재시작

1.    EMR 콘솔을을 연 다음 노트북을 선택합니다.

2.    노트북 목록에서 노트북을 선택한 다음 JupyterLab에서 열기 또는 Jupyter에서 열기를 선택합니다. JupyterLab 또는 Jupyter Notebook 편집기에 새 브라우저 탭이 열립니다.

3.    커널 메뉴에서 커널 재시작을 선택합니다.

JupyterLab의 스파크 세션 타임아웃 기간 늘리기

Spark 세션 타임아웃 기간을 늘리려면 다음과 같이 하십시오.

1.    EMR 콘솔을 열고 노트북을 선택합니다.

2.    노트북 목록에서 노트북을 선택합니다.

3.    EMR 노트북의 Jupyter 웹 사용자 인터페이스에 액세스할 수 있습니다.

4.    EMR 노트북 터미널을 엽니다.

5.    다음 명령을 사용하여 config.json 파일을 엽니다.

vi /home/notebook/.sparkmagic/config.json

5.    livy_session_startup_timeout_seconds: xxx 옵션을 config.json 파일에 추가하거나 업데이트하십시오.

6.    모든 커널을 다시 시작합니다.

참고: JupyterHub 애플리케이션이 EMR 기본 인스턴스에 설치된 경우 다음을 수행하여 Spark 세션 제한 시간을 늘리십시오.

1.    다음 명령을 실행합니다.

vi /etc/jupyter/conf/config.json

2.    livy_session_startup_timeout_seconds:60 옵션을 원하는 값으로 업데이트한 다음 JupyterHub 컨테이너를 다시 시작합니다.

Tune Spark 드라이버 메모리

Jupyter Notebook 애플리케이션에서 사용하는 Spark 드라이버 메모리를 조정하여 리소스 할당을 제어합니다. 자세한 내용은 Amazon EMR 노트북에서 Spark 구성을 수정하려면 어떻게 해야 합니까?를 참고하십시오.

Apache Livy 서비스가 정상인지 확인하십시오.

프라이머리 노드 인스턴스에서 실행 중인 Livy 서버의 상태 확인

1.    다음 명령을 사용하여 livy-server의 상태를 확인합니다.

sudo systemctl status livy-server

2.    상태가 다운된 경우 다음 명령을 사용하여 livy-server를 다시 시작합니다.

sudo systemctl start livy-server

Livy 서버 메모리 늘리기

기본적으로 노트북 클라이언트는 90초 동안 Livy 서버에 연결을 시도합니다. Livy 서버가 90초 이내에 응답하지 않으면 클라이언트가 타임아웃을 생성합니다. Livy 서버가 응답하지 않는 가장 일반적인 이유는 리소스가 부족하기 때문입니다. 이 문제를 해결하려면 Livy 서버의 메모리를 늘리십시오.

1.    SSH를 사용하여 프라이머리 노드에 연결합니다.

2.    /etc/livy/conf/livy-env.sh 파일에 다음 속성을 추가합니다.

export LIVY_SERVER_JAVA_OPTS="-Xmx8g" (option to your value)

3.    변경 사항을 적용하려면 Livy 서버를 다시 시작합니다.

sudo systemctl stop livy-server
sudo systemctl start livy-server

Livy에서 클라이언트 모드 대신 클러스터 모드 사용

Spark 애플리케이션은 노트북에 클라이언트 모드로 제출되며 Spark 드라이버는 Livy 서버의 하위 프로세스로 실행됩니다. 하위 프로세스로 실행하면 프라이머리 노드에 리소스가 부족할 수 있습니다. 리소스 부족으로 인해 Livy가 실패하는 것을 방지하려면 배포 모드를 클러스터 모드로 변경합니다. 클러스터 모드에서 실행되는 드라이버는 프라이머리 노드가 아닌 코어 및 태스크 노드의 애플리케이션 프라이머리 노드에서 실행됩니다.

클러스터 모드를 사용하려면 다음과 같이 하십시오.

1.    SSH를 사용하여 프라이머리 노드에 연결합니다.

2.    /etc/livy/conf/livy.conf 파일에 다음 매개 변수를 추가합니다.

livy.spark.deploy-mode  cluster

3.    변경 사항을 적용하려면 Livy 서버를 다시 시작합니다.

sudo systemctl stop livy-server
sudo systemctl start livy-server

AWS 공식
AWS 공식업데이트됨 일 년 전