Tech/Hadoop
[Hadoop]hadoop (2)
kangprog
2022. 2. 27. 22:56
반응형
하둡의 파일 포맷 종류에 대해서 정리한다.
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
반응형