<< K-Means Clustering | Home | Mahout - Random Forests >>

Snappy(오픈 소스 압축 툴) 개요

1. 개요
Snappy는 압축/압축해제 라이브러리며 주요 목적이 높은 압축률이나 다른 압축라이브러리와의 호환성에 중점을 둔 것이 아니라, 매우 빠른 속도의 압축 속도와 합리적인 압축률을 제공하는 것에 중점을 두고 있는 오픈 소스 압축 툴이다.

2. 특징
  • 빠르고 - 압축속도는 어셈블리 코드 없이 250MB/sec.
  • 안정성이 있으며 - 몇년 동안, Snappy는 구글 환경에서 수 페타바이트 이상의 압축과 해제를 수행해 왔다.
  • 견고성도 보유하고 있고 : Snappy 압축/해제 기능은 악의적, 손상된 데이터에 대하여 Crash 되지 않게 설계되어 있다.
  • 오픈소스다. BSD.
  • 구현과 메인 인터페이스 모두 C++로 작성되어 있다.

3. 성능
  • 64bit x86기반 프로세서에 최적화되어 있다.
  • 비정렬된 32bit 및 64bit 데이터를 가정한다. 특정 플랫폼에서는 반드시 한 바이트 데이터로 에뮬레이트 되어야 하므로 매우 느려질 수 있다.
  • 리틀엔디안을 가정한다. 빅 엔디안을 사용하는 플랫폼에서는 바이트를 스왑하는 추가적인 비용이 소요됨.

4. 지원 언어

5. Hadoop 활용 방법
MapReduce 같은 분산 병렬처리 환경에 가장 적합한 압축 알고리즘인 듯. 그래서 찾아보니 hadoop-snappy라는 오픈 소스를 활용해서 사용하는 방법이 있다.
Hadoop 1.0.2, 0.23.0 이상의 버전은 플러그인 되었으니 선택하면 된다.
Hive와 결합해서 사용할려면 여기 "Use snappy codec with Hive"를 참조하면 된다.
또 다른 압축 알고리즘인 LZ4는 Hadoop 0.23.1, 0.24.0버전에서 지원하니 참고.
LZ4와 Google snappy의 성능 비교도 "LZ4 - Improved performance" 아티클을 통해 볼 수 있다.

[참고 사이트]



Add a comment Send a TrackBack