[kudu]kudu란?

  • 프로젝트 중 마이크로 데이터를 활용해야 하는 케이스가 생김
  • kudu에서 데이터를 불러와 데이터를 활용한다.
  • highchart로 뿌려야 할 데이터는 30만 Rows 수준

kudu 특징

  • Apache Hadoop 플랫폼 환경에서 사용하는 Columnar 스토리 엔진
  • MapReduce, Spark 및 기타 Hadoop ecosystem 컴포넌트와 통합
  • MapReduce, Spark, Flume 및 다른 Hadoop 에코 프로젝트와 연계/통합 지원
  • Cloudera Manager를 통한 관리 편의성 제공

Kudu-Impala Integration Features

  • CREATE/ALTER/DROP TABLE: Impala는 Kudu에서 테이블 생성, 변경, 삭제 오페레이션을 지원합니다. 테이블은 Impala에서 다른 테이블과 동일한 Internal/External 접근법을 따르므로 유연한 데이터 처리 및 쿼리가 가능합니다. 
  • INSERT : Impala는 HDFS와 HBase와 동일한 메커니즘을 사용하여 Kudu에 데이터 Insert작업을 수행합니다.  
  • UPDATE/DELETE :  Impala는 Kudu 테이블에 저장된 데이터에 대해 Row 단위 또는 배치 방식의 UPDATE 및 DELETE SQL 명령어를 지원합니다. SQL 명령어 구문은 가능한 기존 솔루션과 호환되도록 고안되었습니다. 단순한 DELETE나 UPDATE 명령어 외에 쿼리의 FROM 절에 복잡한 조인절을 지정하여 사용할 수 있습니다.  
  • Flexible Partitioning : Hive의 테이블 파티셔닝 개념과 유사하게 클러스터 전역에서 균등한 쓰기 및 쿼리 작업이 분산되도록 Kudu는 테이블을 해쉬나 범위기반으로 사전에 정의된 태블릿 개수만큼 동적으로 분활합니다.  
  • Parallel Scan : 범용 하드웨어에서 최적의 성능을 달성하기 위해서, Impala에서 사용한 Kudu 클라이언트는 다중 태블릿에서 스캔을 병렬처리 합니다. 

 

 * use *

Time-Series Application with Widely Varying Access Patterns

시계열(Time-Series) 스키마는 데이터가 발생되는 시간에 따라 구조화되는 데이터입니다. 이와 같은 데이터는 시간 경과에 따른 메트릭 성능을 조사하거나 과거 데이터 기반으로 미래 행동을 예측하는 업무에 적용될 수 있습니다. 예를 들어, 시계열 기반의 고객 데이터는 구매 클릭-스트림 이력을 저장하고 향후 구매 패턴을 예측하는 용도로 활용될 수 있으며, 고객 지원 부서에서 고객 기반의 CRM 업무에 활용할 수 있습니다. 이러한 다른 유형의 분석이 수행되는 동안, 데이터의 입력 및 변경이 데이터 개별적으로 또는 배치 형태로 발생될 수 있기 때문에 읽기 작업 성능에 영향을 미칠 수 있습니다. Kudu는 확장 가능하며 효과적인 방식으로 다양한 접근 패턴을 동시에 수용할 수 있습니다.

Kudu는 시계열 워크로드에 적합한 스토리지입니다. 즉, Kudu의 해쉬-기반 파티셔닝 기능과 복합 행 키(Compound row keys) 지원 기능을 활용하여,  Range 파티셔닝 사용시 일반적으로 발생되는 "hotspotting"의 위험없이 복수 서버에 분산된 테이블 구성을 단순화할 수 있습니다. Kudu의 컬럼형 스토리지 엔진은 시계열 워크로드는 전체 Row에 대한 읽기 작업 대신 업무적으로 필요한 몇 개의 컬럼에 대한 읽기 작업을 요구 하기 때문에 컨텍스트에 유용합니다.

과거 빅데이터 영역에서 다양한 데이터 접근 패턴을 수용하기 위해 여러 데이터 저장소를 사용해야 했습니다(예: HDFS 및 NoSQL). 이는 애플리케이션이나 플랫폼 아키텍처를 복잡하게 만들며, 데이터를 중복으로 저정해야 하는 문제가 발생하였습니다. 즉, Kudu를 활용하면, 다양한 워크로드를 단일 스토리지 영역에서 수용하기 때문에 앞서 언급한 다양한 아키텍처 및 스토리지 활용에 대한 많은 문제를 효율적으로 해결할 수 있습니다.

Concepts and Terms

Columnar Datastore

kudu는 컬럼형 데이터저장소로 컬럼 기반의 스키마 설계된 저장소에 데이터를 저장합니다. 이러한 이유로 Kudu는 분석 및 데이터 웨어하우스 워크로드에 적잡한 데이터 저장소입니다.

Table

테이블은 Kudu에 데이터가 저장되는 장소입니다. 테이블은 스키마와 Primary Key를 가지고 있습니다. 하나의 테이블은 Primary Key에 의해 태블릿이라는 세그먼트로 분활되어 저장됩니다. 

