AIㆍML / 개발자 / 데이터ㆍ분석 / 애플리케이션 / 오픈소스

리뷰 | 그린플럼 6, 두루 유용한 대규모 병렬 처리 데이터베이스

Steven Nunez | InfoWorld 2019.11.20
대규모 병렬 처리(Massively Parallel Processing, MPP) 데이터베이스는 데이터와 쿼리를 일반 서버로 구성된 클러스터의 각 노드로 분산시킨다. 그린플럼(Greenplum)의 MPP 데이터 웨어하우스 구축 방법은 독특하다. 기존 오픈소스 데이터베이스인 포스트그레SQL을 기반으로 삼는 덕분에 핵심, 즉 병렬화와 관련 쿼리 실행 계획, 분석을 위한 열 기반 데이터 저장소, 그리고 관리 기능에 가치를 더하는 데 엔지니어링 역량을 집중할 수 있다.
 
ⓒ Getty Images Bank 

그린플럼은 피보탈(Pivotal)이 소유하고 오픈소스 커뮤니티의 지원을 받아 개발하며 아파치 2 라이선스 하에 무료로 제공된다. 최신 릴리스인 그린플럼 6.0은 그린플럼 코어를 포스트그레SQL과 다시 통합하는 데 많은 공을 들여 포스트그레SQL 프로젝트의 6년분에 달하는 개선 사항을 통합했다. 이는 향후 그린플럼이 새로운 기능과 개선을 “무료”로 받고, 피보탈은 이렇게 추가된 기능이 병렬 환경에서 잘 작동하도록 하는 데 집중할 것임을 의미한다.


그린플럼 아키텍처

MPP 데이터베이스는 이른바 무공유(shared nothing) 아키텍처를 사용한다. 이 아키텍처에서 개별 데이터베이스 서버(포스트그레SQL 기반)를 세그먼트라고 하며 각 세그먼트는 데이터의 일부를 처리한 다음 결과를 마스터 호스트로 반환한다. 스파크(Spark), 솔라(Solr)와 같은 다른 데이터 처리 시스템에도 비슷한 아키텍처가 사용된다. 이는 그린플럼이 머신러닝이나 텍스트 분석과 같은 다른 병렬 시스템을 통합할 수 있게 해주는 핵심적인 아키텍처 특성이다.

예를 들어 솔라는 유사한 분산 아키텍처를 사용하므로 그린플럼은 개별 솔라 처리 인스턴스를 세그먼트 호스트에 연결해서 매끄러운 쿼리 및 분석 환경을 제공할 수 있다. 또한 데이터가 그 자리에서 처리되므로 값비싼 네트워크 간 데이터 이동도 없다.
 
ⓒ Pivotal


그린플럼 배포

그린플럼을 배포하는 방법은 여러 가지다. 주요 3개 클라우드에서 모두 각각의 마켓플레이스를 통해 컨테이너로, 또는 베어 메탈로 배포가 가능하다. 모든 클러스터 애플리케이션이 그렇듯이 전용 베어 메탈 머신을 사용할 때 가장 좋은 성능을 얻게 된다. 필자는 구글 클라우드 플랫폼에 2노드 클러스터를 모든 부가 요소와 함께 배포했는데 소요된 시간은 불과 몇 분 정도였다. 또한 사전 컴파일된 바이너리를 사용해서 약 1시간 만에 VM에 그린플럼을 로컬 설치했다.

로컬로 설치한 이유는 클라우드에서는 아직 그린플럼 6을 사용할 수 없기 때문이다. 이 기능은 2019년 11월 중에 지원될 예정이다. 또한 로컬 설치를 통해 그린플럼 문서의 품질을 평가할 수 있는 기회도 얻을 수 있었다. 오픈소스가 되기 전에 클로즈드 소스 사유 제품이었던 만큼 문서의 품질은 탁월하다.

배포 옵션이 여러 가지이므로 기업에서 각자의 운영 요건에 맞게 배포를 세밀하게 조정할 수 있다. 예를 들어 빠른 모델 개발을 위해 다중 노드 베어 메탈 클러스터에서 모델을 학습시킨 다음 REST 엔드포인트를 실행하는 단일 피보탈 포스트그레스 인스턴스에 컨테이너로 배포해 모델을 운용할 수 있다.


그린플럼 연합 쿼리

오늘날 데이터는 여러 위치에 여러 형식과 여러 “온도”로 존재한다. 그린플럼 5에 도입된 피보탈 익스텐션 프레임워크(PXF)는 이전의 HDFS 커넥터에서 그린플럼의 외부 데이터 테이블에 액세스하기 위한 범용적인 방법으로 발전했다. 또한 PXF는 텍스트 파일(예: 웹 로그), 외래 데이터베이스, ORC, 파켓(Parquet), HBase와 같은 다른 데이터 형식에도 연결된다. 새 데이터 소스는 자바 API를 사용해 PFX에 추가할 수 있다.

