데이터 압축시 map/reduce 작업에 대한 고려(병렬 작업)가 필요함
| Format | CompressionCodec | java | Native | split 가능(m/r) | 
| DEFLATE | org.apache.hadoop.io.compress.DefaultCodec | O | O | 
 | 
| gzip | org.apache.hadoop.io.compress.GzipCodec | O | O | 
 | 
| bzip2 | org.apache.hadoop.io.compress.BZip2Codec | O | O | O | 
| LZO | com.hadoop.compression.lzo.LzopCodec | O | O (indexed) | |
| LZ4 | org.apache.hadoop.io.compress.Lz4Codec | O | 
 | |
| Snappy | org.apache.hadoop.io.compress.SnappyCodec | O | 
 | 
데이터 압축시 고려사항
1. sequence files 형태의 file format 사용
avro datafiles, orc files, parquet files ( compression and split 지원 )
2. split이 가능한 bzip2 압축을 사용 (다른것에 비해 느림)
3. 어플리케이션에서 file를 chunk 단위로 구성 (해당 chunk 사이는 hdfs block 사이즈로 구성)
4. 압축없이 저장
MapReduce 압축 Properties
| 이름 | type | default value | 비고 | 
| mapreduce.output.fileoutput.format.compress | boolean | false | |
| mapreduce.ouput.fileoutputformat.compress | class | DefaultCodec | 
 | 
| mapreduce.output.fileoutputformat.compress.type | string | record | 
 | 
* compress.type은 BLOCK 형태로 할 경우 효율적임
Map 압축 Properties
| 이름 | type | default value | 비고 | 
| mapreduce.map.output.compress | boolean | false | 
 | 
| mapreduce.map.output.compress.codec | class | DefaultCodec | 
 | 
* DefaultCodec : org.apache.hadoop.io.compress.DefaultCodec
'NoSQL > Hadoop' 카테고리의 다른 글
| hadoop text file 읽기 (0) | 2017.03.13 | 
|---|---|
| hadoop serialization and deserialization (0) | 2017.03.10 | 
| yarn 구조 (0) | 2017.03.08 | 
| hadoop read & write (0) | 2017.03.06 | 
| hadoop streaming (0) | 2017.03.06 |