Kudu 란?
Hadoop Platform 용으로 개발 된 Columnar Storage
Kudu 의 특징
- OLAP 의 workload 를 빠르게 처리
- MapReduce, Spark 등 Hadoop Ecosystem 과 통합
- Impala 와 통합
- 강력하고 유연한 일관성 모델 제공
- Sequential/Random Access 를 동시에 처리
- 운영 편의성
- 고가용성 제공
- 정형 데이터 모델
Kudu 를 활용하기 적합한 Application
- Reporting Application
- Time-serise Application
- Predictive-model Application
Kudu-Impala 통합
Impala 를 이용하여 kudu 를 SQL 로 질의할 수 있음
- CREATE/ALERT/DROP
- INSERT/UPDATE/DELETE
- Partitioning
- Parallel Scan
- High-efficency Query
- Push down predicate
Kudu 의 주요 Concept
- Columnar Store
- Read Efficiency
- Data Compression
주요 Terms
- Table
- Kudu 의 데이터가 저장되는 곳
- Schema 를 가지고 있고, Primary Key 정렬 (Kudu 에서 Primary key 는 필수)
- Tablet 이라고 하는 여러 Segment 로 이루어짐
- Tablet
- Table 의 Segment
- RDBMS 의 Partition 과 유사한 개념
- 여러 Tablet Server 에 복제 됨
- 모든 복제본은 읽기가 가능하고, 쓰기는 Tablet Server 들 간의 합의(Consesus) 가 필요
- Tablet Server
- Tablet 을 저장하고, 클라이언트에 Tablet 을 서비스
- 하나의 Tablet 서버는 리더이며, 나머지 Tablet Server 들은 Follower
- Leader 만 쓰기 요청 처리 가능
- RAFT Consesus 알고리즘을 통해 Leader 선출
- 하나의 Tablet Server 는 여러개의 Tablet 서비스 가능
- 하나의 Tablet 은 여러개의 Tablet Server 의 의해 서비스 가능
- Master
- 모든 Tablet, Table Server, Catalog Table, 클러스터와 관련된 메타 데이터들을 추적함
- 오직 하나의 Tablet 만 Master 역할을 할 수 있음
- Master 가 클러스터에서 사라지면 Raft Consensus 알고리즘에 의해 새로운 마스터가 선출 됨
- 클라이언트를 위해 메타데이터 오퍼레이션을 조정
- Master 의 모든 데이터는 Tablet 에 저장되며, Candidate Master 에 복제될 수 있음
- Tablet server 는 Master 에 주기적으로 Heartbeat 신호를 보냄(default: 1초)
- RAFT Consesus 알고리즘
- Tablet 과 Master 데이터의 Fault-tolerance, Consistency 를 보장하기 위해 Raft consensus algorithm 을 사용
- Tablet 의 복제본들은 Follower 복제본들에게 쓰기 작업을 수락하고 복제하기 위해 leader 를 선출
- 쓰기 작업이 과반의 복제본들에서 완료되면 클라이언트에 확인 메시지를 보냄
- N 개의 복제본이 있는 경우 (N - 1) / 2 이상이 정상이면 이면 쓰기 작업 가능
- Catalog Table
- Table 과 Tablet 에 대한 정보를 저장
- 직접 읽거나 쓰지 않고, Client API 를 통해 접근 가능
- Table
- Schema, Location, State
- Tablet
- Table 의 복제본이 어느 Table 서버에 존재하는지, Tablet 의 현재 상태, Start/End key
- Logical Replication
- 크의 데이터가 아닌, 작업(Operation) 을 복제 (Physical replication 의 반대)
- 장점
- Insert/Update 는 네트워크를 통한 데이터 전송이 발생하지만, Delete 는 데이터 이동이 필요 없음. Delete 작업은 각 Tablet server 에 보내지고, 내부적으로 삭제 작업을 수행함
- Kudu 에서는 (Compaction 과 같은) Physical 작업은 네트워크 상에 데이터 전송이 필요 없음. 데이터 복제를 위해 네트워크로 Block 을 전송해야 하는 HDFS 와 다른 점
- Tablet 은 같은 시간 또는 같은 스케줄로 Compaction 을 수행하거나 물리 스토리지 단에서 동기화 상태를 유지할 필요 없음
- 이는 Compaction 이나 대량의 쓰기 작업의 부하로 인해 모든 Tablet Server 가 동시에 High latency 상태가 될 가능성을 낮춤
Architecture