비용 절감
- EMR 요금 부과 방식
- 배포하는 인스턴스 유형 및 Amazon EC2 인스턴스 수, 클러스터를 시작하는 리전에 따라 다름
- 온디맨드
- 낮은 요금
- 예약 인스턴스 or 스팟 인스턴스
- 구매 비용 훨씬 절감가능 ( 스팟은 경우에 따라 온디맨드의 1/10 정도 )
- Amazon S3, Kinesis,DynamoDB 등의 사용은 EMR 사용과 별도로 비용 청구
- 프라이빗 서브넷에서 EMR 클러스터 설정하는 경우, Amazon S3의 VPC 엔드포인트 설정 !
- 하지 않으면 S3 트래픽과 연결된 추가 NAT 게이트웨이 요금 발생
- 온디맨드
- 시간당 or 초당 컴퓨팅 파워에 대한 비용 지불
- 선결제 금액이나 장기 약정 없이 저렴하고 유연하게 Amazon EC2를 사용하기 원하는 사용자
- 단기의 갑작스럽거나 예측할 수 없는 워크로드가 있으며, 중단되어서는 안 되는 애플리케이션
- Amazon EC2에서 처음으로 개발 또는 시험 중인 애플리케이션
- 스팟 인스턴스
- 온디맨드 요금보다 최대 90% 할인된 가격
- 시작 및 종료 시간이 자유로운 애플리케이션
- 컴퓨팅 가격이 매우 저렴해야만 수익이 나는 애플리케이션
- 대량의 서버 용량 추가로 긴급히 컴퓨팅 파워가 필요한 사용자
AWS 통합
- AWS 클러스터에 네트워킹, 스토리지, 보안 등 관련 기능 제공
- 클러스터의 노드로 구성된 인스턴스에 대한 Amazon EC2
- 인스턴스를 시작하는 가상 네트워크를 구성하기 위한 Amazon Virtual Private Cloud (Amazon VPC)
- Amazon S3 를 사용하여 입력 및 출력 데이터를 저장하기 위한
- 아마존 CloudWatch 클러스터 성능을 모니터링하고 경보를 구성하기 위한
- AWS Identity and Access Management(IAM) - 권한 구성
- 서비스에 수행되는 요청을 감사하기 위한 AWS CloudTrail
- 클러스터의 일정을 계획하고 클러스터를 시작하기 위한 AWS Data Pipeline
- AWS Lake FormationAmazon S3 데이터 레이크의 데이터를 검색, 카탈로그 작성 및 보안
배포
- 인스턴스의 크기 및 유형 : 배치처리, 짧은 지연 시간 쿼리, 스트리밍 데이터, 대규모 데이터 스토리지 등
확장성 및 유연성
- 클러스터 크기 조정 가능 : 컴퓨팅 변화에 따라 클러스터를 확장하거나 축소할 수 있는 유연성 제공
- 클러스터의 크기를 조정해 피크 워크로드를 위해 인스턴스 추가하거나 피크 워크로드 감소할 때 인스턴스 제거 등
- 여러 인스턴스 그룹을 실행하는 옵션도 제공.
- 한 그룹에서는 처리 성능을 보장하기 위해 온디맨드 인스턴스를, 동시에 다른 그룹에서는 작업을 더 빠르게 완료하고 비용을 낮추기 위한 스팟 인스턴스를 사용
- 데이터에 여러 파일 시스템을 사용할 수 있는 유연성 제공
- HDFS , EMRFS : 컴퓨팅과 스토리지를 분리하고 클러스터의 수명 주기 이후에도 데이터를 유지할 수 있도록 함
안정성
- 클러스터의 노드를 모니터링하고 장애가 발생할 경우 인스턴스를 자동으로 종료 및 교체
- 일시적 클러스터 : 자동으로 종료 , 모든 단계를 완료한 후 클러스터가 종료
- 장기 실행 클러스터 : 처리가 완료된 후에도 클러스터 계속 실행 , 이 클러스터가 필요 없을 때 수동으로 종료
- 종료방지기능 : 처리 중 오류나 문제로 인한 클러스터의 인스턴스 종료 방지 , 종료 전에 인스턴스에서 데이터 복구 가능
보안
- IAM
- 사용자 권한 지정 ( 권한에 따라 작업과 액세스 할 수 있는 리소스 결정 )
- EMR에 IAM 역할 사용 가능 /인스턴스에 EC2 인스턴스 프로파일 사용
- 서비스와 인스턴스가 다른 역할에 액세스할 수 있는 권한 부여 ?
- 보안 그룹
- EC2인스턴스에 대한 인바운드와 아웃바운드 트래픽 제어
- 클러스터를 시작할 때, EMR은 마스터 인스턴스에 대한 보안 그룹과 코어/작업 인스턴스에서 공유할 보안 그룹 사용
- 클러스터의 인스턴스 간 통신을 보장하기 위한 보안 그룹 규칙 구성
- 암호화 ( Encryption )
- S3에 저장하는 데이터를 보호할 수 있도록 EMRFS와 함께 선택적 s3 서버측 및 클라이언트 측 암호화 지원
- 서버 측 암호화 : s3가 데이터를 업로드 한 후에서 데이터를 암호화
- 클러이언트 측 암호화 : EMR 클러스터의 EMRFS 클라이언트에서 암호화 및 암호 해독 프로세스 수행 = 루트키를 관리
- AWS KMS or 자체 키 관리 시스템 사용
- Amazon VPC
- Virtual Private Cloud
- 격리된 가상 네트워크
- AWS CloudTrail
- 클러스터에 액세스하고 있는 사람, 액세스 시간, 요청이 수행된 IP 주소 등 추적 가능
- Amazon EC2 키 페어
- 원격 컴퓨터와 마스터 노드 간에 보안 연결을 구성해 클러스터를 모니터링하고 클러스터와 상호 작용 가능
- SSH 네트워크 프로토콜을 사용하고 인증에는 Kerberos 사용
- SSH 사용시 EC2 key pair 필요
모니터링
- EMR 관리 인터페이스
- 로그 파일 사용 -> 장애와 오류에 대응
- EMR은 S3 로그 파일 보관하는 기능 제공 -> 클러스터 종류 후 로그를 저장하고 문제 해결 가능
- 선택적 디버깅 도구 제공
- CloudWatch : 클러스터와 클러스터 내의 작업에 대한 성능 지표 추적
관리 인터페이스
- 콘솔
- GUI , 웹 양식을 작성해 시작할 클러스터의 세부 정보를 지정
- 기존 클러스터의 세부 정보 확인
- 클러스터를 디버그하고 종료 등
- 가장 쉬운 방법
- AWS CLI
- 로컬 컴퓨터에서 실행하는 클라이언트 애플리케이션
- 클러스터를 시작하고 관리하는 프로세스를 자동화하는 스크립트 작성 가능
- SDK (소프트웨어 개발 키트)
- EMR을 호출해 클러스터를 생성하고 관리하는 함수 제공
- EMR의 기능을 확장하거나 사용자 지정하는 가장 좋은 방법
- Go, Java, .NET (C# 및 VB.NET), Node.js, PHP, Python 및 Ruby SDK
- 웹 서비스 API
- JSON을 사용해 웹 서비스를 직접 호출하는 하위 수준 인터페이스
- EMR을 호출하는 사용자 지정 SDK 만들 때 API 사용하는 것 좋음
written by salmonavocado🥑
Share article