Amazon EMR 노트북에서 실행되지 않는 Apache Spark 애플리케이션 문제를 해결하려고 합니다.
간략한 설명
Amazon EMR 노트북에서 실행되는 Spark 애플리케이션은 다음 오류로 인해 시작되지 않을 수 있습니다.
"The code failed because of a fatal error: Session 4 did not start up in 60 seconds."
해결 방법
클러스터의 리소스 확인
Spark의 클러스터에 Jupyter가 Spark 컨텍스트를 만들 수 있는 사용 가능한 리소스가 충분한지 확인하십시오. 사용 가능한 리소스를 확인하려면 Amazon CloudWatch 지표 또는 리소스 관리자를 사용하십시오.
Sparkmagic 라이브러리가 올바르게 구성되어 있는지 확인
Jupyter 관리자에게 문의하여 Sparkmagic 라이브러리가 올바르게 구성되었는지 확인하십시오.
노트북 커널 다시 시작
다음 단계를 완료하십시오.
- Amazon EMR 콘솔을 엽니다.
- 탐색 모음에서 **Workspaces(노트북)**를 선택합니다.
- Workspaces(노트북) 목록에서 작업 영역을 선택한 다음, 빠른 시작을 선택합니다. 또는 목록에서 작업 영역을 선택하고 연결을 선택한 다음, JupyterLab에서 시작을 선택하거나 Jupyter에서 시작을 선택합니다.
- 커널을 선택한 다음, 커널 다시 시작을 선택합니다.
JupyterLab의 Spark 세션 제한 기간 늘리기
다음 단계를 완료하십시오.
-
Amazon EMR 콘솔을 엽니다.
-
탐색 모음에서 **Workspaces(노트북)**를 선택합니다.
-
Workspaces(노트북) 목록에서 작업 영역을 선택한 다음, 빠른 시작을 선택합니다. JupyterLab 편집기에 새 브라우저 탭이 열립니다.
-
노트북 터미널을 엽니다.
-
다음 명령을 실행하여 config.json 파일을 엽니다.
vi /home/notebook/.sparkmagic/config.json
참고: Amazon EMR 기본 인스턴스에 JupyterHub 애플리케이션을 설치한 경우 다음 명령을 실행합니다.
vi /etc/jupyter/conf/config.json
-
config.json 파일에 livy_session_startup_timeout_seconds: ### 옵션을 추가하거나 업데이트합니다.
-
모든 커널을 다시 시작합니다.
참고: Amazon EMR 기본 인스턴스에 JupyterHub 애플리케이션을 설치한 경우 JupyterHub 컨테이너를 다시 시작합니다.
Spark 드라이버 메모리 조정
Jupyter 노트북 애플리케이션이 리소스 할당을 제어하는 데 사용하는 Spark 드라이버 메모리를 수정합니다. 자세한 내용은 Amazon EMR Studio 작업 영역에서 Spark 구성을 수정하려면 어떻게 해야 합니까?를 참조하십시오.
Livy 서비스가 정상인지 확인
프라이머리 노드 인스턴스에서 실행되는 Livy 서버의 상태 확인
다음 단계를 완료하십시오.
-
livy-server의 상태를 확인하려면 다음 명령을 실행합니다.
sudo systemctl status livy-server
-
서버가 다운된 상태인 경우 다음 명령을 실행하여 livy-server를 다시 시작합니다.
sudo systemctl start livy-server
Livy 서버 메모리 늘리기
기본적으로 노트북 클라이언트는 90초 동안 Apache Livy 서버에 연결을 시도합니다. Livy 서버가 90초 이내에 응답하지 않으면 클라이언트가 시간 초과를 생성합니다. Livy 서버가 응답하지 않는 가장 일반적인 이유는 리소스 부족입니다. 이 문제를 해결하려면 Livy 서버의 메모리를 늘리십시오.
다음 단계를 완료하십시오.
-
SSH를 사용하여 프라이머리 노드 인스턴스에 연결합니다.
-
/etc/livy/conf/livy-env.sh 파일에 다음 속성을 추가합니다.
export LIVY_SERVER_JAVA_OPTS="-Xmx8g" (option to your value)
-
Livy 서버를 다시 시작합니다.
sudo systemctl stop livy-server; sudo systemctl start livy-server
Livy에서 클라이언트 모드 대신 클러스터 모드 사용
클라이언트 모드에서 노트북에 Spark 애플리케이션을 제출하면 Spark 드라이버가 Livy 서버의 하위 프로세스로 실행됩니다. 하위 프로세스를 실행하는 경우 프라이머리 노드의 리소스가 부족할 수 있습니다. 리소스 부족으로 인한 Livy 장애를 방지하려면 배포 모드를 클러스터 모드로 변경하십시오. 클러스터 모드에서 Spark 애플리케이션을 실행하면 드라이버는 프라이머리 노드 대신 코어 및 태스크 노드에서 실행됩니다.
다음 단계를 완료하십시오.
-
SSH를 사용하여 프라이머리 노드에 연결합니다.
-
/etc/livy/conf/livy.conf 파일에 다음 파라미터를 추가합니다.
livy.spark.deploy-mode cluster
-
Livy 서버를 다시 시작합니다.
sudo systemctl stop livy-server; sudo systemctl start livy-server