본문 바로가기

Tech/Hadoop

[Hadoop]hadoop (2)

하둡의 파일 포맷 종류에 대해서 정리한다.

 

Row-Based

  • 많은 열이 있는 전체 단일 레코드를 처리할 때 사용
  • text, xml, csv, json은 데이터 쿼리에 적합하지 않다. (csv를 제외하고는 블록 압축 불가)

Sequence files

  • key-value 형태의 MR의 기본적인 디자인의 형식
  • 블록 수준 압축을 지원
  • 여러 맵 작업을 위해 파일을 세그먼트로 분할, 기능을 유지하면서 파일 내용 압축 가능
  • key-value가 binary 형식으로 인코딩 되어 저장

Avro

참고: https://luran.me/352
 

Avro 개요

Avro란? Avro는 데이터 직렬화와 관련된 시스템이다. 한국 개발자들은 /에이브로/라고 발음하곤 하지만, 외국 개발자 커뮤니티에서는 주로 /아브로/라고 발음하고 있다. Avro는 JSON 형태로 기록한다.

luran.me

  • 행 기반 직렬화 형식
  • 쓰기 작업에 좋다
  • 블록 수준의 압축을 지원
  • Json format으로 스키마를 저장한다. (읽기 쉬움)
  • 복잡한 개체를 기본적으로 저장할 수 있도록, 파일에 직접 해당 내용의 스키마를 인코딩
  • 스키마 변경이 있을 때, 클릭스트림/이벤트 데이터 형식에 적합
  • Trevni 열기반 형식도 존재함.
  • Kafka, Druid에서 많이 쓰이는 형태이다.

 

 

Column Based

  • 특정 열 값을 가져오는 쿼리는 전체 행을 읽지 않아 효율적이다.
  • 열 단위 압축이라 저장공간을 절약
  • 같은 열의 값은 같은 유형임으로 유형별 압축 기술이 별도 필요 x
  • 열마다 다른 인코딩을 적용 할 수 있다.

Parquet

  • 쓰기 측면보다 읽기 성능이 좋다
  • nested 구조를 지원한다
  • Impala, Arrow, Drill, Spark에서 많이 쓰인다.

ORC(Optimized Row Columnar)

  • spark가 데이터를 처리할 때 가장 좋다.
  • 최대 75%까지 줄인다.
  • 데이터 처리속도를 증가시키고, 단순 행기반 파일형식보다 빠르다.
  • Hive, Presto에서 많이 쓰인다.

 


 

Schema Evolution

필요에 의해 변함에 따라 스키마에 변화가 적용되는 것을 말한다.
  • Avro > ORC > Parquet

 

Compression(압축률)

  • ORC > Parquet > Avro

 

Splitability(분할성)

  • ORC > Parquet = Avro
반응형

'Tech > Hadoop' 카테고리의 다른 글

[Hadoop]하둡 완벽가이드 요약 (4)  (0) 2022.03.06
[Hadoop]하둡 완벽가이드 요약 (3)  (0) 2022.03.05
[Hadoop]하둡 완벽가이드 요약 (2)  (0) 2022.03.03
[Hadoop]하둡 완벽가이드 요약 (1)  (0) 2022.03.03
[Hadoop]hadoop (1)  (0) 2022.02.26