2020년 10월 25일 일요일

Hive [3] - 파일압축 (File Compression)

 

Hive는 TextFile, SequenceFile, RcFile, OrcFile, ParquetFile포맷을 지원한다. 테이블의 파일형식을 지원하는 방법은 아래와 같다.

1. CREATE TABLE … STORE AS <File_Format>

2. ALTER TABLE … [PARTITION partition_spec] SET FILEFORMAT <File_Format>

3. SET hive.default.fileformat=<File_Format> (the default fileformat for table)



[1] File Compress


Hive의 압축은 Full압축이 아닌 중간파일압축(Intermediate compression)을 통해 매퍼와 리듀스 사이의 데이터전송량을 현저하게 줄인다. Hive가 생산한 중간파일을 여러 맵리듀스 작업간에 압축하려면 SET hive.exec.compress를 설정해야한다. (Default는 false)

  1. Deflate - org.apache.hadoop.io.compress.DefaultCodec
  2. GZip - org.apache.hadoop.io.compress.GzipCodec
  3. Bzip2 - org.apache.hadoop.io.compress.BZip2Codec
  4. LZO - com.hadoop.compression.lzo.LzopCodec
  5. LZ4 - org.apache.hadoop.io.compress.Lz4Codec
  6. Snappy - org.apache.hadoop.io.compress.SnappyCodec

중간파일 압축은 다중 맵과 리듀스를 사용하는 특정 job의 디스크 공간만 절약하며 예시는 아래와 같다.

ex)

SET hive.exec.compress.output=true

SET mapred.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec


set the following properties in mapred-site.xml:

  • For MRv1:
<property>
  <name>mapred.compress.map.output</name>  
  <value>true</value>
</property>
<property>
  <name>mapred.map.output.compression.codec</name>  
  <value>org.apache.hadoop.io.compress.SnappyCodec</value>
</property>
  • For YARN:
<property>
  <name>mapreduce.map.output.compress</name>  
  <value>true</value>
</property>
<property>
  <name>mapred.map.output.compress.codec</name>  
  <value>org.apache.hadoop.io.compress.SnappyCodec</value>
</property>


- ORC or Parquet파일 사용시

1.

SET parquet.compression=GZIP

SET parquet.compression=SNAPPY


2.

create table ...

tblproperties ("orc.compress"="SNAPPY")

tblproperties ("parquet.compress"="SNAPPY")



[2] Hot data


자주 쓰거나 스캔하는 데이터는 hdfs shell명령어로 hot data로 지정할 수 있다. hot data에 대한 데이터 복제팩터를 증가시키면 hive작업에 의해 참조할 가능성이 증가하고 쿼리성능이 향상될 수 있다. 경로가 디렉토리일 경우 디렉토리 아래에 있는 모든 파일의 복제팩터를 증가시킨다.

setrep

Usage: hdfs dfs -setrep [-R] [-w] <numReplicas> <path>

Changes the replication factor of a file. If path is a directory then the command recursively changes the replication factor of all files under the directory tree rooted at path.

Options:

  • The -w flag requests that the command wait for the replication to complete. This can potentially take a very long time.
  • The -R flag is accepted for backwards compatibility. It has no effect.

Example:

  • hdfs dfs -setrep -w 3 /user/hadoop/dir1

Exit Code:

Returns 0 on success and -1 on error.




참조 :

https://timepasstechies.com/hive-tutorial-8-hive-performance-tuning-using-data-file-optimization-using-file-format-compression-storage-optimization/


댓글 없음:

댓글 쓰기