이전에 Hadoop Lzo 압축 설정에 관한 블로깅을 했는데...
그 이후에 발생했던 문제와,
실질적으로 사용하는 방법에 대해서 정리..
# 두 가지 버전의 hadoop lzo
1. https://github.com/omalley/hadoop-gpl-compression
- 이전에 설치했던 버전
2. https://github.com/kevinweil/hadoop-lzo
- 이 버전으로 다시 설치
# 사용법
1. 파일시스템의 파일을 압축해서 hdfs에 올리는 방법.
> lzop 파일이름
> hadoop fs -copyFromLocal 파일이름.lzo hdfs위치
> hadoop fs -copyFromLocal 파일이름.lzo hdfs위치
2. hdfs의 lzo 파일에 index 만들기
- lzo 파일이 있는곳에 파일이름.index라는 파일이 생긴다.
- index를 안해주면, lzo 파일을 split하지 않고 하나의 map으로 처리
1) index it in-process via:
hadoop jar /path/to/your/hadoop-lzo.jar com.hadoop.compression.lzo.LzoIndexer big_file.lzo
2) index it in a map-reduce job via:
hadoop jar /path/to/your/hadoop-lzo.jar com.hadoop.compression.lzo.DistributedLzoIndexer big_file.lzo
3. splitted lzo 파일 사용
- 파일이름.index 를 보고 알아서 나누어서 작업한다.
1) java
job 설정에 다음을 추가..
job.setInputFormatClass(LzoTextInputFormat.class);
job.setInputFormatClass(LzoTextInputFormat.class);
2) streaming (테스트 안해봄)
실행할때 다음을 추가
"-inputformat com.hadoop.mapred.DeprecatedLzoTextInputFormat
"-inputformat com.hadoop.mapred.DeprecatedLzoTextInputFormat
4. 최종 결과 파일을 fs로
1) lzo_deflate
- 압축코덱을 LzoCodec으로 하면 .lzo_deflate의 형태로 압축된다.
- lzo_deflate는 파일시스템으로 getmerge 한 후 압축을 어떻게 푸는지 알수가 없어서, 코덱 설정을 바꿈.
<property>
<name>mapred.output.compression.codec</name>
<value>com.hadoop.compression.lzo.LzoCodec</value>
</property>
<name>mapred.output.compression.codec</name>
<value>com.hadoop.compression.lzo.LzoCodec</value>
</property>
2) LzoCodec -> LzopCodec
- The LzoCodec for the pure LZO format, which uses the .lzo_deflate filename extension (by analogy with DEFLATE, which is gzip without the headers).
- The LzopCodec is compatible with the lzop tool, which is essentially the LZO format with extra headers.
- map 과 reduce 사이에는 header가 없는 LzoCodec으로..
- 최종 output은 LzopCodec 으로 변경
<property>
<name>mapred.output.compression.codec</name>
<value>com.hadoop.compression.lzo.LzopCodec</value>
</property>
<name>mapred.output.compression.codec</name>
<value>com.hadoop.compression.lzo.LzopCodec</value>
</property>
3) getmerge 후에 fs에서 압출 풀때
- 1개의 reducer의 경우 'lzop -d' 로 일반적인 경우처럼
- reducer의 개수 1개 이상일 때는 다음과 같이
lzop -d 파일명.lzo -o 압축풀파일명
'Mining' 카테고리의 다른 글
직관, 통찰, 지식, 과학. 끄적끄적.. (0) | 2012.05.01 |
---|---|
Pig UDFs (0) | 2012.02.22 |
Hadoop LZO 압축 설정 (0) | 2011.07.06 |
로그 분석 (0) | 2011.06.09 |
Python 하둡 스트리밍 (Hadoop Streaming) #2 (0) | 2011.05.16 |