EMR 클러스터에 Python 라이브러리를 설치할 때 발생하는 문제를 해결하려면 어떻게 해야 하나요?

3분 분량
0

Amazon EMR 클러스터에 Python 라이브러리를 설치할 때 발생하는 문제를 해결하고 싶습니다.

간략한 설명

EMR 클러스터에 Python 라이브러리를 설치하려고 하는데 다음 문제 중 하나가 발생합니다.

  • EMR 클러스터에 Python 라이브러리를 설치할 수 없습니다.
  • Amazon EMR에서 Python 패키지를 사용할 수 없습니다.
  • 설치된 Python 패키지를 새로 프로비저닝된 코어 또는 태스크 노드에서 사용할 수 없습니다.

부트스트랩 작업을 사용하거나 수동으로 각 노드에 로그인하여 EMR 클러스터에 Python 라이브러리를 설치할 수 있습니다. 부트스트랩 작업을 통해 Python 라이브러리를 설치하여 클러스터 프로비저닝 및 클러스터 크기 조정 중에 라이브러리가 모든 노드에 자동으로 설치되도록 합니다.

해결 방법

EMR 클러스터에 Python 라이브러리를 설치할 수 없거나 Amazon EMR에서 Python 패키지를 사용할 수 없음

패키지 누락 오류가 발생한 노드에 로그인합니다. 그런 다음, 다음 명령을 사용하여 Python 라이브러리가 설치되었는지 확인합니다.

$ sudo pip3 freeze | grep pandas
pandas==1.3.5
$ sudo pip3 freeze | grep numpy
numpy==1.21.6

또는 Python 쉘에서 Python 라이브러리가 설치되었는지 확인합니다.

$ python
Python 3.7.15 (default, Oct 31 2022, 22:44:31)
[GCC 7.3.1 20180712 (Red Hat 7.3.1-15)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pandas as pd
>>> import numpy as np

위 명령에서 **ModuleNotFoundError: No module named 'python_library'**와 같은 오류가 반환되면 라이브러리가 설치되지 않은 것입니다.

다음 예제와 같이 pip 명령을 사용하여 EMR 클러스터에 Python 라이브러리를 설치할 수 있습니다.

sudo pip3 install pandas scipy sklearn
sudo pip3 install file://requirements.txt

위 예제에서 requirements.txt는 설치하려는 Python 패키지 및 라이브러리의 목록입니다.

자세한 내용은 다음을 참조하세요.

추가 사용자 지정 라이브러리를 설치하려면 pip install 명령을 사용합니다.

Python은 기본적으로 Amazon EMR에 설치되어 있습니다. 그러나 모든 Python 라이브러리가 설치되어 있는 것은 아닙니다. 자세한 내용은 커널과 라이브러리 설치 및 사용을 참조하세요.

클러스터에 설치된 Python 라이브러리의 목록을 보려면 sudo pip3 freeze 명령을 사용하세요. 다음은 sudo pip3 freeze 명령 및 예제 출력의 예입니다.

$ sudo pip3 freeze
aws-cfn-bootstrap==2.0 
beautifulsoup4==4.9.3
boto==2.49.0 
click==8.1.3 
docutils==0.14 
jmespath==1.0.1 
joblib==1.2.0 l
ockfile==0.11.0 
lxml==4.9.1 
mysqlclient==1.4.2 
nltk==3.7 
nose==1.3.4 
numpy==1.20.0 
py-dateutil==2.2 
pystache==0.5.4 
python-daemon==2.2.3 
python37-sagemaker-pyspark==1.4.2 
pytz==2022.6
PyYAML==5.4.1 
regex==2021.11.10 
simplejson==3.2.0 
six==1.13.0 
tqdm==4.64.1 
windmill==1.6

Python 패키지를 클러스터 크기 조정 도중 새로 프로비저닝된 코어 또는 태스크 노드에서 사용할 수 없음

개별 노드에 수동으로 설치된 Python 패키지는 클러스터 크기 조정 도중 새로 프로비저닝된 코어 또는 태스크 노드에서 사용하지 못할 수 있습니다.

새로 프로비저닝된 노드에 패키지가 존재하도록 하려면 라이브러리를 수동으로 설치하는 대신 부트스트랩 작업을 사용하여 라이브러리를 설치하세요.

부트스트랩 스크립트를 사용하여 설치했는데도 원하는 패키지를 사용할 수 없는 경우가 있을 수 있습니다. 이러한 경우에는 부트스트랩 스크립트 로그를 확인하여 무엇이 잘못되었는지 확인하세요. 부트스트랩 스크립트 로그를 확인하려면 다음을 수행합니다.

새 인스턴스가 실행 중인 경우:

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

2.    다음 위치의 부트스트랩 로그에서 오류를 확인합니다.

  • /var/log/bootstrap-actions/N/stderr
  • /var/log/bootstrap-actions/N/stdout

위 경로에서 N은 부트스트랩 스크립트 번호(예: 1, 2, 3 등)를 나타냅니다.

새 인스턴스가 프로비저닝에 실패한 경우:

부트스트랩 로그는 Amazon EMR 로깅을 위해 구성한 Amazon Simple Storage Service(S3) 버킷에 캡처됩니다. 경로는 다음과 같습니다.

  • s3://DOC-EXAMPLE-LOG-BUCKET/cluster-id/node/instance-id/bootstrap-actions/N/stdout
  • s3://DOC-EXAMPLE-LOG-BUCKET/cluster-id/node/instance-id/bootstrap-actions/N/stderr

위 경로에서 N은 부트스트랩 스크립트 번호(예: 1, 2, 3 등)를 나타냅니다.


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