2013-12-19 2 views
1

행 수가 약 10000 행렬입니다. 각 반복마다 한 행을 가져와 긴 행렬 계산을 수행하고 행렬의 각 행마다 하나의 이중 숫자를 반환하는 코드를 작성했습니다. 각 행당 작업 수가 너무 많기 때문에 코드를 실행하는 데 시간이 오래 걸립니다. 나는 그것을 MapReduce를 사용하여 구현하려고 생각하고 있지만 가능한지 확실하지 않다. 주요 아이디어는 매트릭스 행을 다른 노드로 분할하여 작업을 독립적으로 실행하고 출력을 함께 결합하여 숫자 목록을 반환하는 것입니다. 내 이해를 바탕으로 매퍼가이 일을 할 수 있습니다. 내가 맞습니까? 가능한가? 또는 더 좋은 생각? 미리 감사드립니다. 그건 그렇고 코드는 Java에 있습니다.hadoop mapreduce를 사용한 행렬 계산

답변

1

이 가능한 것 같다 - 몇 가지 점을 고려 :

당신은 신원 매퍼를 실행할 수 있습니다 (감속기 각 입력 레코드를 통과 한)과는 감속기의 행 계산을한다. 계산 맵 측을 수행하면 모든 계산이 단일 노드에서 수행됩니다 (10000 행 행렬이 입력 분할 크기보다 작음이 가능함).

많은 수의 reducer를 실행하여 작업이 클러스터 노드에서 병렬 처리되도록하는 것이 좋습니다. 기본 파티셔너는 입력 행을 다른 감속기로 보내는 것을 처리합니다 (행이 고정 너비가 아니라고 가정하면 입력 행의 기본 바이트 오프셋 대신 출력 키로 카운터를 사용하는 사용자 정의 매퍼를 실행해야합니다) .

모든 결과를 다시 가져 오려면 하나의 감속기를 사용하여 두 번째 MR 작업을 수행해야합니다.

+0

굉장! 정말 고맙습니다. 당신은 아주 좋은 점을 언급했습니다! 내가 결과를 얻었을 때 나는 당신에게 돌아갈 것이다. – MTT