본문 바로가기

Hadoop/Hudi

(4)
[Apache Hudi] 3-2. Components - Table Type & Query Type hudi의 table과 Table 타입, 그리고 쿼리 타입에 대해 정리해보고자 한다. Table Type hudi는 두가지 테이블타입을 지원한다. Copy On Write: Columnar File Format(parquet)으로 데이터를 저장한다. 데이터를 쓸때 이전의 base file과 새로들어온 데이터를 병합하여 새로운 버전의 base file을 생성한다. Merge On Read: Columnar File Format(parquet) + Row Based File Format(avro)파일로 결합하여 저장된다. 업데이트 되는 신규 파일은 먼저 Avro포멧으로 생성된 Delta File에 먼저 쓰여지며, 이후 Compaction 작업을 통해 기존의 base file + Delta File을 병합하여..
[Apache Hudi] 3-1. Components - Timeline Timeline Hudi에서 발생한 모든 오퍼레이션을 저장하는 공간으로 basepath/.hoodie에 저장된다. 데이터가 인입되게 되면 타임라인에 어떤 작업이 수행되어는지를 모두 기록하고, base file에 실제 데이터를 저장하게 된다. timeline의 데이터는 모두 순차적으로 저장이 되게 된다. .hoodie 디렉토리 하위에 하나의 파일 형태로 저장되는것은 아니고, Action Type별로 파일이 생성되고 관리된다. Timeline Action Type COMMITS: 레코드들을 테이블에 Atomic 하게 쓰는 것을 의미한다. CLEANS: 오래된 버전의 파일을 제거하는 백그라운드 작업을 나타낸다. DELTA_COMMIT: 테이블 타입이 Merge On Write일 경우 delta log 파일에 ..
[Apache Hudi] 2. 파일 구조 Apache hudi는 DFS에 파일 형태로 저장된다. 테이블 타입에 따라 parquet 파일로만 저장이 되기도하고, parquet + avro로 저장이 되기도 하는데, 먼저 DFS에 어떠한 구조로 저장이 되는지, 각 파일은 어떠한 형태를 띄는지 정리해보도록 하자. BasePath Hudi Table의 데이터가 저장되는 root path이다. 해당 경로 하위로 각종 메타 디렉토리, 파티션 디렉토리등이 생성이 된다. public class InsertDataApp { private static final String tableName= "hudi_trips_cow"; private static final String basePath = "file:///tmp/hudi_trips_cow"; //테스트로 로컬..
[Apache hudi] 1. hudi란 무엇일까? Apache Huid에 대해 POC할 기회가 생겨 잊어버리지 않도록 블로그에 정리해보고자 한다. 1. Hudi란 무엇일까? Apache Hudi는 DFS(hadoop hdfs 또는 Cloud Storage)를 기반으로 대량의 분석데이터를 저장하고, 관리할수 있는 스토리지이다. Hudi는 스트림을 통해서 실시간 데이터를 가져올수도 있고, 전통적인 batch 프로세싱으로 데이터를 저장할 수도 있다. Hudi가 처음이라면 위의 글이 잘 와닿지 않을것이다. 스트리밍으로 데이터를 가져와서 저장하는게 특이한것도 아니고, 배치로 데이터를 저장하는것 또한 마찬가지이기 때문이다. 다만 인입되는 데이터의 사이즈가 아주 크고, Daily가 아닌 더 짧은 주기로 데이터를 분석하기 위해 스트리밍으로 데이터를 싱크해야한다면,그리..