Kinesis - Amazon EMR

Kinesis

Amazon EMR 클러스터는 Hive, Pig, MapReduce, Hadoop Streaming API, Cascading 등 Hadoop 에코시스템에서 익숙한 도구를 사용해 Amazon Kinesis 스트림을 직접 읽고 처리할 수 있습니다. 실행 중인 클러스터에서 Amazon S3, Amazon DynamoDB 및 HDFS의 기존 데이터와 Amazon Kinesis의 실시간 데이터를 조인할 수도 있습니다. 사후 처리 활동을 위해 Amazon EMR에서 Amazon S3 또는 DynamoDB로 데이터를 직접 로드할 수 있습니다. Amazon Kinesis 서비스 주요 기능 및 요금에 대한 자세한 내용은 Amazon Kinesis를 참조하세요.

Amazon EMR과 Amazon Kinesis 통합으로 어떤 작업을 수행할 수 있나요?

다음과 같은 특정 시나리오는 Amazon EMR과 Amazon Kinesis를 통합할 경우 훨씬 쉬워집니다.

  • 스트리밍 로그 분석 - 스트리밍 웹 로그를 분석하여 리전, 브라우저 및 액세스 도메인에 따라 몇 분마다 상위 10개의 오류 유형 목록을 생성할 수 있습니다.

  • 고객 참여 - Amazon Kinesis의 클릭스트림 데이터를 DynamoDB 테이블에 저장된 광고 캠페인 정보와 조인하여 특정 웹 사이트에 표시되는 가장 효과적인 광고 카테고리를 식별하는 쿼리를 작성할 수 있습니다.

  • 애드혹 대화형 쿼리 - Amazon Kinesis 스트림에서 HDFS로 주기적으로 데이터를 로드하고 빠른 대화형 분석 쿼리를 위한 로컬 Impala 테이블로 데이터를 사용하게 할 수 있습니다.

Amazon Kinesis 스트림의 분석 검사

사용자는 Amazon Kinesis 스트림에 대해 반복이라고 하는 주기적인 배치 분석을 실행할 수 있습니다. Amazon Kinesis 스트림 데이터 레코드는 시퀀스 번호를 사용하여 검색되기 때문에 반복 경계는 Amazon EMR이 DynamoDB 테이블에 저장하는 시작 및 종료 시퀀스 번호로 정의됩니다. 예를 들어 iteration0이 끝나면 DynamoDB에 종료 시퀀스 번호를 저장하므로 iteration1 작업이 시작되면 스트림에서 후속 데이터를 검색할 수 있습니다. 스트림 데이터의 이 반복 매핑을 검사라고 합니다. 자세한 내용은 Kinesis 커넥터를 참조하세요.

반복을 검사했지만 반복을 처리하는 작업에 실패한 경우 Amazon EMR은 해당 반복의 레코드 재처리를 시도합니다.

검사는 다음을 수행할 수 있는 기능입니다.

  • 동일한 스트림 및 논리 이름에서 실행된 이전 쿼리에서 시퀀스 번호가 처리된 후에 데이터 처리를 시작합니다.

  • 이전 쿼리에서 처리한 Kinesis의 동일한 데이터 배치를 재처리합니다.

검사를 활성화하려면 스크립트에서 kinesis.checkpoint.enabled 파라미터를 true로 설정합니다. 또한 다음 파라미터를 구성합니다.

구성 설정 설명
kinesis.checkpoint.metastore.table.name 검사 정보가 저장되는 DynamoDB 테이블 이름
kinesis.checkpoint.metastore.hash.key.name DynamoDB 테이블의 해시 키 이름
kinesis.checkpoint.metastore.hash.range.name DynamoDB 테이블의 범위 키 이름
kinesis.checkpoint.logical.name 현재 처리의 논리적 이름
kinesis.checkpoint.iteration.no 논리적 이름과 연관된 처리의 반복 번호
kinesis.rerun.iteration.without.wait 실패한 반복이 시간 초과를 기다리지 않고 다시 실행할 수 있는지 여부를 나타내는 부울 값입니다. 기본값은 false입니다.

Amazon DynamoDB 테이블의 프로비저닝된 IOPS 권장 사항

Amazon Kinesis용 Amazon EMR 커넥터는 메타데이터 검사를 위한 백업으로 DynamoDB 데이터베이스를 사용합니다. 검사 간격으로 Amazon EMR 클러스터가 포함된 Amazon Kinesis 스트림의 데이터를 사용하기 전에 DynamoDB에서 테이블을 생성해야 합니다. 테이블은 Amazon EMR 클러스터와 같은 리전에 있어야 합니다. 다음은 DynamoDB 테이블에 대해 프로비저닝해야 하는 IOPS 수에 대한 일반적인 권장사항입니다. j는 동시에 실행할 수 있는 Hadoop 작업의 최대 수(다른 논리적 이름+반복 수 조합 포함)이고 s는 작업이 처리하는 샤드의 최대 수입니다.

읽기 용량 유닛: j*s/5

쓰기 용량 유닛: j*s

성능 고려 사항

Amazon Kinesis 샤드 처리량은 Amazon EMR 클러스터를 구성하는 노드의 인스턴스 크기 및 스트림의 레코드 크기에 정비례합니다. 프라이머리 및 코어 노드에는 m5.xlarge 또는 더 큰 인스턴스를 사용하는 것이 좋습니다.

Amazon EMR을 사용하여 Amazon Kinesis 분석 예약

제한 시간과 최대 반복 기간 제한이 있는 활성 Amazon Kinesis 스트림에서 데이터를 분석하는 경우, 분석을 자주 실행하여 스트림에서 정기적으로 세부 정보를 수집해야 합니다. 이러한 스크립트와 쿼리를 주기적으로 실행하는 방법에는 여러 가지가 있지만 이처럼 반복적인 작업에는 AWS Data Pipeline을 사용하는 것이 좋습니다. 자세한 내용은 AWS Data Pipeline 개발자 안내서에서 AWS Data Pipeline PigActivityAWS Data Pipeline HiveActivity를 참조하세요.