매퍼 수 조정
Hive는 Hadoop 작업을 시작하면 작업은 하나 이상의 매퍼 작업에 의해 처리됩니다. DynamoDB 테이블의 처리량이 충분하다는 전제하에, 클러스터 내 매퍼 수를 수정하여 성능을 개선할 수도 있습니다.
참고
Hadoop 작업에 사용되는 매퍼 작업 수는 Hadoop이 데이터를 논리 블록으로 분할하는 입력 분할에 의해 영향을 받습니다. Hadoop이 충분한 입력 분할을 수행하지 않을 경우 쓰기 작업이 DynamoDB 테이블에서 사용 가능한 쓰기 처리량을 모두 소비하지 못할 수 있습니다.
매퍼 수 증가
Amazon EMR의 각 매퍼는 최대 읽기 속도가 초당 1MiB입니다. 클러스터 내 매퍼 수는 클러스터 내 노드 크기에 따라 결정됩니다. (노드 크기 및 노드당 매퍼 수에 대한 정보는 Amazon EMR 개발자 안내서의 태스크 구성 단원을 참조하세요.)
DynamoDB 테이블의 읽기 처리량이 충분할 경우 다음 중 한 방법으로 매퍼 수를 늘릴 수 있습니다.
-
클러스터 내 노드의 크기를 증가시킵니다. 예를 들어 클러스터가 m1.large 노드(노드당 매퍼 3개)를 사용하는 경우 m1.xlarge 노드(노드당 매퍼 8개)로 업그레이드할 수 있습니다.
-
클러스터 내 노드 수를 증가시킵니다. 예를 들어 클러스터에 m1.xlarge 노드가 3개일 경우 총 24개 매퍼를 사용할 수 있습니다. 동일한 노드 유형에서 클러스터 크기를 두 배로 늘리면 매퍼는 48개로 증가합니다.
AWS Management Console을 사용하여 클러스터 내 노드 크기 또는 수를 관리할 수 있습니다. (이 설정이 적용되려면 클러스터를 재시작해야 합니다.)
매퍼 수를 늘리는 또 한 가지 방법은 mapred.tasktracker.map.tasks.maximum
Hadoop 구성 파라미터를 수정하는 것입니다. (이것은 Hive 파라미터가 아니라 Hadoop 파라미터입니다. 명령 프롬프트에서 대화형으로 이 파라미터를 수정할 수 없습니다.). mapred.tasktracker.map.tasks.maximum
값을 높일 경우 노드 크기 또는 수를 증가시키지 않고 매퍼 수를 늘릴 수 있습니다. 하지만 이 값을 너무 높게 설정할 경우 클러스터 노드 메모리가 부족해질 수 있습니다.
mapred.tasktracker.map.tasks.maximum
값은 처음 Amazon EMR 클러스터를 시작할 때 부트스트랩 작업으로 설정합니다. 자세한 내용은 Amazon EMR 관리 가이드드 (선택 사항) 부트스트랩 작업을 생성하여 추가 소프트웨어 설치 단원을 참조하세요.
매퍼 수 감소
SELECT
문을 사용하여 DynamoDB로 매핑되는 외부 Hive 테이블에서 데이터를 선택할 경우 Hadoop 작업은 필요에 따라 클러스터 내 최대 매퍼 수까지 작업을 사용할 수 있습니다. 이 시나리오에서는 장시간 실행되는 Hive 쿼리가 DynamoDB 테이블의 프로비저닝된 읽기 용량을 모두 소비하여 다른 사용자에게 부정적인 영향을 미칠 수 있습니다.
dynamodb.max.map.tasks
파라미터를 사용하여 매퍼 작업 수 상한을 설정할 수 있습니다.
SET dynamodb.max.map.tasks=1
이 값은 1보다 크거나 같아야 합니다. Hive가 쿼리를 처리할 때 Hadoop 작업이 DynamoDB 테이블에서 데이터를 읽으면서 dynamodb.max.map.tasks
보다 많은 작업을 사용하지 않습니다.