Amazon EMR 시작하기

무료 계정 생성

대규모의 데이터를 처리해야 하는 경우 요금 할인을 받을 수도 있습니다.

자세한 내용은 AWS에 문의하시기 바랍니다.



Q: Amazon EMR이란 무엇입니까?

Amazon EMR은 비즈니스, 연구원, 데이터 분석가 및 개발자가 막대한 양의 데이터를 간편하게, 비용 효율적으로 처리할 수 있는 웹 서비스입니다. 이 서비스는 호스팅된 하둡 프레임워크를 사용합니다. 하둡 프레임워크는 Amazon Elastic Compute Cloud(EC2)와 Amazon Simple Storage Service(S3)의 웹 규모 인프라에서 실행됩니다.

Q: Amazon EMR로 어떤 작업을 할 수 있습니까?

Amazon EMR을 사용해 웹 인덱싱, 데이터 마이닝, 로그 파일 분석, 시스템 학습, 재무 분석, 과학 시뮬레이션, 생물정보학 연구와 같은 애플리케이션의 데이터 집약적인 작업을 수행하는 데 필요한 적당한 용량을 즉시 프로비저닝할 수 있습니다. Amazon EMR을 사용하면 시간이 걸리는 하둡 클러스터의 설정, 관리 또는 튜닝 작업이나 컴퓨팅 파워에 대해 걱정하지 않고, 데이터를 빠르게 처리 또는 분석하는 데 집중할 수 있습니다.

Amazon EMR은 대용량 데이터의 빠르고 효율적인 처리가 필요한 작업에 이상적입니다. 이 웹 서비스 인터페이스를 통해 처리 워크플로를 구축하고 실행 중인 클러스터의 진행 상태를 프로그래밍 방식으로 모니터링할 수 있습니다. 또한, AWS Management Console의 간편한 웹 인터페이스를 사용하여 클러스터를 시작하고 Amazon EC2 인스턴스 클러스터상의 처리 집약적인 컴퓨팅을 모니터링할 수 있습니다.

Q: Amazon EMR을 사용할 수 있는 사람은 누구입니까?

고성능 데이터 분석을 간편하게 수행해야 하는 사람이라면 누구나 Amazon EMR을 사용할 수 있습니다. Developer GuideAWS 빅 데이터 블로그를 통해 제공되는 몇가지 샘플 애플리케이션은 소프트웨어 개발 경험이 없어도 사용할 수 있습니다.

Q: 이전에는 할 수 없었던 작업 중 Amazon EMR로 수행할 수 있는 작업은 무엇입니까?

Amazon EMR은 시간이 걸리는 설치 및 관리의 복잡성을 상당히 줄일 수 있습니다. 또한, 하둡 클러스터의 튜닝이나 컴퓨팅 파워 등에 따른 복잡성이 해소됩니다. 몇 시간 또는 며칠이 아닌 몇 분 내에 프로세스가 시작되어 대규모 하둡 클러스터를 신속하게 가동할 수 있습니다. 사용자가 달리 지정하지 않는 한, 클러스터가 처리를 완료하면 자동으로 종료되므로, 더 이상 필요하지 않은 리소스에 대해서는 비용이 부과되지 않습니다.

이 서비스를 사용하면 웹 인덱싱, 데이터 마이닝, 로그 파일 분석, 시스템 학습, 재무 분석, 과학적인 시뮬레이션, 생물정보학 연구 등의 데이터 집약적인 애플리케이션 작업을 신속하게 수행할 수 있습니다.

소프트웨어 개발자로서 자신만의 더욱 정교한 애플리케이션을 개발하고 실행할 수 있으므로 일정 예약, 워크플로, 모니터링 등과 같은 기능을 추가할 수 있습니다.

Q: Amazon EMR은 어떤 데이터 처리 엔진을 사용합니까?

Amazon EMR은 분산 데이터 처리 엔진으로 Apache Hadoop을 사용합니다. Hadoop은 오픈 소스 Java 소프트웨어 프레임워크로, 상용 하드웨어의 대규모 클러스터에서 실행되는 데이터 집약적인 분산 애플리케이션을 지원합니다. Hadoop은 “MapReduce”라는 프로그래밍 모델을 구현하고 있습니다. 이 모델에서 데이터는 여러 작업 단위로 분할되고, 클러스터의 모든 노드에서 실행할 수 있습니다. 이 프레임워크는 개발자, 기업, 신흥 기업에서 널리 사용되고 있으며, 수천 대의 상용 시스템의 클러스터에서 최대 페타바이트의 데이터를 처리하기 위한 안정적인 소프트웨어 플랫폼으로 인정받고 있습니다.

Q: Amazon EMR 클러스터란 무엇입니까?

Amazon EMR에서는 과거에 Amazon EMR 클러스터(및 이에 할당된 모든 처리 단계)를 "클러스터"라고 불렀습니다. 모든 클러스터에는 "j-"로 시작되는 고유한 식별자가 있습니다.

Q: 클러스터 단계란 무엇입니까?

하나의 클러스터 단계는 사용자가 정의한 처리 단위로, 대개 데이터를 처리하는 하나의 알고리즘에 매핑됩니다. 단계란 Java, Ruby, Perl, Python, PHP, R 또는 C++로 작성된 스트리밍 프로그램 또는 Java jar로서 구현된 하둡 MapReduce 애플리케이션입니다. 예를 들어 단어가 문서에 등장하는 빈도를 계산하여 빈도수에 따라 정렬하여 출력하려고 할 때, 첫 번째 단계는 MapReduce 애플리케이션에서 각 단어의 출현 횟수를 계수하는 것이며, 두 번째 단계는 MapReduce 애플리케이션에서 개수를 기준으로 첫 번째 단계의 출력 결과를 정렬하는 것입니다.

Q: 각 클러스터의 상태는 무엇을 의미합니까?

STARTING – 클러스터가 EC2 인스턴스를 프로비저닝, 시작 및 구성합니다.
BOOTSTRAPPING – 부트스트랩 작업이 클러스터에서 실행되고 있습니다.
RUNNING – 클러스터 단계를 현재 실행 중입니다.
WAITING – 클러스터가 현재 활성 상태이나, 실행할 단계가 없습니다.
TERMINATING – 클러스터를 종료하는 중입니다.
TERMINATED – 클러스터가 오류 없이 종료되었습니다.
TERMINATED_WITH_ERRORS – 클러스터 종료 시 오류가 발생했습니다.

Q: 각 단계의 상태는 무엇을 의미합니까?

PENDING – 단계가 실행 대기 상태입니다.
RUNNING – 단계가 현재 실행 중입니다.
COMPLETED – 단계가 성공적으로 완료되었습니다.
CANCELLED – 이전 단계가 실패했거나 클러스터가 실행되기 전에 중단되어 해당 단계가 실행 전에 취소되었습니다.
FAILED – 단계를 수행하는 동안 실패했습니다.

맨 위로 이동 >>


Q: Amazon EMR에 액세스하려면 어떻게 해야 합니까?

AWS Management Console, 명령줄 도구, SDK 또는 EMR API를 사용하여 Amazon EMR에 액세스할 수 있습니다.

Q: 클러스터를 시작하려면 어떻게 해야 합니까?

간단한 클러스터 요청 양식을 작성하면 AWS Management Console을 통해 클러스터를 시작할 수 있습니다. 요청 양식에서 클러스터의 이름, 입력 데이터의 Amazon S3 내 위치, 처리 애플리케이션, 원하는 데이터 출력 위치, 사용하려는 Amazon EC2 인스턴스 수와 유형을 지정합니다. 필요에 따라 클러스터 로그 파일과 실행 중인 클러스터에 로그인하기 위한 SSH 키를 저장할 위치를 지정할 수도 있습니다. 또는 RunJobFlow API를 사용하거나 명령줄 도구에서 'create' 명령을 사용하여 클러스터를 시작할 수 있습니다.

Q: Amazon EMR을 시작하려면 어떻게 해야 합니까?

Amazon EMR에 가입하려면 Amazon EMR 세부 정보 페이지 http://aws.amazon.com/elasticmapreduce에서 "가입" 버튼을 클릭합니다. Amazon EMR에 액세스하려면 Amazon EC2 및 Amazon S3에 가입해야 합니다. 이러한 서비스에 아직 가입하지 않은 경우, Amazon EMR 가입 과정 중에 서비스 가입 안내 메시지가 표시됩니다. 가입 후에는 서비스 사용 방법을 알아보는 데 가장 유용한 시작 안내서를 비롯한 Amazon EMR 설명서를 참조하십시오.

Q: 클러스터를 종료하려면 어떻게 해야 합니까?

AWS Management Console에서 클러스터를 선택하고 "Terminate" 버튼을 클릭하여 언제든지 클러스터를 종료할 수 있습니다. 또는 TerminateJobFlows API를 사용할 수 있습니다. 실행 중인 클러스터를 종료하면 Amazon S3에 보관되지 않은 결과를 잃게 되고, 모든 Amazon EC2 인스턴스가 종료됩니다.

Q: Amazon EMR은 동시에 여러 개의 클러스터를 지원합니까?

예. 이미 하나 이상의 클러스터를 실행 중인 경우에도 언제든지 새 클러스터를 생성할 수 있습니다.

Q: 동시에 얼마나 많은 클러스터를 실행할 수 있습니까?

원하는 만큼 얼마든지 클러스터를 시작할 수 있습니다. 모든 클러스터에 대한 인스턴스 수는 20개로 제한됩니다. 더 많은 인스턴스가 필요할 경우 Amazon EC2 인스턴스 요청 양식을 작성하십시오. 고객의 사용 사례와 인스턴스 증가 상황이 반영될 것입니다. Amazon EC2 한도를 이미 증가한 경우, 새로운 한도가 Amazon EMR 클러스터에 적용됩니다.

맨 위로 이동 >>


Q: 샘플 코드는 어디에서 찾을 수 있습니까?

도움말 및 자습서에서 샘플 코드를 확인할 수 있습니다.

Q: 데이터 처리 애플리케이션을 어떻게 개발할 수 있습니까?

