2012-12-26 4 views
2

여러 매퍼를 사용하여 하나의 bzip2 파일의 여러 부분을 하둡 병렬로 읽고 성능을 향상시킬 수 있다고 들었습니다. 하지만 검색 후 관련 샘플을 찾을 수 없습니다. 누구나 나를 관련 코드 스 니펫으로 안내 할 수 있으면 고맙겠습니다. 감사.BZip2 파일을 하둡으로 읽음

BTW : gzip은 동일한 기능을 가지고 있습니다 (여러 개의 매퍼 프로세스가 하나의 gzip 파일의 다른 부분을 병렬로 처리합니다).

답변

3

http://comments.gmane.org/gmane.comp.jakarta.lucene.hadoop.user/30662, 의 경우 bzip2 형식이 실제로 분할 가능하고 여러 파일을 하나의 파일에서 작동시킬 수 있습니다. 패치는 https://issues.apache.org/jira/browse/HADOOP-4012에 제출되었습니다. 그러나 HADOOP 0.21.0 이상에서만 사용할 수 있습니다.

bzip2의이 기술을 사용하기 위해서는 개인적인 경험을 통해 할 일이 다릅니다. hadoop은 분할 크기에 따라 자동으로 선택됩니다.

블록 단위로 bzip2 압축 데이터를 압축하므로 블록 단위로 압축을 풀고 각 블록을 별도의 매퍼로 보낼 수 있습니다. 그러나 gzip에는 이러한 기술이 없으므로 다른 매퍼로 보낼 수 없습니다.

+0

감사합니다 Varun, "그러나 gzip에는 이러한 기술이 없으므로 다른 매퍼로 보낼 수 없습니다." - Hadoop에서 주장하는 문서가 있습니까? –

+1

앞에서 설명한 것처럼 gzip을 병렬로 압축 해제하는 것은 불가능합니다. 동일한 파일을 한 번 순차적으로 압축 해제하고 엔트리 포인트 맵을 작성하지 않은 경우 또는 gzip 파일이 병렬 압축 해제를 위해 특별히 준비된 경우가 있습니다. 목적. –

+0

@Varun Shingal은 그것을 사용하기 위해 하나의 bzip2를 hadoop에 추가해야합니까? 아니면 기본적으로 hadoop과 함께 제공됩니까? 고맙습니다! – theexplorer

2

병렬 bz2 압축 및 압축 해제의 예는 pbzip2입니다.

병렬 gzip도 있습니다 (pigz). 병렬 압축은 수행하지만 병렬 압축은 수행하지 않습니다. 압축 된 형식은 병렬 압축 해제에 적합하지 않습니다. 그러나 당신은 a) 역사의 재설정과 함께 특별한 gzip 스트림을 준비하거나, b) 첫 번째 패스에서 gzip 파일에 인덱스를 만들 수 있습니다. 어느 쪽이든, 당신은 다음 병렬로 다른 부분을 읽을 수있는, 또는보다 효율적으로 임의 액세스 할 수 있습니다.

+0

자세한 정보를 제공해 주신 Thanks Mark입니다. 사실 내가 묻는 것은 Hadoop에서 bzip2 및 gzip 형식으로 작업하는 방법입니다. 예를 들어, 여러 매퍼를 사용하여 여러 매퍼에서 하나의 bzip2 파일을 병렬로 읽는 방법. –

+1

나는 그것을 이해했다. –

+0

Hadoop에는 여러 mappers를 지원하여 bzip2 또는 gzip 파일을 병렬로 읽을 수있는 내장 기능이 있는지 확실하지 않습니다. –