[kor] Simple Spark Matrix Multiplication Using Amazon EMR
들어가기 앞서,
- 해당 글에서는, Amazon EMR 을 사용해 간단한 Spark Matrix Multiplication 을 진행하는 방법에 대해서 다뤄보겠습니다.
- 인스턴스 접속을 위한 EC2 키 페어는 발급 된 상태라고 가정하고 진행했습니다.
진행 순서
- Amazon EMR 이란?
- Amazon EMR 클러스터 생성
- Amazon EMR 접속
- spark-shell 실행
- 간단한 Local Matrix Multiplication 진행
- Amazon EMR Cluster 종료
1. Amazon EMR 이란?
- Amazon EMR은 빅 데이터 프레임워크(Apache Hadoop, Apache Spark, etc)들의 실행을 간소화하는 관리형 클러스터 플랫폼입니다.
- Amazon EMR을 통해, 간편하고 비용 효율적인 빅데이터 처리를 진행할 수 있습니다.
2. Amazon EMR 클러스터 생성
-
AWS Management Console 에 로그인한 뒤, 상단 Search bar 를 통해 Amazon EMR 에 접근합니다.
-
좌측 [클러스터 목록] 탭에 접근한 뒤, [클러스터 생성]을 클릭합니다.
-
좌측 상단의 [고급 옵션으로 이동]을 클릭합니다.
-
단계 1 에선, 원하는 릴리스와 소프트웨어 구성을 선택합니다.
- 해당 글에선 Spark 를 추가로 선택했습니다.
-
단계 2 에선, 클러스터 구성을 선택합니다.
- 클러스터 구성은, 실행하려는 작업에 따라 유동적으로 선택해주시면 됩니다.
- 해당 글에선, Master 1대(m5.xlarge), Worker 2대(m5.xlarge) 로 클러스터를 구성했습니다.
- 클러스터 구성 시, 각각의 인스턴스를 온디맨드가 아닌 스팟으로 사용한다면, 간단한 실험을 저렴한 요금으로 진행할 수 있습니다.
- 또한, 클러스터 유휴에 따른 자동 종료 활성화를 원치 않는다면, 하단에서 자동 종료 활성화를 해제할 수 있습니다.
-
단계 3 에선, 클러스터 이름을 설정합니다.
- 만약, 실험에 따른 로그 저장이 필요없다면, 로깅 선택을 해제하시면 됩니다.
- 또한, 종료 보호가 필요없다면, 종료 보호를 해제하시면 됩니다.
-
단계 4 에선, 보안을 설정합니다.
- EC2 키 페어는 이미 발급 된 상태라고 가정했으므로, 발급 받은 EC2 키 페어를 선택합니다.
- EC2 보안 그룹에선, default 보안 그룹이 존재한다면 해당 보안 그룹을 선택하고, 보안 그룹이 존재하지 않는다면 새롭게 생성합니다.
3. Amazon EMR 접속
-
생성한 클러스터가 활성화되었다면, 하단의 [보안 및 액세스]의 [마스터 보안 그룹]에 접근합니다.
-
마스터의 보안 그룹을 선택한 뒤, 하단 [인바운드 규칙] 탭에서 [인바운드 규칙 편집]을 클릭합니다.
-
좌측 하단의 [규칙 추가]를 클릭한 뒤, 새로운 인바운드 규칙을 [유형 : 모든 트래픽, 소스 : 내 IP]로 추가하고 저장합니다.
-
생성한 클러스터의 [요약] 탭에 다시 접근한 뒤, [마스터 퍼블릭 DNS]의 [Connect to the Master Node Using SSH]를 클릭합니다.
-
터미널을 띄운 뒤, 로컬 EC2 키 페어 위치에 따라 SSH 명령어를 적절하게 수정하고, 마스터에 SSH 접근합니다.
4. spark-shell 실행
-
Spark Application 은 스칼라, 자바, 파이썬, R 로 구현할 수 있으나, 해당 글에서는 스칼라를 사용하겠습니다.
-
또한, Spark Application 을 실행하는 방법은 spark-submit 과 spark-shell 이 있으나, 해당 글에서는 spark-shell 을 사용하겠습니다.
5. 간단한 Local Matrix Multiplication 진행
- 아래 코드를 통해, 간단한 Local Matrix Multiplication 을 진행할 수 있습니다.
// DenseMatrix 라이브러리 호출
import org.apache.spark.mllib.linalg.DenseMatrix
// DenseMatrix 생성
val dm = new DenseMatrix(2,3,Array(1.0,2.0,3.0,1.0,2.0,3.0))
dm.multiply(dm.transpose)
6. Amazon EMR Cluster 종료
-
Amazon EMR Cluster 는 중지가 존재하지 않습니다.
-
따라서, 모든 작업이 끝났다면, Console 을 통해 생성한 클러스터를 종료합니다.