2014-06-10 2 views
0

AWS의 데이터 파이프 라인을 통해 EMR 작업을 설정했습니다. 이 작업은 S3에서 DynamoDB로 CSV 데이터를 전송하는 것입니다.EMR의 Hadoop - 매핑 작업이 병렬이 아님

내 데이터 크기는 400MB입니다. 내가 mapred.max.split.size = 134217728 (즉, 128MB)을 설정했습니다. 이를 통해 그래프를 모니터링 할 때 3 가지 맵 작업이 있음을 알 수 있습니다. 그러나 이러한 작업은 결코 병렬로 실행되지 않습니다. 따라서 400MB를 완료하는 데 43 분이 걸립니다. 태스크에 대한 stderr 로그는 항상 순차적으로 실행되는 맵 태스크를 표시합니다.

m1.small, c3.xlarge, c3.2xlarge와 같은 다양한 인스턴스 유형의 2 개 코어 노드를 시도했지만 아무 소용이 없습니다.

지도 작업을 병렬로 실행하기 위해 수행해야 할 다른 설정/구성이나 업데이트가 있습니까?

답변

0

확인해보십시오. DynamoDB에 저장된 데이터 내보내기 및 쿼리 요청을 처리하기 위해 Hadoop이 시작하는 매퍼 데몬은 사용 된 읽기 용량을 제한하기 위해 초당 1MB의 읽기 속도로 제한됩니다. DynamoDB에서 사용할 수있는 추가 프로비저닝 처리량이 있으면 매퍼 데몬 수를 늘려 Hive 내보내기 및 쿼리 작업의 성능을 향상시킬 수 있습니다. 이렇게하려면 클러스터에서 EC2 인스턴스 수를 늘리거나 각 EC2 인스턴스에서 실행중인 매퍼 데몬 수를 늘리십시오.

현재 클러스터를 중지하고 더 많은 수의 EC2 인스턴스로 다시 시작하여 클러스터의 EC2 인스턴스 수를 늘릴 수 있습니다. Amazon EMR 콘솔에서 클러스터를 시작하는 경우 EC2 인스턴스 구성 대화 상자에서 또는 CLI에서 클러스터를 시작하는 경우 --num-instances 옵션을 사용하여 EC2 인스턴스 수를 지정합니다.

인스턴스에서 실행되는 맵 작업의 수는 EC2 인스턴스 유형에 따라 다릅니다. 지원되는 EC2 인스턴스 유형 및 각 EC2 인스턴스 유형이 제공하는 매퍼 수에 대한 자세한 내용은 Amazon EMR 개발자 안내서의 Hadoop Configuration Reference를 참조하십시오. 여기서 지원되는 각 구성에 대한 "작업 구성"섹션을 찾을 수 있습니다.

mapper 데몬의 수를 늘리는 또 다른 방법은 Hadoop의 mapred.tasktracker.map.tasks.maximum 구성 매개 변수를 높은 값으로 변경하는 것입니다. 이렇게하면 EC2 인스턴스의 수나 크기를 늘리지 않고 더 많은 매퍼를 제공 할 수있어 비용을 절약 할 수 있습니다. 단점은이 값을 너무 높게 설정하면 클러스터의 EC2 인스턴스의 메모리가 부족해질 수 있습니다. mapred.tasktracker.map.tasks.maximum을 설정하려면 클러스터를 실행하고 mapst.tasktracker.map.tasks.maximum 값을 부트 스트랩 조치의 인수 중 하나로 전달하여 Hadoop 부트 스트랩 구성 작업을 지정하십시오. 다음 예제에 표시됩니다.

--bootstrap 액션 S3N : // elasticmapreduce/부트 스트랩 - 액션/구성 - 하둡 부트 스트랩에 대한 자세한 내용은 \ --args -s, mapred.tasktracker.map.tasks.maximum = 10

Amazon EMR 개발자 안내서에서 사용자 정의 부트 스트랩 작업 사용을 참조하십시오.

+0

예, mapred.tasktracker.map.tasks.maximum을 시도하고 인스턴스 수가 많아졌습니다 (예 : 4 코어 및 c3.xlarge의 4 가지 작업). 사용하지 마십시오. DynamoDB 쪽에서는 처리량이 충분합니다. 실제로, 직업은 절반 이하 만 소비합니다. dynamodb.throughput.write.percent = 1.0을 설정하여 모든 처리량을 사용할 수 있지만 작동하지 않습니다. – Mouli

+0

모두 제대로 작동하고 모든 슬레이브가 동일한 마스터를 가리키고 있는지 확인 했습니까? –

+0

은 gzip 형식의 파일입니까? –

0

Mayank가 정확하다고 생각합니다. 비슷한 문제가 발생했습니다. 1 Map Task가 RUNNING이었고 나머지 9 개는 PENDING에있었습니다. #CoreNodes를 늘려야했고 모든지도 작업을 실행 중으로 볼 수 있습니다.

DynamoDB thruput (읽기/쓰기) 및 클러스터 용량에주의하십시오. m2.medium의 경우 기본적으로 2 개의 매퍼/인스턴스입니다.

관련 문제