본문 바로가기

빅데이터/개념 정리

오픈소스 플랫폼 - Kudu

 

 

 

 

출처 원문 https://d2.naver.com/helloworld/9099561

 

[저장 측면 - Kudu]

1. 데이터가 칼럼 기반으로 저장돼 있어 특정 칼럼만 읽을 때는 디스크에서 읽는 양을 획기적으로 줄여 성능을 높일 수 있다. 
다른 칼럼 기반 스토리지인 Parquet와 다르게 테이블을 생성할 때 각 칼럼마다 압축 방식과 인코딩 방식을 사용자가 지정할 수 있다.

2. 일반 DBMS처럼 primary key를 제공해 랜덤 액세스 속도가 매우 빠르다. 
Kudu의 primary key는 내부적으로 B+ 트리로 저장돼 있어 대규모 데이터에서도 primary key를 사용해 매우 빠르게 데이터에 접근할 수 있다. 
수백억 건의 레코드에서도 primary key로 접근하는 데는 수 밀리초밖에 걸리지 않는다.

3. Parquet와 비슷하게 대규모 순차 읽기(sequential reading)에 매우 최적화돼 있다. 
데이터가 Bit-packing 방식이나 Run-length 방식을 사용해 효율적으로 인코딩돼 있기 때문에 순차 읽기 속도가 빠르다. 
또한 Intel의 CPU에 최적화돼 있어 명령어 수준(instruction level)에서 데이터를 매우 빠르게 처리할 수 있다.


Kudu는 순차 읽기와 랜덤 액세스를 모두 잘하는 플랫폼이라는 것을 알 수 있다.
Parquet는 순차 읽기에 강하나 랜덤 액세스에는 약하다. 
HBase는 랜덤 액세스에는 강하나 순차 읽기에는 약하다. 
Kudu는 순차 읽기와 랜덤 액세스를 모두 잘한다. 

Kudu는 Hadoop 에코 시스템에서 Parquet와 HBase 사이에 위치한다. 
테스트에서도 Parquet와 HBase 사이의 간극을 메운다.
Kudu는 데이터 저장소 역할만 하는 플랫폼이기 때문에 Kudu를 사용하려면 Parquet를 사용할 때와는 다르게 서버가 필요하다.


[질의 처리 - Kudu]


1. 별도의 질의 처리 엔진이 필요하다는 점이다.
Kudu가 제공하는 API는 데이터를 입력하고 조회하는 단순한 CRUD(CREATE, READ, UPDATE, DELETE) 연산이다. 
데이터를 조회할 때 원하는 필터 조건을 입력할 수 있지만 단순한 데이터 조회 기능만 제공하기 때문에 
GROUP BY나 JOIN 등을 사용하는 복잡한 질의를 실행하려면 별도의 질의 처리 엔진이 있어야 한다. 
일반적으로 질의 처리 엔진인 Impala를 Kudu와 함께 사용해 복잡한 질의를 처리하게 한다.

다차원 분석 시스템 ??

OLAP 큐브 ??

장점: 사용자가 질의할 패턴에 대해 큐브를 미리 만들었으므로 응답 속도가 짧고 처리량이 많다.
단점: 미리 정의된 디멘션에 대해서만 질의할 수 있다. 큐브 생성 시간 길고 데이터 볼륨이 크다. 
       사용자가 언제 질의할지 모르는 값에 대해서도 항상 큐브를 만들게 되므로 비효율적이다.

 

온디맨드(on-demand) 방식: 사용자 질의가 입력될 때 데이터를 조회해서 분석하는 것이다.

장점: 원본 테이블만 저장하면 되므로 데이터 볼륨이 작고 입수 시간이 빠르다. 
       임의의 필터와 디멘션에 대해서도 질의가 가능하다.
단점: 응답시간이 느리고 처리량이 적다.

빠른 입수 속도와 질의 처리 성능은 기본으로 만족해야 한다.

Exactly Once  ??

secondary index  ??

OLAP  ??

카디널리티가 높다  ??

spark는 질의 처리 엔진이므로 분석 시스템을 만들기 위해선 적절한 데이터 저장소가 필요한 플랫폼이다. 
Elasticsearch는 질의 처리 엔진과 데이터 저장소의 기능을 모두 제공하는 플랫폼이다.

 

[Drill]

종류: 질의 처리 엔진
장점: 다양한 데이터 저장소 지원
기타: Spark SQL이나 Impala 대비 큰 장점이 없어 보임

다양한 데이터 형식을 지원하는 질의 처리 엔진이다. 
데이터 형식이 서로 다른 데이터로 JOIN 연산을 실행할 수 있다. 
즉, MongoDB에 있는 데이터와 JSON 파일에 저장된 데이터를 대상으로 JOIN 연산을 실행할 수 있다. 

 

[Impala]

종류: 질의 처리 엔진
장점: 다양한 스토리지 연동 가능, SQL 컴파일로 질의 최적화
단점: 컴파일 및 실행 플랜 계획에 따른 기본 비용 소모

Impala는 분산 병렬 질의 처리 엔진이다. 

다양한 스토리지를 연동해 사용자에게 친숙한 SQL로 질의할 수 있으며, 
스토리지 엔진(storage engine)이 제공하지 않는 연산을 Impala를 통해 실행할 수도 있다. 

Impala가 제공하는 Kudu 질의 처리 기능을 테스트한 후 SQL을 통해 쉽게 데이터의 저장, 조회, 변경이 가능하다.

다만 간단한 질의에도 메타 정보 확인, 실행 플랜 계획 등 스토리지에 적합하게 처리해야 하는 작업을 위한 시간 비용이 항상 포함되기 때문에 OLTP 성격 질의 처리에는 사용하기 어렵다.