[kor] Simple Spark Matrix Multiplication Using Amazon EMR

24 Feb 2022 By Unho Choi

들어가기 앞서,

  • 해당 글에서는, Amazon EMR 을 사용해 간단한 Spark Matrix Multiplication 을 진행하는 방법에 대해서 다뤄보겠습니다.
  • 인스턴스 접속을 위한 EC2 키 페어는 발급 된 상태라고 가정하고 진행했습니다.

진행 순서

  1. Amazon EMR 이란?
  2. Amazon EMR 클러스터 생성
  3. Amazon EMR 접속
  4. spark-shell 실행
  5. 간단한 Local Matrix Multiplication 진행
  6. 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 을 통해 생성한 클러스터를 종료합니다.