그린플럼은 PXF를 포스트그레SQL 9.4에 구현된 외부 액세스 기능과 결합해 카프카 스트림, HDFS, 스파크, 아마존 S3 객체 저장소를 포함한 여러 데이터 위치에 걸쳐 연합 쿼리를 수행할 수 있다. 아마존 S3 객체 저장소 쿼리 기능에는 아마존의 네이티브 S3 SELECT API가 포함되므로 엣지에서의 필터링을 통해 성능이 개선된다.

연합 쿼리는 생각보다 유용하다. 예를 들어 다음과 같은 조건에 맞는 모든 개인을 찾으려는 경우를 생각해 보자.

‘IDG’에서 일하며 서로를 ‘직접’ 알고 이름이 ‘더그(Doug)’ 또는 ‘스티브(Steve)’와 비슷하며 싱가포르 또는 샌프란시스코에서 지난 24시간 이내에 서로에게 전화를 건 사람

사기 사건 조사 또는 금융 규제 기관의 정보 요청에 대한 응답에서 사용될 만한 쿼리다. 일반적인 기업에서 이 정보는 대여섯 개 이상의 시스템에 분산돼 있고 답을 얻으려면 1주일 이상이 필요하다. 연합 쿼리를 사용하면 하나의 쿼리로 묶어서 1시간 이내에 답할 수 있다. 규제 기관의 감독이 엄격해진 시대에서 많은 기업이 질의에 대한 응답을 시한 내에 하지못해 벌금을 물고 있다. 연합 쿼리는 이 문제를 해결하는 데 많은 도움이 된다.


그린플럼 분석과 머신러닝

데이터 분석과 머신러닝을 위한 SQL 기반 라이브러리인 그린플럼의 MADlib 확장은 여러 대학과 그린플럼에 의해 처음 개발됐다. MADlib은 그린플럼의 무공유 병렬 아키텍처에서 작동하도록 설계됐다. 모든 머신러닝 알고리즘을 병렬화할 수는 없지만 가능한 경우 MADlib은 데이터 전송을 방지하면서 데이터 집합의 크기에 따라 대체로 선형적인 확장성을 구현한다. MADlib에는 가장 일반적으로 사용되는 50여 개의 머신러닝 알고리즘이 포함된다.

MADlib의 가장 유용한 기능 중 하나는 일반 데이터 과학자가 파이썬이나 R를 힘들게 배우지 않고도 값을 추가할 수 있게 해주는 SQL 인터페이스다. MADlib REST 엔드포인트를 통해 모델을 배포해서 분석 통찰력을 얻을 수 있다. 분석 성숙도가 중간 정도이며 챔피언/챌린저 의사 결정 관리 전략을 시행하는 기업이라면 SQL을 사용함으로써 중앙 팀의 리소스를 빼서 전환 배치하지 않고도 고려 대상 모델의 수를 늘릴 수 있다.

전통적인 데이터 분석가에게 피보탈R 커넥터(CRAN에서 받을 수 있음)는 클라이언트에서 R 코드를 대응하는 SQL 문으로 변환한 다음 실행을 위해 그린플럼 클러스터로 보내는 방식으로 MADlib에 대한 기존 R 언어 인터페이스를 제공한다. 이 방법을 사용하면 데이터 전송을 피하면서 대용량 데이터 프레임 조작이 가능하다. 즉, 예전에는 메모리 제약으로 인해 R에서 불가능했던 작업이 가능해진다.
 
ⓒ Pivotal


HTAP 데이터 웨어하우스

하이브리드 트랜잭션/분석 처리(Hybrid Transactional/Analytical Processing, HTAP)는 가트너가 만든 용어로, 다음과 같이 정의된다.

HTAP는 트랜잭션 처리와 분석 간의 “벽을 허무는” 새로운 애플리케이션 아키텍처다. HTAP는 더 정보에 근거한, “비즈니스 실시간” 의사 결정을 가능하게 해준다.

실제 사용 환경 관점에서 이 말은 시스템 사용 사례가 길고 짧은 쿼리, 업데이트와 삭제의 조합임을 의미한다. 그린플럼은 HTAP를 지원하고 리소스 고갈을 방지하기 위해 멀티 테넌트 HTAP 환경에서 리소스 격리를 허용하는, 리소스 그룹이라는 일종의 SQL 컨테이너화를 구현한다. 리소스 그룹을 사용하면 CPU, RAM(그룹 또는 쿼리별로), 최대 동시성을 제한할 수 있다. 리소스 그룹은 혼합 워크로드에서 성능을 개선하고 쿼리의 리소스 경합을 방지한다.

포스트그레SQL과 그린플럼의 중요한 차이점 중 하나는 쿼리 플래너다. 그린플럼은 포크될 당시 포스트그레SQL 쿼리 플래너를 물려받았지만 분산 환경에서의 효율적인 쿼리 계획은 단일 시스템의 경우와는 전혀 다르다. 이러한 이유로 그린플럼은 쿼리 최적화를 위한 캐스케이드 프레임워크(Cascades Framework for Query Optimization)를 기반으로 자체 쿼리 플래너를 만들었다. 이 알고리즘은 가능한 모든 쿼리 계획을 평가하고 비용을 할당해서 실행 시 가장 비용이 낮은(가장 빠른) 계획을 선택한다.

