Snappy 압축 설명 및 설치

Q·2022년 12월 1일
0

압축

  • Hadoop, HBase를 이용하여 작업을 처리할 때 저장장치를 효율적으로 이용하기 위해서 데이터 파일을 압축할 때 사용하는 압축 알고리즘인 snappy에 대해서 알아보겠습니다.

snappy

  • Snappy는 구글에서 자체 개발한 압축 라이브러리이며, 최고의 압축률 보다는 적정 수준의 압축률을 제공하면서 빠르게 압축하고 해제하는 것을 목표로 합니다. 또한 초당 250MB 정도를 압축하고, 다른 압축에 비해 CPU 자원도 덜 소모합니다.

gzip

  • gzip은 GNU zip의 약자이며 유닉스에서 사용되는 압축 방식의 한 종류입니다. DEFLATE 알고리즘을 이용하고, 압축률이 높지만 CPU 사용률이 높습니다.

gzip vs snappy 압축 알고리즘 비교

  • 하이브에서 두 개의 압축 알고리즘을 이용하여 테스트 해보았을때 100MB의 원본 파일을 이용하여 테스트한 결과 다음과 같습니다.

  • gzip을 이용할 때 압축파일은 4MB가 되었고, snappy를 이용하면 10MB가 되었습니다. 압축할 때 CPU는 snappy가 30~40%, gzip이 50~60% 정도의 사용률을 보입니다.

압축 용량

원본104857627100
gzip48518754
snappy1096863710

Hbase Snappy 설치 방법

모든 클러스터 노드에서 다음 압축 라이브러리를 설치!!

1. snappy 설치

  • For RHEL/CentOS/Oracle Linux:
    yum install snappy snappy-devel
  • For SLES:
    zypper install snappy snappy-devel
  • For Ubuntu:
    apt-get install libsnappy1 libsnappy-dev

2. Hadoop에서 Snappy 라이브러리를 사용할 수 있도록 합니다.

ln -sf /usr/lib64/libsnappy.so ($HADOOP_HOME)/lib/native/.

3. hbase-env.sh에 아래 경로를 추가합니다.

export HBASE_LIBRARY_PATH=($HADOOP_HOME)/lib/native

4. hbase-site.xml에 아래 property를 추가합니다.

<property>
	<name>hbase.block.data.cachecompressed</name>
	<value>true</value>
</property>

5. 잘 설치가 되었는지 아래 명령어로 테스트 해봅니다.

hbase org.apache.hadoop.hbase.util.CompressionTest file:///tmp/test.txt snappy
hbase org.apache.hadoop.hbase.util.CompressionTest hdfs:///hbase.rootdir/tmp/test.txt snappy

6. Hbase를 재시작 합니다.

/bin/stop-hbase.sh ; /bin/start-hbase.sh

7. 마지막으로 table을 만들 때 COMPRESSION 옵션을 넣어 만들면 압축이 적용된 table을 만들 수 있습니다.

기본 table 만드는 방법
create 'mytable', {NAME => 'cf', COMPRESSION => 'SNAPPY'}

block size 를 추가하여 만드는 방법
create 'mytable', {NAME => 'cf', BLOCKSIZE => '128000', COMPRESSION => 'SNAPPY'}

block size 및 split 을 추가하여 만드는 방법
create 'mytable', {NAME => 'cf', BLOCKSIZE => '128000', COMPRESSION => 'SNAPPY'}, SPLITS => ['0','8624222','17248444','25872666','34496888','43121110','51745332','60369554']

참고 자료

profile
Data Engineer

0개의 댓글