하이브에서 두 개의 압축 알고리즘을 이용하여 테스트 해보았을때 100MB의 원본 파일을 이용하여 테스트한 결과 다음과 같습니다.
gzip을 이용할 때 압축파일은 4MB가 되었고, snappy를 이용하면 10MB가 되었습니다. 압축할 때 CPU는 snappy가 30~40%, gzip이 50~60% 정도의 사용률을 보입니다.
원본 | 104857627 | 100 |
---|---|---|
gzip | 4851875 | 4 |
snappy | 10968637 | 10 |
모든 클러스터 노드에서 다음 압축 라이브러리를 설치!!
- 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
ln -sf /usr/lib64/libsnappy.so ($HADOOP_HOME)/lib/native/.
export HBASE_LIBRARY_PATH=($HADOOP_HOME)/lib/native
<property> <name>hbase.block.data.cachecompressed</name> <value>true</value> </property>
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
/bin/stop-hbase.sh ; /bin/start-hbase.sh
기본 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']