하둡의 파일 포맷 종류에 대해서 정리한다.
Row-Based
- 많은 열이 있는 전체 단일 레코드를 처리할 때 사용
- text, xml, csv, json은 데이터 쿼리에 적합하지 않다. (csv를 제외하고는 블록 압축 불가)
Sequence files
- key-value 형태의 MR의 기본적인 디자인의 형식
- 블록 수준 압축을 지원
- 여러 맵 작업을 위해 파일을 세그먼트로 분할, 기능을 유지하면서 파일 내용 압축 가능
- key-value가 binary 형식으로 인코딩 되어 저장
Avro
참고: https://luran.me/352
- 행 기반 직렬화 형식
- 쓰기 작업에 좋다
- 블록 수준의 압축을 지원
- 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 |