Tablet

태블릿은 관계형 데이터베이스의 파티션과 유산한 단일 테이블의 분활들입니다. 하나의 태블릿은 다중 태블릿 서버에 복제되며, 복제본 중 하나가 Leader Tablet이 됩니다. 모든 복제본에서 데이터 Read 서비스를 제공할 수 있으며, Write 작업을 모든 태블릿을 제공하는 태블릿 서버 그룹간의 합의를 통해 수행됩니다. 

 

 


https://imp51.tistory.com/entry/Apache-Kudu

 

Apache Kudu 소개

Apache Kudu는 Hadoop 플랫폼용으로 개발된 컬럼어 스토리지이며, 하둡 에코 프로젝트의 기본 사항인 범용 하드웨어 사용, 수평 확장성 및 가용성 보증과 같은 속성을 그대로 지원합니다. Kudu의 혜��

imp51.tistory.com

https://d2.naver.com/helloworld/9099561

콘텐츠 통계 서비스 시스템은 크게 데이터 입수와 사용자 서비스 제공으로 나눌 수 있다.

데이터 입수는 배치(batch) 처리를 통한 입수만 사용한다. Kudu는 배치 처리를 통한 입수와 실시간(real-time) 입수를 모두 지원하지만 콘텐츠 통계 서비스에서는 실시간 입수는 사용하지 않는다. 외부 시스템에서 이전 날짜의 데이터를 받아 하루에 1회 배치 작업(batch job)을 실행해 데이터를 입수한다. 데이터 분산과 질의 처리의 병렬성을 높이기 위한 Salting 전략, 최신 데이터 제공을 위한 버전 부여 등을 실행한다.

서비스 제공에는 자체 질의 처리 엔진을 사용한다. 배치 작업으로 저장한 데이터가 있는 Kudu 태블릿 서버에 API 서버를 통해 직접 질의한다. 질의 패턴에 따라 다르지만 대부분 수십 밀리초 이내, 느려도 수백 밀리초 이내로 빠르게 질의 처리 결과를 제공한다.

 

 

 

Impala

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

Impala는 분산 병렬 질의 처리 엔진이다. 다양한 스토리지를 연동해 사용자에게 친숙한 SQL로 질의할 수 있으며, 스토리지 엔진(storage engine)이 제공하지 않는 연산을 Impala를 통해 실행할 수도 있다. Impala가 제공하는 Kudu 질의 처리 기능을 테스트한 후 SQL을 통해 쉽게 데이터의 저장, 조회, 변경이 가능한 것을 확인했다. 다만 간단한 질의에도 메타 정보 확인, 실행 플랜 계획 등 스토리지에 적합하게 처리해야 하는 작업을 위한 시간 비용이 항상 포함되기 때문에 OLTP 성격 질의 처리에는 사용하기 어려웠다.

Spark SQL

  • 웹 사이트: https://spark.apache.org/sql
  • 종류: 질의 처리 엔진
  • 장점: 메모리 기반의 빠른 연산
  • 단점: 질의 처리를 준비하는 시간이 다소 김

Spark SQL은 Spark에서 SQL을 통해 질의 처리할 수 있는 모듈이다. Spark에서 제공하는 인터페이스를 구현하고 있다면 Spark로 연동이 가능하며 다양한 스토리지에서 RDD(resilient distributed dataset) 구조로 데이터를 조회해 메모리 기반 연산 결과를 반환한다.

콘텐츠 통계 서비스의 Kudu에 데이터를 입수할 때는 Spark의 KuduContext 객체를 사용했다. 서비스 운영을 위해 Kudu에 저장된 데이터를 조회할 때는 Impala가 더 빠르기 때문에 Spark SQL을 사용하진 않았다. 서비스를 위한 '읽기'는 전용 질의 처리 엔진을 직접 개발해 처리했다.

 

Kudu

  • 웹 사이트: https://kudu.apache.org
  • 종류: 데이터 저장소
  • 장점: 작은 데이터 크기, 빠른 스캔, 업데이트와 삭제 가능(mutable storage)
  • 단점: 질의 처리 기능의 부재, 운영 도구 미흡

Kudu는 칼럼 기반 데이터 스토리지다. 대량의 데이터도 작은 용량으로 압축돼 저장되며 primary key를 통해 접근할 때 빠른 스캔 속도를 자랑한다. 또한 빅데이터 스토리지인데도 업데이트와 삭제가 가능하다. 그러나 자체적인 질의 처리 기능은 제공하지 않기 때문에 별도로 질의 처리 엔진을 구현하거나 Impala와 같은 질의 처리 엔진과 연동해야 한다.

 

 

https://www.slideshare.net/deview/215-67608986

 

[215]네이버콘텐츠통계서비스소개 김기영

네이버 콘텐츠 통계서비스 소개 및 구현 경험 공유 김기영 DB검색개발

www.slideshare.net

 

댓글

Designed by JB FACTORY