2012-02-25 2 views
1

Hashop을 사용하여 변환 된 유효한 데이터를 HBase에 출력하고 외부 인덱스를 MySQL에 출력해야하는 Hadoop에서 ETL 작업을 실행하고 있습니다. 필자의 초기 생각은 MultipleOutputFormats를 사용하여 변형 된 데이터를 HFileOutputFormat (키는 텍스트이고 값은 ProtobufWritable 임) 및 TextOutputFormat (키는 텍스트이고 값은 텍스트)에 대한 데이터를 내보낼 수 있다는 것입니다.HFileOutputFormat 및 TextOutputFormat에 대한 Hadoop MultipleOutputFormats

평균 크기 작업에 대한 입력 레코드 수 (한 번에 많이 실행할 수 있어야 함)는 약 7 억입니다.

A) 이것이 효율성과 복잡성 측면에서 합리적인 접근 방법 인 것으로 보이는가, 그리고 B) 가능한 경우 CDH3 배포판의 API를 사용하여이를 수행하는 방법이 궁금합니다.

답변

1

이전 MapReduce API를 사용하는 경우 MultipleOutputs을 사용하고 여러 출력 형식에 쓸 수 있습니다.

그러나 새 MapReduce API를 사용하는 경우 수행하려는 작업을 수행 할 수 있는지 확신 할 수 없습니다. 동일한 입력에서 다른 MapReduce 작업을 수행하는 대가를 지불해야 할 수도 있습니다. 그러나 확실히 말하기 전에 더 많은 연구를해야 할 것입니다. 새로운 API를 사용하여 MultipleOutputs를 사용할 수 있도록 이전 + 새 API를 해킹 할 수있는 방법이있을 수 있습니다.

편집 : post을보세요. 당신은 아마도 자신의 OutputFormat을 구현하고 적절한 RecordWritersOutputFormat에 넣고 이것을 사용하여 여러 출력 형식에 쓸 수 있습니다.

+0

나는 MultipleOutputs를 가진 CDH3u3을 사용하고 있습니다. 나는 그것을 시도 할 것이다. 일반적인 접근 방식이 활발하다고 생각합니까? 다른 제안? 나는 이미 내가 감속기의 RAM에 원하는 모든 데이터를 가지고 있기 때문에 분명히 두 번째 작업을하지 않는 것을 선호합니다. – ja87

+0

저는 개인적으로 MultipleOutputs를 사용하지 않았지만 꽤 효율적이라고 생각합니다. 적어도 두 번째 MR 작업을 실행하는 것보다 효율적입니다. 이 접근법에 대한 나의 제안은 누출에주의를 기울이는 것입니다. 데이터의 두 번째 스캔을 수행하지 않아도 성능을 얻는 동안 작업 결과물이 두 배가되어 유출 사고가 두 배가 될 수 있습니다. 나는 MultipleOutputs로 작업을 실행하고 두 작업을 더 성능이 좋은지 알아보기 위해 실행하는 실험을 진행했습니다. –