그린플럼은 쿼리 플래너에서 데이터 이동을 방지하는 데 도움이 되는 몇 가지 기능을 제공한다. 예를 들어 더 빠른 로컬 조인 작업과 조정 가능한 데이터 압축을 위해 클러스터의 각 노드에 차원 테이블을 복제하는 기능이 있다.

반구조적 데이터 처리는 포스트그레SQL에서 물려받았으며 JSON 및 JSONB, XML, 키-값 쌍(HSTORE), 일반 텍스트를 포함한다. 역시 포스트그레SQL에서 상속된 GIN(일반화된 역 색인)을 사용하면 빈번하게 사용되는 텍스트 열을 색인화할 수 있다. 더 복잡한 텍스트 쿼리에는 GPText를 사용할 수 있다. GPText는 그린플럼 세그먼트와 아파치 솔라 샤드를 통합해서 자연어 검색 쿼리 기능을 제공한다. 솔라 샤드는 동일한 노드에 있으므로 병렬 아키텍처도 동일하다.


그린플럼 성능

HTAP 데이터베이스에는 크고 장기간 실행되는 분석 쿼리와 짧은 임시 쿼리, 그리고 OLTP의 ACID 트랜잭션 간의 균형 조정이 필요하다. 그린플럼이 노리는 하이브리드 사용 사례에서는 이 혼합 워크로드 시나리오에서의 우수한 성능이 중요하다. 포스트그레SQL 9.4 커널은 그린플럼 6에 주로 잠금(lock)을 방지하기 위한 다양한 최적화를 부여했는데, 그 결과 TPC-B 벤치마크에서 그린플럼 5에 비해 성능이 60배 더 높아졌다.
 
ⓒ Pivotal

포스트그레SQL이 더 많은 최적화를 위한 기반을 마련했고 현재 버전 12임을 감안하면 그린플럼 7에서 커널이 다시 업그레이드될 때 더 많은 부분이 개선될 것으로 기대할 수 있다.


그린플럼 커맨드 센터

그린플럼 커맨드 센터(Greenplum Command Center)는 피보탈 제품으로, 그린플럼 클러스터(여러 클러스터도 가능)를 모니터링하고 관리하기 위한 웹 기반 인터페이스를 제공한다. 하드코어 DBA는 명령줄 인터페이스를 고집하겠지만 DBA의 손을 빌리기 어려운 부서 수준의 배포 관점에서 커맨드 센터는 반가운 관리 툴이다. 사용하기 쉽고 문서도 충실하다. 사용자, 쿼리, 노드, 세그먼트, 리소스 그룹 모두 인터페이스를 통해 쉽게 관리할 수 있다.
 
ⓒ IDG​​​​​


기업에서의 그린플럼

그린플럼은 예측 분석을 포함한 혼합 워크로드를 단일 플랫폼에서 처리할 수 있으므로 부서 단위의 표준으로 이상적인 선택이다. ELA 메뉴의 소프트웨어 구성요소를 선택하지 않거나 A.I. ‘파일럿 지옥’을 탈출하고자 하는 경우 그린플럼의 HTAP에 투자하면 경쟁 솔루션에 비해 낮은 가격으로 머신러닝과 분석의 혁신적인 사용을 늘릴 길을 마련할 수 있다.

또한 그린플럼은 엔터프라이즈급 네티자(Netezza) 또는 테라데이타(Tefadata)의 대체품으로도 적합하다. 그린플럼은 엔터프라이즈 전반에서 오라클 데이터베이스나 마이크로소프트 SQL 서버와 같은 OLTP와 경쟁할 정도는 아니지만 중간 규모의 트랜잭션 시스템 용도로는 잘 작동한다.

그림플럼은 80/20 규칙의 좋은 사례다. 한 가지 특정 작업을 그 작업을 위한 전용 툴만큼 잘 하지는 못하지만 80%의 사용 사례에서 대부분의 작업을 충분히 잘 수행하며, 여러 시스템을 연결하고 분석 파이프라인에 통합하는 데 따르는 조직 및 운영 측면의 오버헤드도 없다. 이는 총소유비용을 고려할 때 그린플럼에 매우 유리한 요소다.

- 비용: 아파치 2.0 라이선스에 따르는 무료 오픈소스
- 플랫폼: 소스코드, 또는 센트OS/레드햇/데비안/우분투 리눅스 배포판용 패키지로 제공되며 아마존 웹 서비스, 마이크로소프트 애저, 구글 클라우드 플랫폼 마켓플레이스에서도 제공됨 editor@itworld.co.kr 

회사명 : 한국IDG | 제호: ITWorld | 주소 : 서울시 중구 세종대로 23, 4층 우)04512
| 등록번호 : 서울 아00743 등록발행일자 : 2009년 01월 19일

발행인 : 박형미 | 편집인 : 박재곤 | 청소년보호책임자 : 한정규
| 사업자 등록번호 : 214-87-22467 Tel : 02-558-6950

Copyright © 2024 International Data Group. All rights reserved.