이야기박스

What is ORC File Format? 본문

Computer & Data/Big Data

What is ORC File Format?

박스님 2018. 12. 5. 11:25
반응형

개요

데이터 관리 플랫폼인 하이브에 저장되는 파일 포맷들이 있습니다.

  • RC file (Row Columnar)
  • ORC file (Optimized Row Columnar)
  • Parquet

이러한 포맷들은 하이브 처리 속도 높이기 위하여 개발되었습니다.


하이브 초기에는 RC 파일 포맷이 사용했었습니다. RC file 포맷은 각 컬럼을 하나의 파일 묶음으로 분산 저장되는 포맷이었습니다.

기존의 row 단위로 저장되는 파일 포맷을 column 단위로 바꾼 것이죠.

저장에는 큰 문제가 없지만, read 과정에서 다시 모으는 조인(join) 비용이 너무 크다는 문제점이 있었습니다.


이러한 문제점을 해결하기 위해 나온것이 ORC File Format입니다.

ORC File Format은 호튼웍스 부사장이었던 오웬 오말리가 제안하였습니다.


RC file format처럼 컬럼 단위로 파일을 기록하되, 인덱스도 함께 기록하였기 때문에 read 과정에서의 성능 향상이 이루어졌습니다.


ORC File Format은 중첩 구조로 구성이 가능하고 맵과 같은 복합형태 구조도 가져갈 수 있기 때문에 오픈소스 진형에서 아주 좋아하였다고 하네요.


특징

  • 각 태스크의 결과가 하나의 파일로 생성 --> 네임노드 부하 줄여줌
  • Datetime, Decimal, Complex type(struct, list, map, union)을 포함한 하이브타입을 지원
  • 파일에 경량 인덱스 저장
    • 필터링 조건이 없는 row 그룹은 스킵
    • 특정 row로 seek 가능
  • 데이터 타입 기반의 block-mode 압축
    • integer 컬럼은 run-length encoding 사용
    • 문자열 컬럼은 dictionary encoding 사용
  • 하나의 파일을 여러개 리더로 동시 읽기 가능
  • 마커 스캐닝 없이 파일 분할 가능
  • 파일 읽기 쓰기에 일정한 메모리 용량만 필요
  • 필드의 추가나 제거가 가능한 메타 데이터는 Protocol buffers를 사용해서 저장

구조



성능

ORC File Format은 다른 포맷에 비해 높은 압축률을 자랑한다고 하네요.

호튼웍스에서 정리한 자료를 보면 ( 호튼웍스 링크 ) TPC-DS Scale 500 Dataset를 통한 결과에서 78%의 압축률을 보였다고 하네요.


하지만 데이터셋에 따라 결과가 달라진다고 하니, 무조건적으로 사용하기보다는 적절한 판단이 필요할 것 같습니다.



참고


반응형