본문 바로가기

개발이야기/AWS

AWS EMR사용시 사용자 지정 파이썬 라이브러리 설치 및 pyspark 사용

AWS EMR은 하둡관련 패키지를 AWS를 통해 설치하고 프로비져닝하는 도구입니다. 이 도구를 활용하면 매우 빠르게 hadoop, spark 등의 빅데이터 클러스터를 구축할 수 있는데요. 오늘은 이렇게 만든 EMR 클러스터에서 3rd party python library사용을 위한 설치 스크립트를 적용해보겠습니다.

저같은 경우는 pyspark를 자주 사용하는데요. pyspark사용할 경우 추가 pip3라이브러리를 사용해야할 때가 있습니다. pip3 라이브러리를 pyspark로 실행할 경우 스파크가 배포되는 모든 인스턴스에 해당 라이브러리가 설치되어 있어야합니다.

EMR에는 bootstrap action이라고 하는 인스턴스 생성할때 실행할 수 있는 스크립트를 지정할 수 있습니다. 여기에 스크립트를 추가하여 인스턴스 생성시 pip3로 python 암호화 라이브러리를 설치하겠습니다.

 

Create cluster를 눌러 클러스터 생성을 시작합니다.
상단에 Go to advanced option을 누릅니다.
spark를 사용하기위해 hadoop과 spark패키지를 선택합니다.
하드웨어 설정은 사용자가 필요한대로 정의합니다.
아래부분에 보면 Bootstrap Actions가 있습니다.

Bootstrap actions are scripts that are executed during setup before Hadoop starts on every cluster node. You can use them to install additional software and customize your applications.

사용자정의 액션으로 추가합니다.

사용자 정의 액션은 쉘스크립트로 추가할 수있는데요. 스크립트는 s3에 저장된 파일을 기준으로 설정할 수 있스빈다. 미리 스크립트를 생성하여 s3경로로 지정하면됩니다.

#!/bin/bash -xe
sudo pip3 install pycryptodome

저같은 경우엔 암호화를 위해 pycryptodome을 사용하였습니다.

bootstrap action이 추가됨
EMR 클러스터생성

이제 생성 준비가 완료되었습니다. 클러스터 인스턴스가 새로 만들어질때 마다 위 스크립트가 실행되면서 파이썬 라이브러리를 설치합니다. 설치가 완료되면 각 서버에 라이브러리가 설치된 것을 확인할 수 있습니다.

 

EMR이 이미 만들어진 상태에서 설치하는 방법은 아래 링크를 참고해주세요.

https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-jupyterhub-install-kernels-libs.html#emr-jupyterhub-install-libs

 

Installing Additional Kernels and Libraries - Amazon EMR

After you install libraries on the master node from within Jupyter, you can install libraries on running core nodes in various ways. The following example shows a Python program written to run on a local machine. When you run the Python program locally, it

docs.aws.amazon.com