

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Amazon EMR 클러스터의 출력을 압축하는 방법
<a name="emr-plan-output-compression"></a>

데이터 처리로 인해 발생하는 출력을 압축하는 여러 방법이 있습니다. 사용하는 압축 도구는 데이터의 속성에 따라 다릅니다. 압축은 대량의 데이터를 전송할 때 성능을 개선할 수 있습니다.

## 출력 데이터 압축
<a name="HadoopOutputDataCompression"></a>

 이 기능은 Hadoop 작업의 출력을 압축합니다. TextOutputFormat을 사용 중인 경우 결과가 gzip 압축된 텍스트 파일로 출력됩니다. SequenceFiles에 쓰려는 경우 결과가 내부적으로 압축되는 SequenceFile로 출력됩니다. 구성 설정 mapred.output.compress를 true로 설정하여 이 기능을 활성화할 수 있습니다.

 스트리밍 작업을 실행 중인 경우 스트리밍 작업을 이러한 인수로 전달하여 활성화할 수 있습니다.

```
1. -jobconf mapred.output.compress=true
```

 또한 부트스트랩 작업을 사용하여 모든 작업 출력을 자동으로 압축할 수도 있습니다. 다음은 Ruby 클라이언트를 사용하여 이 작업을 수행하는 방법입니다.

```
1.    
2. --bootstrap-actions s3://elasticmapreduce/bootstrap-actions/configure-hadoop \
3. --args "-s,mapred.output.compress=true"
```

 마지막으로 사용자 지정 Jar를 작성하려는 경우 작업 생성 시 다음 행을 사용하여 출력 압축을 활성화할 수 있습니다.

```
1. FileOutputFormat.setCompressOutput(conf, true);
```

## 중간 데이터 압축
<a name="HadoopIntermediateDataCompression"></a>

 작업이 상당한 양의 데이터를 매퍼에서 reducer로 재편성하는 경우 중간 압축을 활성화하면 성능이 향상될 수 있습니다. 맵 출력을 압축하고 코어 노드에 도착할 때 압축을 해제합니다. 구성 설정은 mapred.compress.map.output입니다. 출력 압축과 비슷하게 이 기능을 활성화할 수 있습니다.

 사용자 지정 Jar를 작성하려는 경우 다음 명령을 사용합니다.

```
1. conf.setCompressMapOutput(true);
```

## Amazon EMR에서 Snappy 라이브러리 사용
<a name="emr-using-snappy"></a>

Snappy는 속도에 최적화된 압축/압축 해제 라이브러리입니다. Amazon EMR AMI 버전 2.0 이상에서 제공되며 중간 압축을 위한 기본값으로 사용됩니다. Snappy에 대한 자세한 내용은 [http://code.google.com/p/snappy/](http://code.google.com/p/snappy/) 섹션을 참조하세요.