예를 들어, IBM MapReduce Tools for Eclipse와 같은 Eclipse 또는 NetBeans 플러그인(http://www.alphaworks.ibm.com/tech/mapreducetools)을 사용하여 데스크톱에서 데이터 처리 작업을 개발할 수 있습니다. 이러한 도구를 사용하면 MapReduce 작업을 쉽게 개발 및 디버깅하여 자신의 컴퓨터에서 테스트할 수 있습니다. 또한 하나 이상의 인스턴스를 사용하여 Amazon EMR에서 직접 클러스터를 개발할 수 있습니다.

Q: 명령줄 도구 또는 API를 AWS Management Console과 비교할 때 각각의 장점은 무엇입니까?

명령줄 도구 또는 API에서는 프로그래밍 방식으로 클러스터를 시작하고 실행 중인 클러스터의 진행 상태를 모니터링하고, 클러스터에 사용자 정의 기능을 추가로 생성(여러 프로세스 단계, 일정 예약, 워크플로, 모니터링 등의 순서)하거나, 기타 Amazon EMR 고객을 위한 유용한 도구 또는 애플리케이션을 개발할 수 있는 기능을 제공합니다. 반면 AWS Management Console은 사용하기 쉬운 그래픽 인터페이스를 제공하는데, 이를 통해 웹 브라우저에서 직접 클러스터를 시작하고 모니터링할 수 있습니다.

Q: 이미 실행 중인 클러스터에 단계를 추가할 수 있습니까?

예. 작업이 실행 중인 경우 AddJobFlowSteps API를 사용하여 옵션에서 단계를 추가할 수 있습니다. AddJobFlowSteps API는 현재 단계 순서의 마지막에 새로운 단계를 추가합니다. 클러스터에 조건부 논리를 구현하거나 디버깅을 수행하기 위해 이 API를 사용할 수도 있습니다.

Q: 영구 클러스터를 실행할 수 있습니까?

예. –alive 플래그로 시작된 Amazon EMR 클러스터는 명시적으로 종료하지 않는 한 계속됩니다. 따라서 고객은 필요에 따라 클러스터에 단계를 추가할 수 있습니다. 이를 활용하면 매번 클러스터가 시작될 때를 기다릴 필요 없이 애플리케이션을 디버깅할 수 있습니다. 또한 영구 클러스터는 장기 실행 데이터 웨어하우스의 클러스터를 실행하는 데도 활용할 수 있습니다. 여기에는 데이터 웨어하우스와 Hive, Pig 등 하둡에서 실행되는 분석 패키지를 결합할 수 있습니다.

Q: 클러스터가 완료되면 알림을 받을 수 있습니까?

Amazon SNS에 가입하여 클러스터가 끝날 때 SNS 주제에 클러스터를 게시할 수 있습니다. 또한, AWS Management Console에서 클러스터 진행률을 보거나 명령줄, SDK 또는 API를 사용하여 클러스터의 상태를 확인할 수 있습니다.

Q: Amazon EMR은 어떤 프로그래밍 언어를 지원합니까?

Java를 사용하여 하둡 사용자 정의 jar을 구현할 수 있습니다. 또는 하둡 스트리밍을 통해 Perl, Python, Ruby, C++, PHP, R 등 다른 언어를 사용할 수 있습니다. 하둡 스트리밍 사용에 대한 지침은 Developer Guide를 참조하십시오.

Q: Amazon EMR은 어떤 OS 버전을 지원합니까?

현재 Amazon EMR은 32비트 및 64비트 모드 Debian/Squeeze를 지원합니다.

Q: 클러스터를 실행하는 중에 하둡 UI를 볼 수 있습니까?

예. 하둡 UI에 액세스하는 방법에 대해서는 Developer Guide의 하둡 UI 섹션을 참조하십시오.

Q: Amazon EMR은 타사 소프트웨어 패키지를 지원합니까?

예. 클러스터에 타사 소프트웨어 패키지를 설치하기 위해 권장되는 방법은 부트스트랩 작업을 사용하는 것입니다. 또는 모든 타사 라이브러리를 Mapper 또는 Reducer 실행 파일에 직접 포함시킬 수 있습니다. 또한 하둡 분산 캐시 메커니즘을 사용하여 정적으로 컴파일된 실행 파일을 업로드할 수 있습니다.

Q: Amazon EMR은 어떤 하둡 버전을 지원합니까?

Amazon EMR에서 지원하는 최신 버전은 설명서를 참조하십시오.

Q: 하둡 이외의 데이터 처리 엔진을 사용할 수 있습니까?

예, 일부 EMR 고객은 Spark 및 Shark(인 메모리 MapReduce 및 데이터 웨어하우스)를 처리 엔진으로 사용합니다. 이 작업 방법에 대한 지침은 이 도움말을 참조하십시오.

Q: Amazon은 오픈 소스 커뮤니티를 위해 하둡 개선에 기여하고 있습니까?

예. Amazon EMR은 오픈 소스 커뮤니티에 적극적으로 참여하고 있으며, 하둡 소스를 개선하는 데 기여하고 있습니다.

Q: Amazon EMR은 지원하는 하둡 버전을 업데이트합니까?

Amazon EMR은 커뮤니티의 하둡 릴리스에 따라 지원하는 버전을 정기적으로 업데이트합니다. Amazon EMR은 일부 하둡 릴리스를 생략할 수 있습니다.

Q: Amazon EMR은 이전 버전의 하둡을 얼마나 오랫동안 지원합니까?

Amazon EMR에서는 이전 버전의 하둡이 폐지된 후 몇 개월이 지나면 서비스 지원을 중단합니다. 그러나 Amazon EMR API는 이전 버전과도 호환되므로, 이러한 API를 사용하여 도구를 구축할 경우, Amazon EMR이 사용 중인 하둡의 해당 버전을 업데이트해도 해당 도구는 계속 작동합니다.

맨 위로 이동 >>


Q: 클러스터를 디버깅하려면 어떻게 해야 합니까?

먼저 디버깅할 클러스터를 선택한 다음, "Debug" 버튼을 클릭하여 AWS Management Console의 클러스터 디버깅 창에 액세스합니다. 이를 통해 진행 상황을 추적하고, 클러스터의 단계, 작업, 하위 작업 또는 하위 작업 시도에 발생하는 문제를 확인할 수 있습니다. 또는 클러스터를 실행 중인 Amazon Elastic Compute Cloud(EC2) 인스턴스에 SSH를 직접 투입하고, 원하는 명령줄 디버거를 사용하여 클러스터 문제를 해결할 수 있습니다.

Q: 클러스터 디버깅 도구란 무엇입니까?

클러스터 디버깅 도구는 AWS Management Console의 구성 요소로, 이를 사용하여 진행 상황을 추적하고, 클러스터의 단계, 작업, 하위 작업 또는 하위 작업 시도에 발생하는 문제를 확인할 수 있습니다. 클러스터 디버깅 도구에 액세스하려면 먼저 디버깅할 클러스터를 선택하고 "Debug" 버튼을 클릭합니다.

Q: 클러스터 디버깅은 어떻게 사용할 수 있습니까?

디버깅을 사용하려면 AWS Management Console에서 클러스터를 만들 때 "Enable Debugging" 플래그를 설정해야 합니다. 또는, 클러스터를 생성할 때 명령줄 클라이언트에서 --enable-debugging 및 --log-uri 플래그를 전달할 수 있습니다.

Q: 클러스터 디버깅 창 사용에 대한 지침은 어디서 찾을 수 있습니까?

클러스터 디버깅 창 액세스 및 사용 방법에 대한 지침은 Developer Guide의 AWS Management Console 섹션을 참조하십시오.

Q: 어떤 유형의 클러스터를 클러스터 디버깅 창에서 디버깅할 수 있습니까?

사용자 정의 jar, 스트리밍, Hive, Pig 등 Amazon EMR에서 현재 지원되는 모든 유형의 클러스터를 디버깅할 수 있습니다.

Q: 클러스터 디버깅을 사용하기 위해 Amazon SimpleDB에 가입해야 하는 이유는 무엇입니까?

Amazon EMR은 Amazon SimpleDB의 계정에 하둡 작업, 하위 작업, 하위 작업 시도에 대한 상태 정보를 저장합니다. 여기에서 Amazon SimpleDB에 가입하십시오.

Q: Amazon SimpleDB에 가입하지 않고 클러스터 디버깅 기능을 사용할 수 있습니까?

Amazon SimpleDB에 가입을 하지 않은 경우 클러스터 단계와 단계 로그는 볼 수 있지만, 하둡 작업, 하위 작업 또는 하위 작업 시도는 볼 수 없습니다.

Q: Amazon SimpleDB에서 클러스터 데이터 내역을 삭제할 수 있습니까?

예. 사용자는 Amazon EMR이 자동으로 만든 Amazon SimpleDB 도메인을 삭제할 수 있습니다. 자세한 내용은 Amazon SimpleDB 설명서를 참조하십시오.

맨 위로 이동 >>


Q: Amazon S3에 데이터를 어떻게 입력합니까?

Amazon S3 API를 사용하여 데이터를 Amazon S3에 업로드할 수 있습니다. 또는 수많은 오픈 소스 또는 상용 클라이언트를 사용하여 손쉽게 데이터를 Amazon S3에 업로드할 수 있습니다.

Q: 완료된 클러스터 로그를 확인하려면 어떻게 해야 합니까?

하둡 시스템 로그와 사용자 로그는 클러스터를 생성할 때 지정한 Amazon S3 버킷에 보관됩니다.

Q: Amazon EMR에서는 로그를 압축합니까?

아니요. 현재 Amazon EMR은 로그를 Amazon S3로 이동할 때 압축하지 않습니다.

Q: 인터넷 또는 Amazon S3 이외의 위치에서 내 데이터를 로딩할 수 있습니까?

예. 하둡 애플리케이션은 인터넷 어디에서나 또는 다른 AWS 서비스에서 데이터를 로딩할 수 있습니다. 인터넷에서 데이터를 로딩하는 경우, EC2 대역폭 요금이 적용됩니다. 또한 Amazon EMR은 DynamoDB 데이터에 대한 Hive 기반 액세스를 제공합니다.

맨 위로 이동 >>


Q: Amazon EMR에서는 입력 데이터를 처리하는 시간을 예측할 수 있습니까?

아니요. 클러스터별로 입력 데이터가 다르므로 작업 시간을 예측할 수 없습니다.

Q: Amazon EMR의 사용료는 얼마입니까?

AWS의 다른 서비스와 마찬가지로 사용한 만큼만 비용을 지불하면 됩니다. 최소 요금이 없으며, 사전 확약금 또는 장기 약정도 없습니다. Amazon EMR 요금은 일반 Amazon EC2 및 Amazon S3 요금에 추가됩니다.

Amazon EMR 요금 정보는 EMR 요금 페이지를 참조하십시오.

Amazon EC2, Amazon S3 및 Amazon SimpleDB 요금은 별도로 청구됩니다. Amazon EMR 요금은 클러스터가 요청된 시간부터 종료될 때까지 각 인스턴스 유형에서 사용한 초당 요금이 청구됩니다(최소 요금은 1분). Amazon EC2 인스턴스 유형, Amazon EC2 스팟 인스턴스 요금, Amazon EC2 예약 인스턴스 요금, Amazon S3 요금 또는 Amazon SimpleDB 요금에 대한 자세한 내용은 다음 링크를 클릭하십시오.

Amazon EC2 인스턴스 유형

Amazon EC2 예약 인스턴스 요금

Amazon EC2 스팟 인스턴스 요금

Amazon S3 요금

Amazon SimpleDB 요금

Q: Amazon EMR 클러스터에는 언제부터 언제까지 사용한 요금이 청구됩니까?

청구는 Amazon EMR이 클러스터를 실행을 시작할 때 개시됩니다. 실제로 사용되는 리소스에 대해서만 요금이 청구됩니다. 예를 들어, Amazon EMR 클러스터를 위해 100개의 Amazon EC2 표준 스몰 인스턴스를 시작했다고 가정해 보겠습니다. 이 경우, Amazon EMR 비용은 시간당 0.015 USD씩 증가합니다. Amazon EC2 인스턴스는 즉시 부팅을 시작하지만 모든 인스턴스가 항상 동시에 시작되는 것은 아닙니다. Amazon EMR은 각 인스턴스의 시작 시간을 추적하고, 클러스터에 이를 체크인하여 인스턴스가 처리 작업을 수락할 수 있도록 합니다.

시작 요청 후 처음 10분 동안 Amazon EMR은 클러스터를 시작(모든 인스턴스가 사용 가능한 경우)하거나 가능한 한 많은 인스턴스를 체크인합니다. 10분이 지나면 Amazon EMR은 요청 인스턴스의 90%를 이용할 수 있게 되자마자 클러스터 프로세스(및 과금)를 시작합니다. 요청 인스턴스의 나머지 10%도 체크인되면, Amazon EMR이 이 인스턴스에 대해서도 요금을 청구하기 시작합니다.

따라서 위의 예제에서는 시작 요청 후 10분 만에 요청 인스턴스 100개를 모두 사용할 수 있는 경우, 클러스터를 완료하는 데 걸린 시간당 1.50 USD(100 * 0.015 USD)가 부과됩니다. 10분 동안 요청 인스턴스 중 90개만 사용할 수 있는 경우, 90개가 클러스터를 실행하는 인스턴스의 개수라면 시간당 1.35 USD(90 * 0.015 USD)가 부과됩니다. 나머지 인스턴스 10개를 사용할 수 있게 되었을 때 클러스터 작업의 나머지가 완료될 때까지 시간당 1.50 USD(100 * 0.015 USD)가 부과됩니다.

각 클러스터는 사용자가 TerminateJobFlows API 호출(또는 이에 상응하는 도구)로 클러스터를 종료하거나, 클러스터가 스스로 중단되거나, 소프트웨어 또는 하드웨어 장애로 인해 클러스터가 종료될 때까지 계속 실행됩니다.

Q: Amazon EMR, Amazon EC2 및 Amazon S3 사용은 어디에서 추적할 수 있습니까?

Billing & Cost Management 콘솔에서 사용을 추적할 수 있습니다.

Q: 콘솔에 표시된 정규화된 인스턴스 시간을 어떻게 계산합니까?

AWS Management Console에서 각 클러스터에는 [Normalized Instance Hours] 열이 있습니다. 이 열은 지금까지 해당 클러스터가 사용한 대략적인 컴퓨팅 시간을 표시하며, 시간은 가장 가까운 시간으로 올림 처리됩니다. 정규화된 인스턴스 시간은 m1.small 사용 1시간을 정규화된 컴퓨팅 시간 1시간으로 계산한 컴퓨팅 시간입니다. 다음 표는 다양한 인스턴스 크기에 대한 정규화된 인스턴스 시간을 계산하는 데 사용된 정규화 인자를 간략하게 설명합니다.

인스턴스 크기 정규화 인자
스몰 1
미디엄 2
라지 4
엑스트라 라지 8
2xlarge 16
4xlarge 32
8xlarge 64

예를 들어, 노드 10개의 r3.8xlarge 클러스터를 1시간 동안 실행하는 경우 콘솔에 표시되는 정규화된 인스턴스 시간은 640 시간(10(노드 수) x 64(정규화 인자) x 1(클러스터가 실행된 시간) = 640)이 됩니다.

 

이것은 추정치이며, 비용 청구 시 적용되지는 않습니다. 청구 대상 Amazon EMR 사용량은 Billing & Cost Management 콘솔을 참조하십시오. 인스턴스 가중치를 정확히 반영하기 위해 정규화 인자를 최근에 변경하였으며, 정규화 인자는 월별 청구서에 적용되지 않는다는 점에 유의하시기 바랍니다.

Q: Amazon EMR은 Amazon EC2 온디맨드 인스턴스, 스팟 인스턴스 및 예약 인스턴스를 지원합니까?

예. Amazon EMR은 온디맨드, 스팟 및 예약 인스턴스를 원활하게 지원합니다. Amazon EC2 예약 인스턴스에 대한 자세한 내용은 여기를 클릭하십시오. Amazon EC2 스팟 인스턴스에 대한 자세한 내용은 여기를 클릭하십시오.


Q: 요금에 세금이 포함되어 있습니까?

별도의 언급이 없는 한, 요금에는 VAT 및 해당 판매세를 비롯한 관련 조세 공과가 포함되지 않습니다. 청구지 주소가 일본으로 되어 있는 고객의 경우 AWS 서비스 사용 시 일본 소비세의 적용을 받게 됩니다. 자세히 알아보기.

맨 위로 이동 >>


Q: 클러스터를 실행하는 동안, 내 데이터를 다른 사람이 볼 수 없게 하려면 어떻게 해야 합니까?

Amazon EMR은 두 개의 Amazon EC2 보안 그룹(각각 마스터용 및 슬레이브용)에서 인스턴스를 시작합니다. 마스터 보안 그룹에는 서비스와의 통신을 위해 열려 있는 포트가 있습니다. 또한, 시작할 때 지정한 키를 사용하여 인스턴스에 SSH 연결할 수 있도록 SSH 포트가 열려있습니다. 슬레이브는 다른 보안 그룹에서 시작합니다. 이 보안 그룹은 마스터 인스턴스와의 상호작용만 허용합니다. 기본적으로 두 보안 그룹 모두 다른 고객에게 속한 Amazon EC2 인스턴스와 같은 외부 소스가 액세스하지 못하도록 설정되어 있습니다. 둘 다 계정 내에 있는 보안 그룹이므로, 표준 EC2 도구나 대시보드를 사용하여 보안 그룹을 다시 구성할 수 있습니다. EC2 보안 그룹에 대한 자세한 내용은 여기를 클릭하십시오.

Q: 저장된 데이터는 얼마나 안전합니까?

Amazon S3는 저장된 데이터를 무단 액세스로부터 보호하는 인증 메커니즘을 제공합니다. 데이터를 업로드하는 고객이 달리 명시하지 않는 한 해당 고객만 데이터에 액세스할 수 있습니다. Amazon EMR 고객은 보안 전송을 위해 Amazon S3에 HTTPS 프로토콜을 사용하여 데이터를 전송할 수도 있습니다. 또한 Amazon EMR은 Amazon S3와 Amazon EC2 간에 데이터를 전송 시 항상 HTTPS를 사용합니다. 보안을 강화하기 위해 고객은 일반적인 데이터 압축 도구를 사용하여 Amazon S3에 업로드하기 전에 입력 데이터를 암호화할 수 있습니다. 이 경우 Amazon EMR이 Amazon S3에서 데이터를 가져올 때, 고객은 클러스터 시작 부분에 복호화 단계를 추가해야 합니다.

Q: 보안 또는 규정 준수 감사를 위해 내 계정에서 이루어진 모든 EMR API 호출 기록을 확인할 수 있습니까?

예. AWS CloudTrail은 계정에 대한 AWS API 호출을 기록하고 로그 파일을 사용자에게 전달하는 웹 서비스입니다. CloudTrail에서 작성되는 AWS API 호출 내역을 통해 보안 분석, 리소스 변경 사항 추적 및 준수 감사를 수행할 수 있습니다. AWS CloudTrail 세부 정보 페이지에서 CloudTrail에 대해 자세히 알아보고 CloudTrail의 AWS Management Console을 통해 활성화하십시오.

맨 위로 이동 >>


Q: Amazon EMR은 가용 영역을 어떻게 활용합니까?

Amazon EMR은 동일한 Amazon EC2 가용 영역에 있는 해당 클러스터에 대해 모든 노드를 시작합니다. 동일한 영역에서 클러스터를 실행하면 더 빠른 속도로 데이터 액세스를 제공하므로 작업 흐름의 성능이 개선됩니다. 기본적으로 Amazon EMR은 클러스터를 실행하기 위해 가장 가용성이 높은 리소스를 가진 가용 영역을 선택합니다. 그러나 필요하다면 다른 가용 영역을 지정할 수 있습니다.

Q: 어느 리전에서 Amazon EMR을 사용할 수 있습니까?

Amazon EMR을 지원하는 AWS 리전 목록은 모든 AWS 글로벌 인프라가 나와 있는 AWS 리전 테이블을 참조하십시오.

Q: 클러스터를 실행하려면 어느 리전을 선택해야 합니까?

클러스터를 생성하는 경우 일반적으로 데이터가 저장되어 있는 리전을 선택해야 합니다.

Q: 미국 리전에서 실행 중인 클러스터에서 EU 데이터를 사용하거나 그 반대로 할 수 있습니까?

예, 가능합니다. 데이터를 한 리전에서 다른 리전으로 전송할 경우, 대역폭 요금이 부과됩니다. 대역폭 요금 정보는 EC2 세부 정보 페이지의 요금 섹션을 참조하십시오.

Q: AWS GovCloud(미국) 리전이 다른 리전과 다른 점은 무엇입니까?

AWS GovCloud(미국) 리전은 미국 정부 기관과 고객을 위해 설계되었습니다. 미국 ITAR 요구 사항을 준수합니다. GovCloud에서 EMR은 스팟 인스턴스 또는 enable-debugging 기능을 지원하지 않습니다. EMR Management Console은 아직 GovCloud에서 제공되지 않습니다.

맨 위로 이동 >>


Q: Amazon EMR은 Amazon EC2와 Amazon S3를 어떻게 사용합니까?

고객은 입력 데이터와 데이터 처리 애플리케이션을 Amazon S3에 업로드합니다. 그러면 Amazon EMR은 고객이 지정한 수만큼 Amazon EC2 인스턴스를 시작합니다. 서비스는 클러스터를 실행하면서, S3N 프로토콜을 사용하여 Amazon S3의 입력 데이터를 실행 중인 Amazon EC2 인스턴스로 가져옵니다. 클러스터가 완료되면, Amazon EMR은 출력 데이터를 Amazon S3로 전달합니다. 그러면 Amazon S3에서 고객이 출력 데이터를 검색하거나 이 데이터를 다른 클러스터에서 입력 데이터로 사용할 수 있습니다.

Q: Amazon EMR에서 컴퓨팅은 어떻게 수행됩니까?

Amazon EMR은 하둡 데이터 처리 엔진을 사용하여 MapReduce 프로그래밍 모델에 구현된 컴퓨팅을 수행합니다. 고객은 map()과 reduce() 함수에 대한 알고리즘을 실행합니다. 서비스는 하나의 단일 마스터와 다중 슬레이브로 구성된, 고객이 지정한 수의 Amazon EC2 인스턴스를 시작합니다. Amazon EMR은 이 인스턴스에서 하둡 소프트웨어를 실행합니다. 마스터 노드는 입력 데이터를 블록으로 분할하여 블록 처리를 슬레이브 노드에 분배합니다. 그러면 각 슬레이브 노드는 할당된 데이터에서 map 함수를 실행하고 중간 데이터를 생성합니다. 중간 데이터는 정렬되고 분할되어 reducer 함수를 적용하는 프로세스로 전송됩니다. 이러한 프로세스는 슬레이브 노드에서도 실행됩니다. 마지막으로, reducer 작업의 출력이 파일에 수집됩니다. 하나의 "클러스터"가 이러한 일련의 MapReduce 단계를 포함하는 경우가 있습니다.

Q: Amazon EMR의 안정성은 어느 정도입니까?

Amazon EMR은 Amazon의 입증된 고가용성 네트워크 인프라와 데이터 센터를 사용하여 Amazon EC2의 컴퓨팅 인스턴스 클러스터를 관리합니다. Amazon EMR은 업계가 입증하고 내결함성이 있는 하둡 소프트웨어를 데이터 처리 엔진으로 사용합니다. 하둡은 데이터를 여러 개의 하위 집합으로 나누고, 각 하위 집합을 두 개 이상의 Amazon EC2 인스턴스에 할당합니다. 따라서 Amazon EC2 인스턴스가 하나의 데이터 하위 집합을 처리하지 못하면, 다른 Amazon EC2 인스턴스의 결과를 사용할 수 있습니다.

Q: 클러스터가 작동하여 입력 데이터를 처리하는 데 시간이 얼마나 걸립니까?

Amazon EMR은 Amazon EC2 온디맨드 인스턴스의 리소스 프로비저닝을 거의 즉각적으로 시작합니다. 인스턴스를 사용할 수 없는 경우, Amazon EMR은 리소스 프로비저닝이 완료되거나 요청이 취소될 때까지 계속해서 클러스터에 리소스를 프로비저닝하려고 합니다. 인스턴스 프로비저닝은 최선의 노력을 기준으로 수행되며, 요청 인스턴스 수, 클러스터가 생성되는 시간, 시스템 내에 있는 요청의 총수에 따라 달라집니다. 리소스가 프로비저닝된 후 처리를 시작하는 데 걸리는 시간은 보통 15분 미만입니다.

필요 시 클러스터 용량을 보장하기 위해 Amazon EC2 예약 인스턴스에 대한 일회성 요금을 지불하고 할인된 시간당 요금으로 클라우드에 인스턴스 용량을 확보할 수 있습니다. 온디맨드 인스턴스의 경우와 마찬가지로, 고객은 인스턴스가 실행된 시간에 대해서만 사용 요금을 지불합니다. 따라서 인스턴스 요구 사항을 알 수 있는 비즈니스에서는 예약 인스턴스를 사용하면 온디맨드 인스턴스의 탄력성과 유연성을 유지하면서 예측 가능한 사용 비용을 좀 더 절감할 수 있습니다.

Q: Amazon EMR은 어떤 Amazon EC2 인스턴스 유형을 지원합니까?

Amazon EMR은 표준, 고성능 CPU, 고용량 메모리, 클러스터 컴퓨팅, 높은 I/O 및 고용량 스토리지를 포함한 12개의 EC2 인스턴스 유형을 지원합니다. 표준 인스턴스는 대부분의 범용 애플리케이션에 적합한 메모리 CPU 비율을 제공합니다. 고성능 CPU 인스턴스는 메모리(RAM)와 비교하여 더 많은 CPU 리소스를 제공하며 컴퓨팅 집약적 애플리케이션에 적합합니다. 고용량 메모리 인스턴스는 처리량이 많은 애플리케이션에 적합한 고용량 메모리를 제공합니다. 클러스터 컴퓨팅 인스턴스는 향상된 네트워킹 성능과 비교적 고성능 CPU를 제공하며, 고성능 컴퓨팅(HPC) 애플리케이션과 기타 사용량이 많은 네트워크 바인딩 애플리케이션에 적합합니다. 고용량 스토리지 인스턴스는 24개의 디스크를 통해 48TB의 스토리지를 제공하여 데이터 웨어하우징 및 로그 처리 같은 대용량 데이터 세트를 차례대로 액세스 해야 하는 애플리케이션에 이상적입니다. 인스턴스 유형 및 리전별 요금에 대한 자세한 내용은 EMR 요금 페이지를 참조하십시오.

Q: 적절한 Amazon EC2 인스턴스 유형은 어떻게 선택할 수 있습니까?

인스턴스 유형을 선택할 때 리소스 사용에 대한 애플리케이션의 특성을 고려하여 최적의 인스턴스 패밀리를 선택해야 합니다. Amazon EC2를 사용하는 Amazon EMR의 장점 중 하나는 사용한 만큼만 비용을 지불하면 된다는 것입니다. 따라서 다양한 인스턴스 유형과 수량으로 클러스터의 성능을 편리하고 저렴하게 테스트할 수 있습니다. 가장 적절한 인스턴스 유형을 결정하는 한 가지 효과적인 방법은 여러 개의 작은 클러스터를 시작하여 클러스터를 벤치마크하는 것입니다.

Q: 클러스터에 적합한 인스턴스의 수를 선택하려면 어떻게 해야 합니까?

클러스터에 사용할 인스턴스의 수는 애플리케이션에 따라 다릅니다. 데이터를 저장하고 처리하는 데 필요한 리소스의 양과 작업을 완료하는 데 필요한 시간에 따라 결정해야 합니다. 일반적으로 처리할 데이터를 저장하는 데 디스크 공간의 60%를 사용하고, 나머지는 중간 출력을 위해 남겨두도록 합니다. 따라서 HDFS에서 3x 복제를 할 경우, 1,690GB의 디스크 공간이 있는 m1.xlarge 인스턴스에서 5TB를 처리해야 한다면 클러스터에 적어도(5TB * 3)/(1,690GB * 0.6) = 15m1.xlarge 코어 노드가 필요합니다. 작업이 대량의 중간 데이터를 생성하거나 I/O 요구 사항이 높을 경우에는 이 수치를 높일 수도 있습니다. 작업 노드를 추가하여 처리 성능을 높일 수도 있습니다. 각 인스턴스 유형 구성의 로컬 인스턴스 스토리지에 대한 자세한 내용은 Amazon EC2 인스턴스 유형을 참조하십시오.

Q: 클러스터를 실행하는 데 시간이 얼마나 걸립니까?

클러스터를 실행하는 데 걸리는 시간은 클러스터의 유형, 입력 데이터의 양, 클러스터에서 사용하기로 선택한 Amazon EC2 인스턴스의 수와 유형 등 여러 가지 요인에 따라 달라집니다.

Q: 클러스터의 마스터 노드에 장애가 발생하면 Amazon EMR에서 이를 복구할 수 있습니까?

아니요. 마스터 노드에 장애가 발생할 경우, 클러스터가 종료되므로 작업을 다시 시작해야 합니다. Amazon EMR은 현재 마스터 노드 또는 마스터 노드 상태 복구에 대한 자동 장애 조치를 지원하지 않습니다. 마스터 노드에 장애가 발생하면 AWS Management Console에서는 새 클러스터를 시작할 수 있도록 "The master node was terminated"라는 메시지를 표시합니다. 고객은 클러스터에 체크포인트를 지정하여 Amazon S3에 중간 데이터(클러스터가 감소하기 전인 클러스터 중간에 생성된 데이터) 저장할 수 있습니다. 이로써 장애가 발생할 경우 마지막 체크포인트에서 클러스터를 재개할 수 있습니다.

Q: 클러스터의 슬레이브 노드에 장애가 발생하면 Amazon EMR에서 이를 복구할 수 있습니까?

예. Amazon EMR은 슬레이브 장애에 대한 내결함성이 있으며, 슬레이브 노드에 장애가 발생해도 작업을 계속 실행합니다. 또한, Amazon EMR은 코어 노드에 장애가 발생하면 새로운 코드를 프로비저닝합니다. 하지만 해당 클러스터의 모든 노드가 손실되는 경우에는 노드를 교체하지 않습니다.

Q: 클러스터 노드에 SSH로 연결할 수 있습니까?

예. SSH로 클러스터 노드에 연결하고 이곳에서 직접 하둡 명령을 실행할 수 있습니다. SSH로 슬레이브 노드에 연결해야 할 경우, 먼저 마스터 노드에 SSH 연결한 후에 슬레이브 노드에 SSH 연결해야 합니다.

Q: Amazon EMR에서 Microsoft Windows 인스턴스를 사용할 수 있습니까?

현재 Amazon EMR은 32비트 및 64비트 모드 Debian/Lenny를 지원합니다. 당사는 항상 고객의 의견에 귀를 기울이고 있습니다. 그리고 고객이 데이터를 고속으로 처리해야 하는 비즈니스 문제를 해결할 수 있도록 계속하여 추가 기능을 제공할 예정입니다.

Q: Amazon EMR 부트스트랩 작업이란 무엇입니까?

부트스트랩 작업은 클러스터를 실행하기 전에 사용자에게 사용자 정의 설치 프로그램을 실행하는 방법을 제공하는 Amazon EMR의 기능입니다. 부트스트랩 작업은 클러스터를 실행하기 전에 소프트웨어를 설치하거나 인스턴스를 구성하는 데 사용할 수 있습니다. 부트스트랩 작업에 대한 자세한 내용은 EMR의 개발자 안내서에서 참조할 수 있습니다.

Q: 부트스트랩 작업은 어떻게 사용할 수 있습니까?

Bash, Perl, Python, Ruby, C++ 또는 Java와 같이 클러스터 인스턴스에 이미 설치된 언어로 부트스트랩 작업 스크립트를 작성할 수 있습니다. 사전 정의된 부트스트랩 작업도 사용할 수 있습니다. 스크립트가 일단 작성되면 Amazon S3로 업로드하고 클러스터를 시작할 때 해당 위치를 참조하도록 해야 합니다. 부트스트랩 작업의 사용 방법에 대한 자세한 내용은 “Developer Guide”: http://docs.amazonwebservices.com/ElasticMapReduce/latest/DeveloperGuide/를 참조하십시오.

Q: 클러스터에 대한 하둡 설정은 어떻게 구성합니까?

EMR의 기본 하둡 구성은 대부분 작업에 적합합니다. 그러나 클러스터의 특정 메모리와 처리 요구 사항에 따라 설정을 조정해야 할 수 있습니다. 예를 들어, 클러스터 작업이 메모리를 많이 사용하는 경우, 코어당 작업 수 및 작업 추적 힙 크기를 줄일 수 있습니다. 이 경우 사전 정의된 부트스트랩 작업을 사용하여 시작 시 클러스터를 구성합니다. 설정에 대한 자세한 정보와 사용 방법은 Developer Guide의 Configure Memory Intensive Bootstrap Action을 참조하십시오. 클러스터 설정을 원하는 대로 사용자 정의할 수 있는 다른 사전 정의된 부트스트랩 작업도 사용할 수 있습니다. 사용 지침은 Developer Guide의 Configure Hadoop Bootstrap Action을 참조하십시오.

Q: 실행 중인 클러스터에서 슬레이브 노드 수를 변경할 수 있습니까?

예. 슬레이브 노드에는 (1) 하둡 분산 파일 시스템(HDFS)을 사용하여 영구 데이터를 호스팅하고 하둡 작업을 실행하는 코어 노드와 (2) 하둡 작업을 실행만 작업 노드, 두 가지 노드가 있습니다. 클러스터를 실행하는 동안 코어 노드 수를 늘리고 작업 노드 수를 늘리거나 줄일 수 있습니다. 이때 API, Java SDK 또는 명령줄 클라이언트를 사용하여 실행합니다. 실행 중인 클러스터의 크기를 변경하는 방법에 대한 자세한 내용은 Developer Guide의 Resizing Running Job Flows 섹션을 참조하십시오.

Q: 코어 노드와 작업 노드는 각각 언제 사용할 수 있습니까?

코어 노드는 HDFS의 영구 데이터를 호스팅하므로 삭제할 수 없습니다. 코어 노드는 클러스터가 완료될 때까지 필요한 용량을 유지해야 합니다. 작업 노드는 추가하거나 삭제할 수 있습니다. 또한 HDFS를 포함하지 않으므로, 일시적으로만 필요한 용량에 적합합니다.

Q: 실행 중인 클러스터에서 슬레이브 노드 수를 변경해야 하는 이유는 무엇입니까?

실행 중인 클러스터에서 슬레이브 노드의 수를 변경해야 하는 상황은 여러 가지가 있습니다. 클러스터의 속도가 예상보다 느린 경우 또는 시간 요구 사항이 변경된 경우, 코어 노드의 수를 늘려 클러스터의 성능을 향상할 수 있습니다. 클러스터 단계에 따라 필요한 용량이 다른 경우는 적은 수의 코어 노드로 시작하여 클러스터의 다양한 용량 요구 사항에 따라 작업 노드의 수를 늘리거나 줄일 수 있습니다.

Q: 클러스터 단계 사이에 슬레이브 노드의 수를 자동 변경할 수 있습니까?

예. 사전 정의된 단계를 워크플로에 포함함으로써 필요한 용량이 서로 다른 단계 간에 클러스터의 크기를 자동으로 조정하도록 할 수 있습니다. 모든 단계는 차례대로 실행되기 때문에 이렇게 하면 주어진 클러스터 단계를 실행할 슬레이브 노드의 수를 설정할 수 있습니다.

Q: 다른 IAM 사용자가 내 클러스터에 액세스하도록 허용하려면 어떻게 해야 합니까?

EMR CLI 내의 모든 IAM 사용자가 볼 수 있는 새 클러스터를 생성하려면 클러스터를 생성할 때 --visible-to-all-users 플래그를 추가합니다. 예: elastic-mapreduce --create --visible-to-all-users. Management Console에서 Create Cluster Wizard를 실행하고 Advanced Options 창의 "Visible to all IAM Users"를 선택하면 됩니다.

기존 클러스터를 모든 IAM 사용자가 볼 수 있도록 하려면 EMR CLI를 사용해야 합니다. --set-visible-to-all-users를 사용하고 클러스터 식별자를 지정합니다. 예: elastic-mapreduce --set-visible-to-all-users true --jobflow j-xxxxxxx. 해당 클러스터를 생성한 사용자만 이 작업을 수행할 수 있습니다.

자세한 내용은 EMR Developer Guide의 Configuring User Permissions 섹션을 참조하십시오.

맨 위로 이동 >>


Q: 어떤 Amazon EMR 리소스를 태그할 수 있습니까?

활성화된 Amazon EMR 클러스터에 태그를 추가할 수 있습니다. Amazon EMR 클러스터는 Amazon EC2 인스턴스로 구성되어 있으며, Amazon EMR 클러스터에 추가된 태그는 해당 클러스터에 있는 각각의 활성화된 Amazon EC2 인스턴스에 전파됩니다. 활성화된 클러스터의 일부였으나 이미 종료된 클러스터 또는 Amazon EC2 인스턴스의 경우에는 태그를 추가, 편집 또는 제거할 수 없습니다.

Q: Amazon EMR을 태그 지정할 경우 IAM 사용자의 리소스 기반 권한을 지원합니까?

아니요, Amazon EMR은 태그에 의한 리소스 기반 권한을 지원하지 않습니다. 하지만 Amazon EC2 인스턴스에 전파된 태그는 일반적인 Amazon EC2 태그처럼 작동한다는 점을 명심해야 합니다. 따라서 Amazon EMR에서 전파된 태그가 IAM 정책의 조건에 부합할 경우에는 태그에 Amazon EC2의 IAM 정책이 적용됩니다.

Q: 리소스에 얼마나 많은 태그를 추가할 수 있습니까?

Amazon EMR 클러스터에는 최대 10개의 태그를 추가할 수 있습니다.

Q: 클러스터상의 내 Amazon EMR 태그가 해당 클러스터에 있는 각각의 Amazon EC2 인스턴스에 표시됩니까? 내 Amazon EMR 클러스터에서 태그를 제거하면 각각의 관련 EC2 인스턴스에서 해당 태그가 자동으로 제거됩니까?

네, Amazon EMR은 클러스터에 추가된 태그를 해당 클러스터의 EC2 인스턴스에 전파합니다. Amazon EMR 클러스터에 태그를 추가하면 관련 Amazon EC2 인스턴스에도 나타납니다. 반대로 Amazon EMR 클러스터에서 태그를 제거할 경우, 해당 태그는 관련 Amazon EC2 인스턴스에서도 제거됩니다. 하지만 Amazon EC2에 대한 IAM 정책을 사용하고 있으며 Amazon EMR의 태그 지정 기능을 사용할 계획이라면 Amazon EC2 태그 지정 API CreateTags 및 DeleteTags 사용에 대한 권한이 부여되어야 합니다.

Q: 어떻게 하면 비용 구분을 위해 내 대금 청구서에 내 태그가 표시되도록 할 수 있습니까?

여기에서 AWS 결제 보고서에 사용할 태그를 선택하십시오. 그런 다음 같은 태그 키 값을 가진 리소스를 기준으로 결제 정보를 정리하면 모든 리소스 비용의 합을 볼 수 있습니다.

Q: 어떤 Amazon EC2 인스턴스가 Amazon EMR 클러스터에 포함되어 있는지 어떻게 알 수 있습니까?

Amazon EMR 클러스터와 연관된 Amazon EC2 인스턴스에는 아래와 같이 2개의 시스템 태그가 존재합니다.

  • aws:elasticmapreduce:instance-group-role=CORE
    • Key = instance-group role ; Value = [CORE or TASK] 
  • aws:elasticmapreduce:job-flow-id=j-12345678
    • Key = job-flow-id ; Value = [JobFlowID]

Q: Amazon EC2 인스턴스에서 바로 태그를 편집할 수 있습니까?

네, 태그는 Amazon EMR 클러스터의 일부인 Amazon EC2 인스턴스에서 바로 추가 또는 제거할 수 있습니다. 하지만 연결된 Amazon EC2 인스턴스에 직접 변경한 내용은 Amazon EMR의 태그 지정 시스템과 동기화되지 않으므로 이 방법을 권장하지는 않습니다. 연결된 Amazon EC2 인스턴스와 클러스터 모두 올바른 태그를 가질 수 있도록 Amazon EMR 클러스터의 태그는 Amazon EMR 콘솔, CLI 또는 API에서 추가 또는 제거하는 것이 좋습니다.

맨 위로 이동 >>

Q: 이전에는 할 수 없었던 작업 중 이제 수행할 수 있는 작업은 무엇입니까?

대부분 EC2 인스턴스에는 인스턴스에 부착된 고정 스토리지 용량이 있으며 이를 "인스턴스 스토어"라고 부릅니다. 이제 Amazon EMR 클러스터의 인스턴스에 EBS 볼륨을 추가함으로써 인스턴스 스토리지를 사용자 정의할 수 있습니다. 이 기능을 사용하면 M4 및 C4와 같은 EBS 전용 인스턴스 패밀리에서 Amazon EMR 클러스터를 실행할 수 있습니다.

Q: Amazon EMR에서 실행되는 인스턴스에 EBS 볼륨을 추가하면 어떤 이점이 있습니까?

다음과 같은 시나리오에서 인스턴스에 EBS 볼륨을 추가하면 이점을 활용할 수 있습니다.

  1. 처리를 위해서는 현재 인스턴스에서 제공하는 대용량 HDFS(또는 로컬) 스토리지가 필요한 경우입니다. EBS 볼륨이 지원되면, 인스턴스가 제공하는 컴퓨팅 파워와 비례하여 인스턴스의 스토리지 용량을 사용자 정의할 수 있습니다. 인스턴스의 스토리지를 최적화함으로써 비용을 절감할 수 있습니다.
  2. 예전 세대 인스턴스 패밀리(M1 및 M2 패밀리 등)를 실행하고 있으며 최신 세대 인스턴스 패밀리로 전환하려고 하지만, 차세대 인스턴스 유형의 노드당 스토리지 가용성으로 인해 제약을 받는 경우입니다. 이제 새로운 세대 인스턴스 유형을 모두 사용하고 EBS 볼륨을 추가하여 스토리지를 최적화할 수 있습니다.  내부 벤치마크 결과는 예전 세대 인스턴스 패밀리(M1 또는 M2)에서 새로운 세대 인스턴스(M4, C4 및 R3)로 전환하면 비용을 절감하고 성능을 향상할 수 있음을 보여줍니다.  Amazon EMR 팀은 적절한 결론에 도달하도록 애플리케이션을 실행하기를 권장합니다.
  3. 차세대 EBS 전용 M4 및 C4 패밀리로 마이그레이션하거나 이를 사용하고자 하는 경우입니다.

Q: 클러스터가 종료된 후에도 EBS 볼륨에 데이터를 유지할 수 있습니까?

현재는 클러스터가 종료되면 Amazon EMR에서 볼륨을 삭제합니다. 클러스터의 수명 주기와 관계없이 데이터를 유지하려는 경우, Amazon S3를 데이터 스토어로 사용하는 것이 좋습니다.

Q: 어떤 종류의 EBS 볼륨을 인스턴스에 부착할 수 있습니까?

Amazon EMR에서는 범용 SSD(GP2), 마그네틱 및 프로비저닝된 IOPS(SSD)와 같은 다양한 EBS 볼륨 유형을 사용할 수 있습니다.

Q: 클러스터를 종료하면 EBS 볼륨은 어떻게 됩니까?

EMR 클러스터가 종료되면 Amazon EMR에서 볼륨을 삭제합니다.

Q: 이미 인스턴스 스토어가 있는 인스턴스에 EBS를 사용할 수 있습니까?

예. 이미 인스턴스 스토어가 있는 인스턴스에 EBS 볼륨을 추가할 수 있습니다.

Q: 실행 중인 클러스터에 EBS 볼륨을 부착할 수 있습니까?

아니요. 현재는 클러스터를 시작할 때만 EBS 볼륨을 추가할 수 있습니다.

Q: 클러스터의 볼륨으로 스냅샷을 생성할 수 있습니까?

EBS API를 사용하면 클러스터의 스냅샷을 생성할 수 있습니다. 하지만 현재 Amazon EMR은 스냅샷에서 복원하는 것을 허용하지 않습니다.

Q: 암호화된 EBS 볼륨을 사용할 수 있습니까?

아니요. 현재 릴리스에서는 암호화된 볼륨은 지원되지 않습니다.

Q: 부착된 볼륨을 실행 중인 클러스터에서 제거하면 어떻게 됩니까?

실행 중인 클러스터에서 부착된 볼륨을 제거하면 이는 노드 장애로 처리됩니다.  Amazon EMR에서 동일한 노드와 EBS 볼륨으로 이를 교체하게 됩니다.

맨 위로 이동 >>


Q: Apache Hive란 무엇입니까?

Hive는 오픈 소스 데이터 웨어하우스이며, 하둡에서 실행하는 분석 패키지입니다. Hive는 Hive QL이라는 SQL 기반 언어로 작동합니다. 이에 따라 사용자는 Amazon S3에 저장된 데이터 소스를 구축, 요약 및 쿼리할 수 있습니다. Hive QL은 표준 SQL보다 많은 기능을 제공하며, map/reduce 함수와 Json 및 Thrift와 같은 복잡하고 확장 가능한 사용자 정의 데이터 유형에 최고의 지원을 제공합니다. 이 기능을 통해 텍스트 문서와 로그 파일 같은 복잡한 비정형 데이터 소스도 처리할 수 있습니다. Hive를 사용하면, Java로 작성되고 Amazon S3 스토리지를 통해 배포된 사용자 정의 함수를 사용하여 확장할 수 있습니다.

Q: Amazon EMR에서 실행되는 Hive로 어떤 작업을 할 수 있습니까?

Amazon EMR에서 Hive를 사용하면 Amazon EMR에서 사용할 수 있는 친숙한 유사 SQL 언어와 사용하기 쉬운 도구로 정교한 데이터 처리 애플리케이션을 구현할 수 있습니다. Amazon EMR을 사용하면 Hive 애플리케이션을 안정적인 데이터 웨어하우스로 바꾸어 데이터 분석, 모니터링, 비즈니스 인텔리전스 등의 작업을 수행할 수 있습니다.

Q: Hive는 기존의 RDBMS 시스템과 어떻게 다릅니까?

기존의 RDBMS 시스템은 트랜잭션 의미 체계와 ACID 속성을 제공합니다. 소량의 데이터를 매우 빠르게 검색할 수 있도록 테이블을 인덱싱 및 캐싱하고, 소량의 데이터를 빠르게 업데이트하며, 참조 무결성 제약 조건을 실행합니다. 일반적으로 기존의 RDBMS 시스템은 하나의 대형 컴퓨터에서 실행되며, map이나 reduce 함수의 실행을 지원하지 않습니다. 또한 일반적으로 복잡한 사용자 정의 데이터 유형을 지원하지 않습니다.

대조적으로, Hive는 MapReduce를 사용하여 유사 SQL 쿼리를 실행합니다. 결과적으로 시스템의 클러스터에서 실행되는 동안 전체 테이블을 검색하도록 최적화되었기 때문에 막대한 양의 데이터를 처리할 수 있습니다. Hive는 분할된 테이블을 제공하여 실행 중인 쿼리에 적합한 경우 전체 테이블이 아닌 테이블 일부를 검색할 수 있습니다.

기존의 RDMS 시스템은 트랜잭션 의미 체계와 참조 무결성이 필요하며 소소한 업데이트가 수시로 수행되는 경우에 가장 적합합니다. Hive는 대규모 데이터 세트의 오프라인 보고, 변환, 분석에 가장 적합합니다. 예를 들어 대규모 웹 사이트의 클릭 스트림 분석, 웹 사이트의 수집 등이 있습니다.

일반적인 사용법 중 하나로 RDBMS 시스템에서 Amazon S3로 데이터 내보내기가 있습니다. 이 경우 Hive를 실행하는 Amazon EMR 클러스터를 사용하여 오프라인 분석을 할 수 있습니다.

Q: Amazon EMR에서 실행되는 Hive를 시작하려면 어떻게 해야 합니까?

여기(http://developer.amazonwebservices.com/connect/entry.jspa?externalID=2862)에서 문서화된 자습서 또는 동영상 자습서를 참조하여 쉽게 시작할 수 있습니다.

Q: Amazon EMR 전용 Hive에 새로운 기능이 있습니까?

예. Amazon EMR과 함께 사용하면 Hive를 더욱 강화하는 다음의 네 가지 새로운 기능이 있습니다.

a/ Amazon S3에서 자동으로 테이블 일부를 로딩하는 기능. 이전에는 테이블 일부를 가져오려면 테이블 내의 개별 파티션에 대한 별도의 테이블 변환 명령문이 필요했습니다. Amazon EMR은 현재 Hive 언어에 대한 새로운 명령문 유형인 "alter table recover partitions”를 지원합니다. 이 명령문을 사용하면 공유된 메타 데이터 스토리지를 관리할 필요 없이 손쉽게 테이블을 다수의 클러스터로 동시에 가져올 수 있습니다. 이 기능을 사용하여 어떤 외부 프로세스가 로그 파일과 같은 데이터를 보관하고 있는지 테이블에서 읽을 수 있습니다.

b/ 오프 인스턴스 메타데이터 스토어를 지정하는 기능. Hive가 스키마 정보를 보관하는 메타데이터 스토어는 기본적으로 마스터 노드에 위치하며, 클러스터가 종료되면 삭제됩니다. 이 기능을 사용하면 EC2에서 이미 실행 중인 MySQL 인스턴스 등을 사용하여 메타데이터 스토어의 위치를 재정의할 수 있습니다.

c/ Amazon S3에 데이터를 직접 작성하는 기능. Amazon S3의 테이블에 데이터를 쓸 때, Amazon EMR에 설치된 Hive 버전은 임시 파일을 사용하지 않고 Amazon S3에 직접 씁니다. 이렇게 하면 성능이 크게 개선됩니다. 그러나 Hive 측면에서 보면 HDFS와 S3가 각기 다르게 동작하는 것을 의미합니다. 테이블이 Amazon S3에 있는 경우 동일한 테이블에 대해 동일한 명령문을 읽거나 쓸 수 없습니다. S3에 있는 테이블을 업데이트하려면 클러스터의 로컬 HDFS 파일 시스템에 임시 테이블을 생성하고 결과를 테이블에 쓴 다음 Amazon S3에 복사합니다.

d/ Amazon S3에 있는 리소스에 액세스하는 기능. Amazon EMR에 설치된 버전의 Hive를 사용하여 사용자 정의 map 및 reduce 작업에 대한 스크립트 또는 Amazon S3에 있는 추가 라이브러리 같은 리소스를 Hive 스크립트에서 직접 참조할 수 있습니다(예: add jar s3://elasticmapreduce/samples/hive-ads/libs/jsonserde.jar).

Q: 어떤 유형의 Hive 클러스터를 지원합니까?

Hive는 두 가지 유형(대화형 및 배치)의 클러스터를 지원합니다. 대화형 모드에서는 고객이 클러스터를 시작하고, 마스터 노드에서 직접 대화형 Hive 스크립트를 실행할 수 있습니다. 일반적으로 이 모드는 임시 데이터 분석 및 애플리케이션 개발에 사용됩니다. 배치 모드에서는 Hive 스크립트를 Amazon S3에 저장하여 클러스터를 시작할 때 참조합니다. 일반적으로 배치 모드는 보고서 생성과 같은 반복 가능한 실행에 사용됩니다.

Q: Hive 클러스터를 시작하려면 어떻게 해야 합니까?

배치 클러스터 및 대화형 클러스터는 모두 AWS Management Console, EMR 명령줄 클라이언트 또는 API에서 시작할 수 있습니다. Hive 클러스터의 시작 방법에 대한 자세한 내용은 Developer Guide의 Using Hive 섹션을 참조하십시오.

Q: Hive와 PIG는 언제 사용해야 합니까?

Hive와 PIG는 높은 수준의 데이터 처리 언어를 제공하고, 대규모 데이터 세트에서 실행되는 복잡한 데이터 유형을 지원합니다. Hive 언어는 SQL의 변형으로서, SQL과 관계형 데이터베이스에 이미 익숙한 사람에게 더 편리합니다. Hive는 분할된 테이블을 지원하므로, Amazon EMR 클러스터는 전체 테이블을 검색하는 것이 아니라 실행 중인 쿼리와 관련된 테이블 일부만 검색할 수 있습니다. PIG와 Hive는 둘 다 쿼리 계획 최적화 기능을 제공합니다. PIG는 전체 스크립트에서 쿼리를 최적화할 수 있지만 Hive는 명령문 수준에서 쿼리를 최적화합니다.

마지막으로, Hive 또는 PIG 중 어느 것을 선택할 것인지는 애플리케이션 도메인의 정확한 요구 사항 및 구현자나 쿼리 작성자가 선호하는 것을 고려하여 결정합니다.

Q: Amazon EMR은 어떤 버전의 Hive를 지원합니까?

Amazon EMR은 버전 0.11.0을 비롯한 여러 버전의 Hive를 지원합니다.

Q: 두 클러스터에서 동시에 하나의 테이블에 쓰기 작업을 할 수 있습니까?

아니요. Hive는 테이블에 대한 동시 쓰기를 지원하지 않습니다. 동일한 테이블에 대한 동시 쓰기를 하거나 쓰기를 수행하는 테이블에서는 읽기 작업을 수행하지 마십시오. Hive는 동시에 읽기/쓰기를 하거나 동시에 쓰기/쓰기를 하면 비결정적인 동작을 합니다.

Q: 클러스터 간에 데이터를 공유할 수 있습니까?

예. 스크립트 상단에 'create external table' 명령문을 작성하여 Hive 스크립트에서 Amazon S3의 데이터를 읽을 수 있습니다. 액세스하는 각 외부 리소스에 대한 테이블 생성 명령문을 작성해야 합니다.

Q: 대규모 클러스터를 하나 실행하고 여러 사용자와 공유해야 합니까? 아니면 소규모 클러스터를 여러 개 실행해야 합니까?

Amazon EMR은 두 가지 방법을 모두 사용할 수 있도록 고유한 기능을 제공합니다. 하나의 대규모 클러스터는 정기적인 배치성 워크로드를 처리하는 데 더욱 효율적일 수 있습니다. 반면에 임시 쿼리 또는 시간에 따라 다른 워크로드가 필요할 경우, Amazon S3에 저장된 데이터 소스를 공유하는 특정 작업에 맞게 조정된 몇 개의 클러스터를 별도로 생성할 수 있습니다.

Q: 내 로컬 파일 시스템에 있는 스크립트 또는 jar 리소스에 액세스할 수 있습니까?

아니요. 스크립트 또는 jar을 Amazon S3 또는 클러스터 마스터 노드에 업로드해야 참조할 수 있습니다. Amazon S3에 업로드하기 위해 s3cmd, jets3t 또는 S3Organizer 같은 도구를 사용할 수 있습니다.

Q: 여러 Hive 쿼리를 실행하는 영구 클러스터를 실행할 수 있습니까?

예. Hive 단계 사이에 종료되지 않도록 클러스터를 수동 종료 모드로 실행합니다. 데이터 손실의 위험을 줄이기 위해 Amazon S3에 있는 중요한 데이터를 정기적으로 관리하십시오. 새 클러스터에 정기적으로 작업을 전송하여 마스터 노드의 장애 복구 프로세스를 테스트하는 것이 좋습니다.

Q: 동일한 소스 데이터에서 여러 사용자가 Hive 단계를 수행할 수 있습니까?

예. 별도의 클러스터에서 여러 사용자가 실행하는 Hive 스크립트에는 "create external table" 명령문이 포함되어 있으므로 Amazon S3에 있는 소스 데이터를 동시에 가져올 수 있습니다.

Q: 동일한 클러스터에서 여러 사용자가 쿼리를 실행할 수 있습니까?

예. 배치 모드에서는 단계가 순서로 구분되어 있습니다. 여러 사용자가 Hive 단계를 동일한 클러스터에 추가할 수 있습니다. 그러나 단계는 차례대로 실행됩니다. 대화형 모드에서는 여러 사용자가 동일한 클러스터에 로그온하고 Hive 명령문을 동시에 실행할 수 있습니다.

Q: 여러 AWS 사용자 간에 데이터를 공유할 수 있습니까?

예. 여기(http://docs.amazonwebservices.com/AmazonS3/latest/index.html?S3_ACLs.html)에 설명된 표준 Amazon S3 공유 메커니즘을 사용하여 데이터를 공유할 수 있습니다.

Q: Hive는 JDBC 액세스를 지원합니까?

예. Hive는 JDBC 드라이브를 제공합니다. 이 드라이브는 프로그래밍 방식으로 Hive 명령문을 실행하는 데 사용할 수 있습니다. 클러스터에서 JDBC 서비스를 시작하려면 Amazon EMR 명령줄 클라이언트에서 선택적 파라미터를 제공해야 합니다. 또한 보안 그룹에서 외부 연결을 허용하지 않으므로 SSH 터널을 설정해야 합니다.

Q: EMR AMI에서 패키지를 업데이트하려면 어떤 절차를 수행해야 합니까?

보안 패치 등 Debian/stable에서 엄선한 패키지 집합을 실행합니다. Debian/stable에서 업그레이드할 때마다 당사는 패키지를 업그레이드합니다. 이미지의 “r-recommended” 패키지는 Debian/stable을 최신 상태로 유지합니다(http://packages.debian.org/search?keywords=r-recommended).

Q: EMR 클러스터에서 내 패키지를 업데이트할 수 있습니까?

예. 부트스트랩 작업을 사용하여 귀하의 클러스터에 있는 패키지에 대한 업데이트를 설치할 수 있습니다.

Q: Hive를 사용하여 DynamoDB 데이터를 처리할 수 있습니까?

예. DynamoDB 테이블을 기반으로 외부 Hive 테이블을 정의하면 됩니다. 그런 다음 Hive를 이용하여 DynamoDB에 저장된 데이터를 분석하고, 결과를 다시 DynamoDB에 로드하거나 Amazon S3에 저장할 수 있습니다. 자세한 내용은 Developer Guide를 참조하십시오.

맨 위로 이동 >>


 

Q: Impala란 무엇입니까?

Impala는 SQL 구문을 사용하는 대화형 임시 쿼리를 위한 하둡 에코시스템의 오픈 소스 도구입니다. Impala는 MapReduce를 사용하지 않고 전통적 RDBMS(관계형 데이터베이스 관리 시스템)의 엔진과 비슷한 MPP(대량 병렬 처리) 엔진을 사용합니다. 이 아키텍처에서는 사용자가 HDFS 또는 HBase 테이블의 데이터를 아주 빠르게 쿼리할 수 있으며, 런타임 시 스키마를 제공하고 다양한 데이터 유형을 처리하는 하둡 기능을 활용할 수 있습니다. 따라서 Impala에서는 지연 시간이 짧은 대화형 분석이 가능합니다. 또한, Impala는 Hive 메타스토어를 사용해 파티션 이름 및 데이터 유형 등과 같은 입력 데이터에 대한 정보를 보관합니다. 그리고 Amazon EMR의 Impala는 하둡 2.x 이상을 실행하는 AMI가 필요합니다. Impala에 대해 더 알아보려면 여기를 클릭하십시오.

Q: Amazon EMR에서 실행되는 Impala로 어떤 작업을 수행할 수 있습니까?

Amazon EMR에서 Hive를 사용할 때와 마찬가지로 Amazon EMR에서 Impala를 사용하면 SQL 구문을 통해 정교한 데이터 처리 애플리케이션을 구현할 수 있습니다. 하지만 Impala는 특정 사용 사례의 경우 더욱 빠른 성능을 제공하도록 구축되었습니다(아래 참조). Amazon EMR에서는 Impala를 안정적인 데이터 웨어하우스로 사용하여 데이터 분석, 모니터링, 비즈니스 인텔리전스 등의 작업을 수행할 수 있습니다. 다음은 여기에 해당하는 3가지 사용 사례입니다.

  • 장기 실행 중인 클러스터에서 Hive 대신 Impala를 사용해 임시 쿼리를 수행하십시오. Impala는 대화형 쿼리의 시간을 수 초로 줄여주므로 빠른 조사에 적합한 도구입니다. Impala는 배치성 MapReduce 워크플로와 동일한 클러스터에서 실행할 수 있으며, 장기 실행 중인 분석 클러스터에서 Hive 및 Pig와 함께 사용하거나 Impala 쿼리에 맞게 특별히 조정된 클러스터를 생성할 수도 있습니다.
  • 일시적인 Amazon EMR 클러스터에서 배치성 ETL 작업에는 Hive 대신 Impala를 사용하십시오. Impala는 많은 종류의 쿼리에 대해 Hive보다 빠르므로 이러한 워크로드에 대해 더 나은 성능을 제공합니다. Impala는 Hive와 마찬가지로 SQL을 사용하므로 Hive에서 Impala로 손쉽게 쿼리를 수정할 수 있습니다.
  • Impala를 타사 비즈니스 인텔리전스 도구와 함께 사용하십시오. 클라이언트 ODBC 또는 JDBC 드라이버를 클러스터와 연결하여 강력한 시각화 도구 및 대시보드용 엔진으로 Impala를 사용하십시오.

배치 Impala 클러스터와 대화형 Impala 클러스터는 모두 Amazon EMR에서 생성할 수 있습니다. 예를 들면 장기 실행 중인 Amazon EMR 클러스터에서 임시 대화형 쿼리를 위해 Impala를 사용하거나, 빠른 ETL 워크플로를 위해 일시적인 Impala 클러스터를 사용할 수 있습니다.

Q: Impala와 전통적 RDBMS의 차이점은 무엇입니까?

전통적 관계형 데이터베이스는 트랜잭션 의미 체계와 ACID 속성(데이터베이스 원자성, 일관성, 격리성, 내구성)을 제공합니다. 또한, 테이블을 인덱싱하고 캐시할 수 있으므로, 적은 양의 데이터를 아주 빠르게 검색할 수 있고, 적은 양의 데이터에 대한 빠른 업데이트를 제공하며, 참조 무결성 제약 조건을 적용합니다. 전통적 RDBMS는 일반적으로 대형 머신 한 대에서 실행되며, 복잡한 사용자 정의 데이터 유형에 대한 작업 수행을 지원하지 않습니다. Impala도 전통적 RDBMS과 비슷한 분산형 쿼리 시스템을 사용하기는 하지만, 쿼리 데이터를 HDFS에 저장하며 Hive 메타스토어를 사용해 입력 데이터에 대한 정보를 보관합니다. Hive와 마찬가지로 쿼리에 대한 스키마는 런타임 시 제공되기 때문에 스키마 변경이 쉽습니다. 또한, Impala는 복잡한 데이터 유형을 다양하게 쿼리하고 사용자 정의 함수도 실행할 수 있습니다. 하지만 Impala는 인 메모리로 데이터를 처리하기 때문에 최고의 성능을 위해서는 클러스터의 하드웨어 제한을 이해하고 쿼리를 최적화하는 것이 중요합니다.

Q: Impala와 Hive의 차이점은 무엇입니까?

Impala는 MPP(대량 병렬 처리) 엔진을 사용해 SQL 쿼리를 실행하며, Hive는 MapReduce를 사용해 SQL을 실행합니다. Impala는 MapReduce 작업을 생성하여 Hive의 오버헤드를 방지하기 때문에 Hive보다 쿼리 시간이 줄어듭니다. 하지만 Impala는 상당한 양의 메모리 리소스를 사용하며, 클러스터의 가용 메모리 공간은 쿼리가 사용할 수 있는 메모리의 양을 제약합니다. Hive에서는 이러한 제약 사항이 없으며, 같은 하드웨어로 더 큰 데이터 세트를 처리할 수 있습니다. 일반적으로 Impala는 빠른 대화형 쿼리에 사용하고, Hive는 대형 데이터 세트의 ETL 워크로드를 처리하는 데 사용해야 합니다. Impala는 빠른 성능을 낼 수 있도록 구축되었기 때문에 임시 조사에 매우 적합하지만 비싼 쿼리를 실행하거나 아주 큰 데이터 세트를 처리하는 데 상당히 많은 양의 메모리가 필요합니다. 이러한 제약 조건 때문에 속도보다 완료가 더욱 중요한 워크로드의 경우 Hive를 사용하는 것이 좋습니다. Impala와 Hive 간의 몇 가지 성능 벤치마크를 확인하려면 여기를 클릭하십시오.

Q: 하둡 1을 사용할 수 있습니까?

아니요, Impala는 하둡 2가 필요하며, 하둡 1.x를 구동하는 AMI의 클러스터에서는 실행되지 않습니다.

Q: Impala 클러스터에는 어떤 인스턴스 유형을 사용해야 합니까?

Impala를 가장 잘 활용하려면 클러스터에 대해 메모리가 최적화된 인스턴스를 사용하는 것이 좋습니다. 하지만 앞서 보여드린 것처럼 표준 인스턴스 유형을 사용해도 Hive보다 더욱 나은 성능을 제공합니다. Amazon Elastic MapReduce Developer Guide의 Performance Testing and Query Optimization 섹션을 참조하면 데이터 세트와 쿼리 유형에 따라 클러스터에 필요한 메모리 리소스를 대략적으로 알아볼 수 있습니다. 압축 유형, 파티션 및 실제 쿼리(조인 수, 결과 크기 등)는 모두 필요한 메모리의 한 축을 구성합니다. EXPLAIN 명령문을 사용하면 Impala 쿼리에 필요한 메모리와 기타 리소스를 추정할 수 있습니다.

Q: 쿼리 시 메모리가 부족하면 어떻게 됩니까?

메모리가 부족하게 되면 쿼리가 실패하고 영향을 받은 노드에 설치된 Impala 데몬이 종료됩니다. 그런 다음 Amazon EMR은 Impala가 다른 쿼리를 실행할 수 있도록 해당 노드의 데몬을 다시 시작합니다. 전체 노드가 종료되는 것이 아니라 노드에서 실행 중인 데몬만 종료되기 때문에 노드 HDFS의 데이터는 사용할 수 있는 상태로 유지됩니다. Impala를 통한 임시 분석의 경우, 쿼리 시간은 초 단위인 경우가 많습니다. 따라서 쿼리가 실패하면 빨리 문제를 발견하고 새로운 후속 쿼리를 빠르게 제출할 수 있습니다.

Q: Impala는 사용자 정의 함수를 지원합니까?

네, Impala는 UDF(사용자 정의 함수)를 지원합니다. Impala용 UDF는 Java나 C++를 통해 작성할 수 있습니다. 또한, Hive용으로 생성된 사용자 정의 집계 함수나 UDF를 수정할 수도 있습니다. Hive UDF에 대한 정보를 확인하려면 여기를 클릭하십시오.

Q: Impala가 쿼리할 데이터는 어디에 저장되어 있습니까?

Impala는 HDFS 또는 HBase 테이블의 데이터를 쿼리합니다.

Q: 클러스터에서 Impala와 MapReduce를 동시에 실행할 수 있습니까?

네, Impala와 MapReduce를 동시에 실행하는 다중 테넌트 클러스터를 설정할 수 있습니다. 하지만 하둡 2.x에서 YARN을 사용하는 각각의 애플리케이션에 대한 리소스 할당(메모리, 디스크, CPU)에 특히 주의해야 합니다. 리소스는 각 애플리케이션에서 실행할 작업의 필요에 따라 할당되어야 합니다.

Q: Impala는 ODBC와 JDBC 드라이버를 지원합니까?

ODBC 드라이버를 사용할 수 있지만, Impala는 JDBC를 통해 연결된 타사 도구를 위한 엔진으로도 매우 뛰어난 성능을 발휘합니다. Impala 클라이언트 JDBC 드라이버는 http://elasticmapreduce.s3.amazonaws.com/libs/impala/1.2.1/impala-jdbc-1.2.1.zip에서 다운로드하여 설치할 수 있습니다. 비즈니스 인텔리전스 도구가 설치된 클라이언트 컴퓨터에서 JDBC 드라이버를 포트 21050에서 VPN 또는 SSH를 사용해 Impala 클러스터의 마스터 노드에 연결하십시오. 자세한 정보는 마스터 노드로 SSH 터널 열기를 참조하십시오.

맨 위로 이동 >>


Q: Apache Pig란 무엇입니까?

Pig는 하둡에서 실행되는 오픈 소스 분석 패키지입니다. Pig는 Pig Latin이라는 유사 SQL 언어로 작동합니다. 이를 통해 사용자는 Amazon S3에 저장된 데이터 소스를 구축, 요약 및 쿼리할 수 있습니다. SQL과 유사한 작업뿐만 아니라 Pig Latin은 또한 map/reduce 함수와 복잡하고 확장 가능한 사용자 정의 데이터 유형에 최고의 지원을 제공합니다. 이 기능을 통해 텍스트 문서와 로그 파일 같은 복잡한 비정형 데이터 소스도 처리할 수 있습니다. Pig를 사용하면, 사용자가 Java로 작성되고 Amazon S3 스토리지를 통해 배포된 사용자 정의 함수를 사용하여 확장할 수 있습니다.

Q: Amazon EMR에서 실행되는 Pig로 어떤 작업을 수행할 수 있습니까?

Amazon EMR에서 Pig를 사용하면 Amazon EMR에서 사용할 수 있는 친숙한 유사 SQL 언어와 사용하기 쉬운 도구로 정교한 데이터 처리 애플리케이션을 구현할 수 있습니다. Amazon EMR을 사용하면 Pig 애플리케이션을 안정적인 데이터 웨어하우스로 바꾸어 데이터 분석, 모니터링, 비즈니스 인텔리전스 등의 작업을 수행할 수 있습니다.

Q: Amazon EMR에서 실행되는 Pig를 시작하려면 어떻게 해야 합니까?

여기(http://developer.amazonwebservices.com/connect/entry.jspa?externalID=2735&categoryID=269)에서 문서화된 자습서 또는 동영상 자습서를 참조하면 쉽게 시작할 수 있습니다.

Q: Amazon EMR 전용 Pig에 새로운 기능이 있습니까?

예. Amazon EMR과 함께 사용하면 Pig를 더욱 강화하는 다음의 세 가지 새로운 기능이 있습니다.

a/ 여러 파일 시스템 액세스 기능. 기본적으로 Pig 작업은 하나의 원격 파일 시스템에만 액세스할 수 있으며, 입력, 출력 및 임시 데이터용 S3 버킷 또는 HDFS 스토어가 파일 시스템으로 사용됩니다. EMR은 모든 작업에서 필요한 만큼 많은 파일 시스템에 액세스할 수 있도록 Pig를 확장했습니다. 그 이점 중 하나는 임시 작업 내 데이터가 로컬 HDFS에 항상 저장되어 있어 성능이 향상된다는 것입니다.

b/ S3에서 리소스 로딩 기능. EMR은 S3 파일 시스템으로부터 사용자 정의 JAR 및 스크립트를 가져올 수 있도록 Pig를 확장했습니다(예: "REGISTER s3:///my-bucket/piggybank.jar").

c/ 문자열과 날짜 시간 처리를 위한 추가 Piggybank 함수. 이 함수에 대한 설명은 여기 http://developer.amazonwebservices.com/connect/entry.jspa?externalID=2730를 참조하십시오.

Q: 어떤 유형의 Pig 클러스터를 지원합니까?

Pig는 두 가지 유형(대화형 및 배치)의 클러스터를 지원합니다. 대화형 모드에서는 고객이 클러스터를 시작하고, 마스터 노드에서 직접 대화형 Pig 스크립트를 실행할 수 있습니다. 일반적으로 이 모드는 임시 데이터 분석 및 애플리케이션 개발에 사용됩니다. 배치 모드에서는 Pig 스크립트를 Amazon S3에 저장하여 클러스터를 시작할 때 참조합니다. 일반적으로 배치 모드는 보고서 생성과 같은 반복 가능한 실행에 사용됩니다.

Q: Pig 클러스터를 시작하려면 어떻게 해야 합니까?

배치 클러스터 및 대화형 클러스터는 모두 AWS Management Console, EMR 명령줄 클라이언트 또는 API에서 시작할 수 있습니다.

Q: Amazon EMR은 어떤 버전의 Pig를 지원합니까?

Amazon EMR은 버전 0.11.1을 비롯한 여러 버전의 Pig를 지원합니다.

Q: 두 클러스터에서 동시에 하나의 S3 버킷에 쓰기 작업을 할 수 있습니까?

예, 두 클러스터에서 동시에 동일한 버킷에 쓰기 작업을 할 수 있습니다.

Q: 클러스터 간에 S3의 입력 데이터를 공유할 수 있습니까?

예, 두 클러스터에서 S3에 있는 동일한 데이터를 동시에 읽을 수 있습니다.

Q: 여러 AWS 사용자 간에 데이터를 공유할 수 있습니까?

예. 여기(http://docs.amazonwebservices.com/AmazonS3/latest/index.html?S3_ACLs.html)에 설명된 표준 Amazon S3 공유 메커니즘을 사용하여 데이터를 공유할 수 있습니다.

Q: 대규모 클러스터를 하나 실행하고 여러 사용자와 공유해야 합니까? 아니면 소규모 클러스터를 여러 개 실행해야 합니까?

Amazon EMR은 두 가지 방법을 모두 사용할 수 있도록 고유한 기능을 제공합니다. 하나의 대규모 클러스터는 정기적인 배치성 워크로드를 처리하는 데 더욱 효율적일 수 있습니다. 반면에 임시 쿼리 또는 시간에 따라 다른 워크로드가 필요할 경우, Amazon S3에 저장된 데이터 소스를 공유하는 특정 작업에 맞게 조정된 몇 개의 클러스터를 별도로 생성할 수 있습니다.

Q: 내 로컬 파일 시스템에 있는 스크립트 또는 jar 리소스에 액세스할 수 있습니까?

아니요. 스크립트 또는 jar을 Amazon S3 또는 클러스터 마스터 노드에 업로드해야 참조할 수 있습니다. Amazon S3에 업로드하기 위해 s3cmd, jets3t 또는 S3Organizer 같은 도구를 사용할 수 있습니다.

Q: 여러 Pig 쿼리를 실행하는 영구 클러스터를 실행할 수 있습니까?

예. Pig 단계 사이에 종료되지 않도록 클러스터를 수동 종료 모드로 실행합니다. 데이터 손실의 위험을 줄이기 위해 Amazon S3에 있는 중요한 데이터를 정기적으로 관리하십시오. 새 클러스터에 정기적으로 작업을 전송하여 마스터 노드의 장애 복구 프로세스를 테스트하는 것이 좋습니다.

Q: Pig는 JDBC 액세스를 지원합니까?

아니요. Pig는 JDBC를 통한 액세스를 지원하지 않습니다.

맨 위로 이동 >>


Q: Apache HBase란 무엇입니까?

HBase는 Google의 BigTable을 본떠서 만든 비관계형 분산 오픈 소스 데이터베이스입니다. 이 데이터베이스는 Apache Software Foundation의 하둡 프로젝트의 일부로 개발되었으며, 하둡 분산 파일 시스템(HDFS)에서 실행되어 하둡에 BigTable과 같은 기능을 제공합니다. HBase는 열 기반 압축 및 저장을 사용하여 다량의 스파스 데이터를 결함 없이 효율적으로 저장할 수 있도록 지원합니다. 또한 HBase는 데이터가 디스크가 아닌 메모리 안에 저장되므로 데이터를 빠르게 조회할 수 있습니다. HBase는 순차 쓰기 작업에 최적화되어 있으며 배치 처리 삽입, 업데이트 및 삭제에 매우 유용합니다. HBase는 파일 시스템을 공유하고 하둡 작업에 직접 입력 및 출력하는 역할을 하는 등 하둡과 함께 원활하게 작동합니다. HBase는 또한 Apache Hive와 통합하여 HBase 테이블에 대한 유사 SQL 쿼리, Hive 기반 테이블과의 조인 및 Java Database Connectivity(JDBC)에 대한 지원을 활성화할 수 있습니다.

Q: HBase에 Amazon EMR에서만 제공되는 새로운 기능이 있습니까?

Amazon EMR에서는 HBase를 Amazon S3에 백업(전체 또는 증분, 수동 또는 자동)하고 이전에 생성한 백업에서 복원할 수 있습니다. HBase 및 EMR에 대해 자세히 알아보십시오.

Q: Amazon EMR은 어떤 버전의 HBase를 지원합니까?

Amazon EMR은 HBase 0.94.7 및 HBase 0.92.0을 지원합니다. HBase 0.94.7을 사용하려면 AMI 버전 3.0.0을 지정해야 합니다. CLI를 사용하는 경우에는 버전 2013-10-07 이상을 사용해야 합니다.

맨 위로 이동 >>


Q: Kinesis로 연결되는 EMR 커넥터로 무엇을 할 수 있습니까?

커넥터는 EMR에서 Kinesis 스트림의 데이터를 직접 읽고 쿼리할 수 있도록 합니다. 이제 Hive, Pig, MapReduce, 하둡 스트리밍, Cascading과 같은 기존 하둡 에코시스템을 사용하여 Kinesis 스트림의 배치성 프로세스를 수행할 수 있습니다.

Q: Kinesis로 연결되는 EMR 커넥터로 이전에는 하지 못했던 어떤 작업을 할 수 있습니까?

Kinesis 스트림의 데이터를 읽고 처리하기 위해서는 사용자가 개별 스트림 처리 애플리케이션을 작성하고, 배포하고, 유지 관리해야 했습니다. 이러한 작업에는 시간과 노력이 소요됩니다. 하지만 이 커넥터를 사용하면 간단한 Hive 또는 Pig 스크립트를 작성하여 Kinesis 스트림을 읽고 분석할 수 있습니다. 즉, SQL을 사용하여 Kinesis 스트림을 분석할 수 있습니다! 물론, 다른 하둡 에코시스템 도구도 사용할 수 있습니다. 새로운 처리 애플리케이션을 개발하거나 유지 관리할 필요가 없습니다.

Q: 누가 이 기능을 유용하게 사용하게 됩니까?

다음 사용자 유형은 이 통합을 유용하게 사용할 수 있습니다.

  • 광범위한 하둡 에코시스템 도구 세트를 활용하여 Kinesis 스트림을 분석하는 데 관심이 있는 하둡 사용자.
  • 스트림 처리 및 Kinesis 데이터의 ETL을 준비하고 실행하기 위한 간편한 방법을 찾고 있는 Kinesis 사용자.
  • SQL(Hive를 통해) 또는 Pig와 같은 스크립팅 언어와 같은 친숙한 도구를 사용하여 Kinesis 스트림의 데이터를 임시 분석하려 하는 비즈니스 분석가 및 IT 전문가.

Q: 이러한 통합에 대한 사용 사례에는 무엇이 있습니까?

이러한 통합으로 지원되는 대표적 사용 사례는 다음과 같습니다.

  • 스트리밍 로그 분석: 스트리밍 웹 로그를 분석하여 리전, 브라우저 및 액세스 도메인별로 몇 분마다 상위 10개의 오류 유형 목록을 생성할 수 있습니다.
  • 복잡한 데이터 처리 워크플로: Kinesis 스트림을 S3, DynamoDB 테이블 및 HDFS에 저장된 데이터와 조인할 수 있습니다. Kinesis의 클릭스트림 데이터와 DynamoDB 테이블에 저장된 광고 캠페인 정보를 조인하는 쿼리를 작성하여 특정 웹사이트에 표시되는 광고 카테고리 중 가장 효과적인 카테고리를 파악할 수 있습니다.
  • 임시 쿼리: 빠른 대화형 분석 쿼리를 위해 Kinesis의 데이터를 HDFS로 주기적으로 로드하고 이를 로컬 Impala 테이블로 사용할 수 있도록 합니다.

Q: 커넥터를 사용할 수 있으려면 어떤 EMR AMI 버전이 필요합니까?

EMR의 AMI 버전 3.0.4 이상을 사용해야 합니다.

Q: 이 커넥터는 독립 실행형 도구입니까?

아니요. 이 커넥터는 Amazon 하둡 배포에 포함된 구성 요소이며 EMR AMI 버전 3.0.4 이상에서 사용할 수 있습니다. 이 기능을 사용하려는 고객은 클러스터를 AMI 버전 3.0.4 이상에서 가동하면 됩니다.

Q: EMR이 Kinesis 스트림을 읽는 데 필요한 데이터 형식은 무엇입니까?

EMR Kinesis 통합에서는 특정 데이터 형식만 지원하지는 않습니다. 모든 형식의 데이터를 읽을 수 있습니다. 개별 Kinesis 레코드는 모든 하둡 MapReduce 프레임워크를 사용하여 읽을 수 있는 표준 레코드로 하둡에 제공됩니다. Hive, Pig, Cascading과 같은 개별 프레임워크에는 직렬화 및 역직렬화를 지원하는 내장 구성 요소가 있으므로, 개발자는 사용자 정의 코드를 구현하지 않아도 다양한 형식의 데이터를 손쉽게 쿼리할 수 있습니다. 예를 들어 Hive 사용자의 경우 테이블을 정의할 때 적절한 Hive SerDe를 지정하면, JSON 파일, XML 파일 및 SEQ 파일의 데이터를 읽을 수 있습니다. Pig에는 Loadfunc/Evalfunc, Cascading에는 Tap이라고 하는 유사한 구성 요소가 있습니다. 하둡 사용자는 형식별 코드를 작성하지 않아도 하둡 어댑터의 광범위한 에코시스템을 활용할 수 있습니다. 또한, 사용자 정의 역직렬화 형식을 구현하여 이러한 도구에서 도메인별 데이터를 읽을 수 있습니다.

Q: EMR에서 Hive를 사용하여 Kinesis 스트림을 분석하려면 어떻게 해야 합니까?

Kinesis 스트림을 참조하는 테이블을 생성합니다. 그런 다음 Hive의 다른 테이블과 마찬가지로 해당 테이블을 분석합니다. 자세한 내용은 자습서 페이지를 참조하십시오.

Q: Hive를 사용하여 Kinesis 스트림 데이터를 다른 데이터 소스와 결합하는 쿼리를 생성하려면 어떻게 해야 합니까?

먼저 Kinesis 스트림을 참조하는 테이블을 생성합니다. Hive 테이블이 생성되면, 이를 Amazon S3, Amazon DynamoDB, HDFS와 같은 다른 데이터 소스에 매핑하는 테이블과 조인할 수 있습니다. 이렇게 하면 효과적으로 Kinesis 스트림의 데이터를 다른 데이터 소스에 조인할 수 있습니다.

Q: 이 통합은 Hive에서만 사용할 수 있습니까?

아니요. Hive, Pig, MapReduce, 하둡 스트리밍 및 Cascading을 사용할 수 있습니다.

Q: Kinesis 스트림에서 실행되도록 예약된 작업을 설정하려면 어떻게 해야 합니까?

EMR Kinesis 입력 커넥터는 예약된 주기적 작업을 Cron과 같은 기존의 일정 예약 엔진에서 구성하고 관리할 수 있는 기능을 제공합니다. 예를 들어, N분마다 실행되는 Hive 스크립트를 개발할 수 있습니다. 작업의 구성 파라미터에서 해당 작업에 대한 논리적 이름을 지정할 수 있습니다. 논리적 이름은 EMR Kinesis 입력 커넥터에 해당 작업의 개별 인스턴스가 동일한 주기적 일정의 일부임을 알려주는 레이블입니다. 논리적 이름을 사용하면 프로세스에서 반복을 활용할 수 있습니다. 반복에 대해서는 다음에 설명되어 있습니다.

MapReduce는 배치성 프로세스 프레임워크이므로, EMR을 사용하여 Kinesis 스트림을 분석하도록 지속적인 스트림이 배치로 분할됩니다. 각 배치는 반복이라고 불립니다. 각 반복에는 번호가 할당되며, 이 번호는 0부터 시작합니다. 각 반복의 범위는 시작 시퀀스 번호와 종료 시퀀스 번호로 정의됩니다. 그런 다음 이러한 반복은 EMR에서 순서대로 처리됩니다.

시도가 실패하는 경우, EMR Kinesis 입력 커넥터는 반복의 알려진 시작 시퀀스 번호부터 시작하여, 논리적 이름 내에서 반복을 다시 시도합니다. 이 기능은 동일한 반복에 대한 연이은 시도가 이전 시도와 마찬가지로 Kinesis 스트림에서 정확히 동일한 입력 레코드를 갖도록 해줍니다. 이를 통해 Kinesis 스트림의 idempotent, 즉 일관적인 처리가 가능합니다.

각 하둡 도구에서 런타임 파라미터로서 논리적 이름과 반복을 지정할 수 있습니다. 예를 들어 "Running queries with checkpoints" 자습서 섹션에 있는 코드 샘플은 쿼리에 대한 논리적 이름을 지정하고 작업이 연속적으로 실행될 때마다 반복하도록 예약된 Hive 쿼리를 보여줍니다.

또한, 샘플 Cron 일정 예약 스크립트도 자습서에 제공되어 있습니다.

Q: 논리적 이름 및 반복에 대한 메타데이터는 어디에 저장되어 있습니까?

EMR Kinesis 입력 커넥터가 예약된 주기적 워크플로에서 작동할 수 있도록 하는 메타데이터는 Amazon DynamoDB에 저장되어 있습니다. Amazon DynamoDB 테이블을 프로비저닝하고 이를 하둡 작업에 대한 입력 파라미터로 지정해야 합니다. 이러한 통합을 사용할 수 있으려면 해당 테이블에 대한 적절한 IOPS를 구성하는 것이 중요합니다. Amazon DynamoDB 테이블 설정에 대한 자세한 내용은 시작 자습서를 참조하십시오.

Q: 반복 처리가 실패하면 어떤 일이 발생합니까?

반복 식별자는 Kinesis 스트림에서 특정 범위(시작 및 종료 시퀀스 번호)에 매핑하기 위해 사용자가 제공한 값입니다. 이러한 범위에 해당하는 데이터는 MapReduce 작업의 매핑 단계에서 로드됩니다. 이 단계는 프레임워크에서 관리되며 작업 실패 시 자동으로 다시 실행됩니다(기본적으로 3회). 재시도가 모두 실패하더라도, 마지막으로 성공한 데이터 범위 또는 이전 데이터 범위부터 다시 프로세스를 시도하도록 선택할 수 있습니다. 이 동작은 처리 도중 kinesis.checkpoint.iteration.no 파라미터를 입력하여 제어합니다. 이러한 값이 하둡 에코시스템의 다른 도구에 대해 어떻게 구성되는지에 대한 자세한 내용은 시작 자습서를 참조하십시오.

Q: 동일한 반복에서 여러 개의 쿼리를 실행할 수 있습니까?

예. 연이은 프로세스에서 kinesis.checkpoint.iteration.no 파라미터를 설정하여 이전에 실행한 반복을 지정할 수 있습니다. 이러한 구현은 동일한 반복에 대한 연이은 시도가 이전 시도와 마찬가지로 Kinesis 스트림에서 정확히 동일한 입력 레코드를 갖도록 해줍니다.

Q: 반복 내 레코드가 Kinesis 스트림에서 만료된 경우 어떤 일이 발생합니까?

반복의 시작 시퀀스 번호 및/또는 종료 시퀀스 번호가 Kinesis 스트림에서 만료된 레코드에 포함되어 있는 경우 하둡 작업이 실패합니다. Kinesis 스트림의 처음부터 데이터를 처리하려면 다른 논리적 이름을 사용해야 합니다.

Q: 데이터를 EMR에서 Kinesis 스트림으로 푸시할 수 있습니까?

아니요. 현재 EMR Kinesis 커넥터는 다시 Kinesis 스트림으로 데이터를 작성하는 기능을 지원하지 않습니다.

Q: Kinesis용 EMR 하둡 입력 커넥터는 지속적인 스트림 처리를 지원합니까?

하둡 MapReduce 프레임워크는 배치성 프로세스 시스템입니다. 그러므로 지속적인 쿼리는 지원하지 않습니다. 그러나 개발자가 지속적인 스트림 처리를 위한 애플리케이션을 구축할 수 있도록 해주는 Twitter Storm 및 Spark Streaming과 같은 하둡 에코시스템 세트가 최근에 출시되고 있습니다. Kinesis용 Storm 커넥터는 여기 GitHub에서 제공되며, EMR에서 Spark Streaming을 설정하는 방법과 지속적인 쿼리를 실행하는 방법을 설명하는 자습서는 여기에서 찾아볼 수 있습니다.

또한, 개발자는 Kinesis 클라이언트 라이브를 활용하여 실시간 스트림 처리 애플리케이션을 개발할 수도 있습니다. 여기 Kinesis 설명서에서 사용자 지정 Kinesis 애플리케이션 개발에 대한 자세한 내용을 찾아볼 수 있습니다.

Q: 다른 AWS 계정에서 관리하는 Kinesis 스트림을 읽을 수 있도록 액세스 자격 증명을 지정할 수 있습니까?

예. Kinesis 스트림이 있는 계정의 적절한 액세스 자격 증명을 지정하여 다른 AWS 계정에서 스트림을 읽을 수 있습니다. 기본적으로 Kinesis 커넥터는 클러스터 생성 시 지정된, 사용자 제공 액세스 자격 증명을 활용합니다. kinesis.accessKey 및 kinesis.secretKey 파라미터를 설정함으로써 이러한 자격 증명을 재정의하여 다른 AWS 계정의 스트림에 액세스할 수 있습니다. 다음 예제에는 Hive와 Pig에서 kinesis.accessKey와 kinesis.secretKey 파라미터를 설정하는 방법이 나와 있습니다.

Hive용 코드 샘플:
...
STORED BY
'com.amazon.emr.kinesis.hive.KinesisStorageHandler'
TBLPROPERTIES(
"kinesis.accessKey"="AwsAccessKey",
"kinesis.secretKey"="AwsSecretKey",
);

Pig용 코드 샘플:

raw_logs = LOAD 'AccessLogStream' USING com.amazon.emr.kinesis.pig.Kin
esisStreamLoader('kinesis.accessKey=AwsAccessKey', 'kinesis.secretKey=AwsSecretKey'
) AS (line:chararray);

Q: 단일 Kinesis 스트림에서 여러 병렬 쿼리를 실행할 수 있습니까? 이는 성능에 영향을 미칩니까?

예. 고객은 각 쿼리에 대해 개별적인 논리적 이름을 사용하여 동일한 스트림에서 여러 병렬 쿼리를 실행할 수 있습니다. 그러나 Kinesis 스트림 내 샤드에서의 읽기는 초당 2MB라는 속도 제한이 적용됩니다. 그러므로 동일 스트림에 N개의 병렬 쿼리가 실행되는 경우 각 쿼리에 대한 스트림의 샤드당 송신 속도는 대략 초당 (2/N)MB입니다. 이로 인해 처리 속도가 느려질 수 있으며, 쿼리에 실패하는 경우도 발생합니다.

Q: EMR에서 여러 Kinesis 스트림을 조인 및 분석할 수 있습니까?

예. Hive의 경우 두 개의 다른 Kinesis 스트림으로 매핑되는 두 개의 테이블을 생성하고 테이블 간 조인을 생성할 수 있습니다.

Q: EMR Kinesis 커넥터는 병합 및 분할 이벤트와 같은 Kinesis 규모 조정 이벤트를 처리합니까?

예. 이러한 구현은 분할 및 병합 이벤트를 처리합니다. Kinesis 커넥터는 개별 Kinesis 샤드(Kinesis 스트림 내 논리적 규모 단위)를 하둡 MapReduce 매핑 작업과 연결합니다. 반복이 이루어지는 논리적 기간에 스트림 내 존재하는 각 고유 샤드는 정확하게 하나의 매핑 작업이 됩니다. 샤드 분할 또는 병합 이벤트가 발생하면, Kinesis는 새로운 고유 샤드 ID를 프로비저닝합니다. 그 결과, MapReduce 프레임워크는 Kinesis에서 읽기 위해 더 많은 매핑 작업을 프로비저닝합니다. 이 모든 작업은 사용자에게 투명하게 이루어집니다.

Q: 내 스트림에 "무활동" 기간이 있는 경우 어떤 일이 발생합니까?

이러한 구현은 사용자가 kinesis.nodata.timeout이라는 파라미터를 구성할 수 있도록 합니다. 예를 들어 kinesis.nodata.timeout이 2분으로 설정되어 있으며, 10분마다 Hive 쿼리를 실행하려 한다고 가정해 보겠습니다. 여기에서 일부 데이터는 마지막 반복(10분 전) 후 스트림에 기록되었습니다. 그러나 현재 새로운 레코드가 수신되지 않고 있습니다. 즉, 스트림에 아무런 활동이 없는 상태입니다. 이 경우 쿼리의 현재 반복이 시작되면 Kinesis 커넥터에서 새로운 레코드가 수신되지 않았음을 알게 됩니다. 커넥터에서는 2분 동안 계속하여 스트림을 폴링합니다. 만약 그동안에 아무 데이터도 수신되지 않는다면 폴링을 중단하며 스트림의 현재 배치에서 이미 읽은 레코드만 처리합니다. 그러나 kinesis.nodata.timeout 간격이 끝나기 전에 새로운 레코드가 수신되면 커넥터는 kinesis.iteration.timeout이라는 파라미터에 해당하는 간격만큼 추가로 대기합니다. 이러한 파라미터를 정의하는 방법을 보려면 자습서를 참조하십시오.

Q: 각 반복에서 계속해서 실패하는 쿼리를 디버깅하려면 어떻게 해야 합니까?

프로세스가 실패하는 경우 현재 하둡 작업을 디버깅할 때 사용하는 것과 같은 도구를 활용할 수 있습니다. 오류 로그를 식별하고 액세스하는 데 도움이 되는 Amazon EMR 웹 콘솔이 이러한 도구에 포함됩니다. EMR 작업 디버깅에 대한 자세한 내용은 여기에서 찾아볼 수 있습니다.

Q: 액세스 권한이 없는 DynamoDB 테이블을 지정하는 경우 어떤 일이 발생합니까?

작업이 실패하며 해당 작업에 대한 오류 로그에 예외가 표시됩니다.

Q: 작업은 실패하지 않았지만 DynamoDB로의 체크포인트 설정이 실패하는 경우 어떤 일이 발생합니까?

작업이 실패하며 해당 작업에 대한 오류 로그에 예외가 표시됩니다.

Q: Kinesis 스트림에서 EMR로의 읽기 처리량을 최대화하려면 어떻게 해야 합니까?

Kinesis 스트림의 처리량은 사용된 인스턴스 크기 및 Kinesis 스트림의 레코드 크기에 따라 증가합니다. 마스터 및 코어 노드의 경우 이 기능을 사용하려면 m1.xlarge 이상을 사용하는 것이 좋습니다.

맨 위로 이동 >>