본문 바로가기

study

EMR CLI 셋팅

AWS EMR (Elastic Map-Reduce) 을 써보려고 며칠간 삽질을 하다가..

누군가의 비슷한 삽질을 방지하고자 공유드립니다.

(사실 몇몇 사이트 잘 찾고 영문 번역만 잘 해도 되긴 합니다.)

 

웹 콘솔에서 사용할 수도 있는데,

아래는 CLI (Command Line Interface)를 이용하기 위한 설치방법입니다.

 

 

1. ruby 설치

 - 반드시 1.8.7 버전이어야 . => 아주 중요합니다. 1.8.7은 은퇴하고 지금은 대부분 1.9.X 를 쓰고 있습니다. 아마존이 업뎃 대응이 느리네요.

 - ubuntu 최신 버전은 default ruby 1.9.1 이후 버전이 설치되어 있으니, 설치된 버전 삭제 1.8.7 설치해야 .

   (여러 버전의 ruby를 사용하게 해주는 rvm 이 있지만, 깨끗하게, 걍 싹싹 밀고...)

 - ruby -v 버전 확인 혹은 dpkg -l 설치된 루비 패키지 확인

 - 만약 ruby1.9.2 패키지가 설치되어 있으면,  apt-get remove ruby1.9.2 해당 패키지 제거

 - apt-cache search ruby1.8 하면, ruby1.8 확인 가능 ( 놈이 1.8.7)

 - apt-get install ruby1.8 설치

 - ruby -v 버전 1.8.7 확인

 

2. rubygem 설치

 - gem -v rubygem 설치되어 있는지 확인

 - 설치되어 있지 않으면 http://rubyforge.org/frs/?group_id=126 에서 rubygems-1.8.25.zip 다운로드

 - unzip 으로 압축 풀고, 해당 디렉토리에서 ruby setup.rb 실행

 - 설치 실행파일 확인

 - 만약 실행파일 이름이 gem1.8 되어 있으면 gem 으로 rename => 설치 마지막 부분에 뭐뭐 설치됐다 나오는데 실행파일 이름이 gem1.8 이더라구요..

 

3. emr CLI 설치

 - http://aws.amazon.com/developertools/2264 가서 EMR ruby client 다운로드

 - unzip 으로 압축풀고, credentials.json 파일 생성

 - credentials.json 파일 내용 :

{
"access_id": "
Your AWS Access Key ID",
"private_key": "
Your AWS Secret Access Key",
"key-pair": "
Your key pair name",
"key-pair-file": "
The path and name of your PEM file",
"log_uri": "
A path to a bucket you own on Amazon S3, such as, s3n://mylog-uri/",
"region": "
The region of your cluster, either us-east-1, us-west-2, us-west-1, eu-west-1, ap-northeast-1, ap-southeast-1, ap-southeast-2, or sa-east-1"
}

  ---> 위 내용 중 region 이 좀 애매한데, access-key 가 접근할 수 있는 region 인지, 접근할 S3 bucket의 region 인지 아직 애매합니다.

       특히 지금 나처럼 모든 region 에 접근해야 하는 버킷이 있는 경우에 어떻게 해야 하는지...

 - key-pair-file 권한 조정 (chmod og-rwx mykeypair.pem)

 - ./elastic-mapreduce --version 으로 버전 확인

 - 여기까지 됐으면 일단 emr CLI 설치 완료

 

 

여기까지 되었으면 이제 실행만 시키면 되는데,

우리는 Hadoop streaming 을 이용해 job 을 돌릴거라 아래처럼 명령을 날려줍니다.

 

./elastic-mapreduce --create --alive --stream --input s3://버킷/backup/emr-temp/LogSample \
--mapper s3://버킷/backup/emr-temp/mapper.py \
--reducer aggregate \
--output s3://버킷/backup/emr-temp/out \
--log-uri s3://버킷/ \
--region eu-west-1 \
--num-instances 5 --instance-type m1.xlarge

 

그리고 아래 명령으로 job 상태 확인 (오류가 났으면 원인이 뭔지를 찾아야 하는데.. CLI 상에서는 좀 짜증나네요)

./elastic-mapreduce --describe --jobflow j-15VXX2JUBHU5T --region eu-west-1

 

아래 명령은 해당 region 의 전체 jobflow 목록을 보여줍니다.

./elastic-mapreduce --list --region eu-west-1

 

 

이 밖에 수많은 옵션들은... 각자 필요할 때 찾아보시길 ㅎㅎ