(하둡) 어떤 압축 포맷을 사용해야 하는가?

하둡 애플리케이션은 거대한 데이터 셋을 처리하기 때문에 압축의 장점을 충분히 활용할 필요가 있다. 어떠한 압축 포맷을 사용할지는 파일크기, 포맷, 처리에 사용되는 도구 같은 고려 사항에 의해 결정된다.


  • 압축과 분할 모두를 지원하는 시퀀스파일, 에이브로, ORCFile, 파케이 같은 컨테이너 파일 포맷을 사용하라. 보통 LZO, LZ4, Snappy 같은 빠른 압축형식이 적당하다.
  • 상당히 느리긴 하지만 bzip2같이 분할을 지원하는 압축 포맷을 사용하라. 또는 분할을 지원하기 위해 색인 
  • 애플리케이션에서 파일을 청크로 분할하고, 지원되는 모든 압축 포맷(분할에 관계없이) 을 사용하여 각 청크를 개별적으로 압축하라. 이 경우 압축된 청크가 거의 HDFS 블록 하나의 크기가 되도록 청크 크기를 선택해야한다.
  • 파일을 압축하지말고 그냥 저장하라
파일의 크기가 매우크면 전체 파일에 대한 분할을 지원하지 않는 압축 포맷은 권장하지 않는다. 그 이유는 지역성을 보장하지 않으면 상당히 비효율적인 맵리듀스 애플리케이션이 되기때문이다.


댓글

이 블로그의 인기 게시물

(네트워크)폴링방식 vs 롱 폴링방식

(ElasticSearch) 결과에서 순서 정렬

(18장) WebSocekt과 STOMP를 사용하여 메시징하기