Dremio : 더 간단하고 빠른 데이터 분석

Jacques Nadeau는 Dremio의 CTO이자 공동 설립자입니다.

지금은 개발자가되기에 좋은시기입니다. 지난 10 년 동안 기술에 대한 결정은 회의실에서 혁신적인 개발자로 옮겨져 오픈 소스로 구축하고 공급 업체가 제공하는 상업적 관계보다는 기본 프로젝트의 장점을 기반으로 의사 결정을 내립니다. 개발자의 생산성을 높이고 관리 및 확장이 더 쉬운 새로운 프로젝트가 등장했습니다. 이는 기술 스택의 거의 모든 계층에 해당됩니다. 그 결과 오늘날 개발자는 새로운 기술, 새로운 아키텍처 및 새로운 배포 모델을 탐색 할 수있는 거의 무한한 기회를 갖게됩니다.

특히 데이터 계층을 살펴보면 MongoDB, Elasticsearch 및 Cassandra와 같은 NoSQL 시스템은 각각 다른 데이터 모델과 스키마 접근 방식을 사용하는 운영 애플리케이션의 민첩성, 확장 성 및 성능 측면에서 한계를 뛰어 넘었습니다. 많은 개발 팀이 마이크로 서비스 모델로 이동하는 과정에서 애플리케이션 데이터를 다양한 기본 시스템에 분산 시켰습니다.

분석 측면에서 기존 데이터 원본과 새로운 데이터 원본은 기존 데이터웨어 하우스와 데이터 레이크 (일부는 Hadoop, 다른 일부는 Amazon S3)의 혼합으로 나아갔습니다. 그리고 Kafka 데이터 스트리밍 플랫폼의 부상은 데이터 이동 및 이동중인 데이터 분석에 대해 완전히 다른 방식으로 생각합니다.

다양한 기술과 기본 형식의 데이터로 인해 최신 데이터에 대한 분석은 어렵습니다. Tableau, Power BI, R, Python 및 기계 학습 모델과 같은 BI 및 분석 도구는 데이터가 단일 고성능 관계형 데이터베이스에있는 세상을 위해 설계되었습니다. 또한 이러한 도구의 사용자 (비즈니스 분석가, 데이터 과학자 및 기계 학습 모델)는 IT에 대한 의존없이 데이터를 직접 액세스, 탐색 및 분석 할 수있는 기능을 원합니다.

Dremio 데이터 패브릭 소개

BI 도구, 데이터 과학 시스템 및 기계 학습 모델은 데이터가 단일 고성능 관계형 데이터베이스에있을 때 가장 잘 작동합니다. 안타깝게도 오늘날 데이터가있는 곳이 아닙니다. 결과적으로 IT는 맞춤형 ETL 개발과 독점 제품의 조합을 통해 이러한 격차를 해소 할 수밖에 없습니다. 많은 회사에서 분석 스택에는 다음 계층이 포함됩니다.

  • 데이터 준비 . 데이터는 다양한 운영 데이터베이스에서 Hadoop 클러스터 또는 클라우드 스토리지 서비스 (예 : Amazon S3)와 같은 단일 스테이징 영역으로 이동됩니다.
  • 데이터웨어 하우스 . Hadoop 및 클라우드 스토리지에서 직접 SQL 쿼리를 실행할 수 있지만 이러한 시스템은 단순히 대화 형 성능을 제공하도록 설계되지 않았습니다. 따라서 데이터의 하위 집합은 일반적으로 관계형 데이터웨어 하우스 또는 MPP 데이터베이스에로드됩니다.
  • 큐브, 집계 테이블 및 BI 추출 . 대규모 데이터 세트에서 대화 형 성능을 제공하려면 OLAP 시스템에서 큐브를 구축하거나 데이터웨어 하우스에서 구체화 된 집계 테이블을 구축하여 데이터를 사전 집계 및 / 또는 인덱싱해야합니다.

이 다중 계층 아키텍처는 많은 문제를 야기합니다. 복잡하고 취약하며 느리며 데이터 소비자가 전적으로 IT에 의존하는 환경을 만듭니다.

Dremio는 셀프 서비스 데이터 패브릭이라고하는 데이터 분석의 새로운 계층을 도입합니다. Dremio는 비즈니스 분석가와 데이터 과학자가 위치, 크기 또는 구조에 관계없이 언제든지 모든 데이터를 탐색하고 분석 할 수있는 오픈 소스 프로젝트입니다. Dremio는 스케일 아웃 아키텍처와 컬럼 실행 및 가속화를 결합하여 모든 데이터 볼륨에서 대화 형 성능을 달성하는 동시에 IT, 데이터 과학자 및 비즈니스 분석가가 비즈니스 요구에 따라 데이터를 원활하게 구성 할 수 있도록합니다.

Apache Arrow, Apache Parquet 및 Apache Calcite 기반

Dremio는 Apache Arrow (메모리의 열) 및 Apache Parquet (디스크의 열)로 구동되는 고성능 열 저장 및 실행을 활용합니다. Dremio는 또한 Apache Hive와 같은 다른 많은 SQL 기반 엔진과 동일한 라이브러리를 기반으로 SQL 구문 분석 및 쿼리 최적화를 위해 Apache Calcite를 사용합니다.

Apache Arrow는 컬럼 형 인 메모리 데이터 처리 및 교환을 가능하게하는 오픈 소스 프로젝트입니다. Arrow는 Dremio가 만들었으며 Cloudera, Databricks, Hortonworks, Intel, MapR 및 Two Sigma를 비롯한 다양한 회사의 커미터가 포함되어 있습니다.

Dremio는 처음부터 Apache Arrow를 기반으로 구축 된 최초의 실행 엔진입니다. 내부적으로 메모리의 데이터는 Arrow 형식으로 힙을 벗어난 상태로 유지되며 쿼리 결과를 Arrow 메모리 버퍼로 반환하는 API가 곧 제공 될 것입니다.

다른 다양한 프로젝트에서도 Arrow를 채택했습니다. Python (Pandas) 및 R은 이러한 프로젝트 중 하나로 데이터 과학자가 데이터를보다 효율적으로 사용할 수 있도록합니다. 예를 들어 인기있는 Pandas 라이브러리의 제작자 인 Wes McKinney는 최근 Arrow를 통해 Python 사용자가 10GB / s 이상의 속도로 Pandas로 데이터를 읽을 수있는 방법을 시연했습니다.

Dremio가 셀프 서비스 데이터를 지원하는 방법

데이터 세트와 대화식으로 작업하는 기능 외에도 데이터 엔지니어, 비즈니스 분석가 및 데이터 과학자는 특정 프로젝트의 요구 사항에 적합하도록 데이터를 큐레이팅하는 방법이 필요합니다. 이는 데이터 소비자가 데이터 세트에 대한 요청을 시작하고 IT가 몇 주 또는 몇 달 후에 요청을 이행 할 때까지 기다리는 IT 중심 모델에서 근본적인 변화입니다. Dremio는 데이터 소비자가 Dremio의 데이터 큐 레이션 기능을 사용하여 IT에 의존하지 않고 데이터를 공동으로 검색, 큐레이팅, 가속화 및 공유하는 셀프 서비스 모델을 지원합니다.

이러한 모든 기능은 현대적이고 직관적 인 웹 기반 UI를 통해 액세스 할 수 있습니다.

  • 발견 . Dremio에는 사용자가 물리적 및 가상 데이터 세트를 검색하고 탐색 할 수있는 통합 데이터 카탈로그가 포함되어 있습니다. 데이터 카탈로그는 새 데이터 소스가 추가되고 데이터 소스와 가상 데이터 세트가 발전함에 따라 자동으로 업데이트됩니다. 모든 메타 데이터는 검색 가능한 고성능 인덱스로 인덱싱되며 Dremio 인터페이스를 통해 사용자에게 노출됩니다.
  • 큐 레이트 . Dremio를 통해 사용자는 가상 데이터 세트를 생성하여 데이터를 큐레이팅 할 수 있습니다. 다양한 포인트 앤 클릭 변환이 지원되며 고급 사용자는 SQL 구문을 사용하여 더 복잡한 변환을 정의 할 수 있습니다. 시스템에서 쿼리가 실행되면 Dremio는 데이터에 대해 학습하여 조인 및 데이터 유형 변환과 같은 다양한 변환을 권장 할 수 있습니다.
  • Dremio는 소스 시스템의 성능보다 최대 1000 배까지 데이터 세트를 가속화 할 수 있습니다. 사용자는 더 빨라야한다고 생각하는 데이터 세트에 투표 할 수 있으며 Dremio의 휴리스틱 스는 가속화 할 데이터 세트를 결정할 때 이러한 투표를 고려합니다. 선택적으로 시스템 관리자는 가속화 할 데이터 세트를 수동으로 결정할 수 있습니다.
  • Dremio를 사용하면 사용자가 다른 사용자 및 그룹과 안전하게 데이터를 공유 할 수 있습니다. 이 모델에서 사용자 그룹은 특정 분석 작업에 사용될 가상 데이터 세트에 대해 협업 할 수 있습니다. 또는 사용자가 Excel 스프레드 시트와 같은 자신의 데이터를 업로드하여 엔터프라이즈 카탈로그의 다른 데이터 세트에 조인 할 수 있습니다. 가상 데이터 세트의 작성자는 가상 데이터 세트를 쿼리하거나 편집 할 수있는 사용자를 결정할 수 있습니다. 데이터를위한 Google 문서와 같습니다.

Dremio 데이터 가속 작동 방식

Dremio는 데이터 반사라고하는 소스 데이터의 고도로 최적화 된 물리적 표현을 활용합니다. Reflection Store는 HDFS, MapR-FS, S3와 같은 클라우드 스토리지 또는 DAS (직접 연결 스토리지)에있을 수 있습니다. Reflection Store 크기는 실제 메모리 크기를 초과 할 수 있습니다. 이 아키텍처를 통해 Dremio는 더 낮은 비용으로 더 많은 데이터를 가속화 할 수 있으므로 기존의 메모리 전용 아키텍처에 비해 캐시 적중률이 훨씬 높아집니다. 데이터 리플렉션은 쿼리 시간에 비용 기반 최적화 프로그램에 의해 자동으로 활용됩니다.

데이터 반사는 최종 사용자에게 보이지 않습니다. OLAP 큐브, 집계 테이블 및 BI 추출과 달리 사용자는 데이터 리플렉션에 명시 적으로 연결하지 않습니다. 대신 사용자는 논리 모델에 대해 쿼리를 실행하고 Dremio의 최적화 프로그램은 최적화 프로그램의 비용 분석을 기반으로 쿼리에 적합한 데이터 반사를 활용하여 쿼리를 자동으로 가속화합니다.

옵티마이 저가 쿼리를 가속화 할 수없는 경우 Dremio는 고성능 분산 실행 엔진을 활용하여 컬럼 형 인 메모리 처리 (Apache Arrow를 통해)와 기본 데이터 소스에 대한 고급 푸시 다운 (RDBMS 또는 NoSQL 소스 처리시)을 활용합니다.

Dremio가 SQL 쿼리를 처리하는 방법

클라이언트 응용 프로그램은 ODBC, JDBC 또는 REST를 통해 Dremio에 SQL 쿼리를 실행합니다. 쿼리는 잠재적으로 다른 데이터 소스에 상주하는 하나 이상의 데이터 세트를 포함 할 수 있습니다. 예를 들어 쿼리는 Hive 테이블, Elasticsearch 및 여러 Oracle 테이블 간의 조인일 수 있습니다.

Dremio는 두 가지 기본 기술을 사용하여 쿼리에 필요한 처리량을 줄입니다.

  • 기본 데이터 소스로 푸시 다운합니다 . 옵티마이 저는 기본 데이터 소스의 기능과 상대적 비용을 고려합니다. 그런 다음 소스 또는 Dremio의 분산 실행 환경에서 쿼리 단계를 수행하는 계획을 생성하여 가능한 가장 효율적인 전체 계획을 달성합니다.
  • 데이터 반사를 통한 가속 . 최적화 프로그램은 가장 효율적인 전체 계획을 생성 할 때 쿼리의 일부에 데이터 반사를 사용합니다. 대부분의 경우 전체 쿼리는 기본 데이터 원본에서 쿼리를 처리하는 것보다 훨씬 효율적일 수 있으므로 데이터 리플렉션에서 서비스 할 수 있습니다.

쿼리 푸시 다운

Dremio는 처리를 관계형 및 비 관계형 데이터 소스로 푸시 다운 할 수 있습니다. 비 관계형 데이터 소스는 일반적으로 SQL을 지원하지 않으며 실행 기능이 제한됩니다. 예를 들어 파일 시스템은 술어 또는 집계를 적용 할 수 없습니다. 반면 MongoDB는 술어와 집계를 적용 할 수 있지만 모든 조인을 지원하지는 않습니다. Dremio 최적화 프로그램은 각 데이터 소스의 기능을 이해합니다. 가장 효율적인 경우 Dremio는 가능한 한 많은 쿼리를 기본 소스로 푸시하고 나머지는 자체 분산 실행 엔진에서 수행합니다.

운영 데이터베이스 오프로드

대부분의 운영 데이터베이스는 쓰기 최적화 된 워크로드를 위해 설계되었습니다. 또한 이러한 배포는 모든 다운 타임 또는 성능 저하가 비즈니스에 상당한 영향을 미칠 수 있으므로 엄격한 SLA를 해결해야합니다. 결과적으로 운영 체제는 분석 쿼리 처리에서 자주 분리됩니다. 이러한 경우 Dremio는 운영 시스템에 미치는 영향을 최소화하면서 가능한 가장 효율적인 쿼리 처리를 제공하는 데이터 리플렉션을 사용하여 분석 쿼리를 실행할 수 있습니다. 데이터 반영은 테이블 단위로 구성 할 수있는 정책에 따라 주기적으로 업데이트됩니다.

쿼리 실행 단계

쿼리 수명에는 다음 단계가 포함됩니다.

  1. 클라이언트는 ODBC / JDBC / REST를 통해 코디네이터에게 쿼리를 제출합니다.
  2. 계획
    1. 코디네이터는 쿼리를 Dremio의 범용 관계형 모델로 구문 분석합니다.
    2. 코디네이터는 데이터 소스에 대한 사용 가능한 통계를 고려하여 쿼리 계획 및 소스의 기능적 능력을 개발합니다.
  3. 코디네이터는 사용할 쿼리 계획을 다시 작성합니다.
    1. 데이터 반사의 순서, 분할 및 배포를 고려하여 사용 가능한 데이터 반사 및
    2. 데이터 소스의 사용 가능한 기능
  4. 실행
  1. 실행자는 소스에서 병렬로 Arrow 버퍼로 데이터를 읽습니다.
    1. 실행자는 재 작성된 쿼리 계획을 실행합니다.
    2. 하나의 실행자가 하나 이상의 실행자의 결과를 병합하고 최종 결과를 코디네이터에게 스트리밍합니다.
  1. 클라이언트는 코디네이터로부터 결과를받습니다.

데이터는 데이터 리플렉션 또는 기본 데이터 소스에서 가져올 수 있습니다. 데이터 소스에서 읽을 때 실행기는 계획 단계에서 최적화 프로그램에 의해 결정된 네이티브 쿼리 (예 : MongoDB MQL, Elasticsearch Query DSL, Microsoft Transact-SQL)를 제출합니다.

모든 데이터 작업은 실행기 노드에서 수행되므로 몇 개의 코디네이터 노드 만 사용하여 시스템을 여러 동시 클라이언트로 확장 할 수 있습니다.

쿼리 푸시 다운 예

Data Fabric이 데이터 아키텍처에 어떻게 적합한 지 설명하기 위해 SQL을 지원하지 않는 소스에서 SQL 쿼리를 실행하는 방법을 자세히 살펴 보겠습니다.

가장 인기있는 최신 데이터 소스 중 하나는 Elasticsearch입니다. Elasticsearch에 대해 좋아할 것이 많지만 분석 측면에서 SQL (SQL 조인 포함)을 지원하지 않습니다. 즉, Tableau 및 Excel과 같은 도구는이 데이터 저장소에 구축 된 응용 프로그램의 데이터를 분석하는 데 사용할 수 없습니다. Elasticsearch에 널리 사용되는 Kibana라는 시각화 프로젝트가 있지만 Kibana는 개발자를 위해 설계되었습니다. 비즈니스 사용자를위한 것이 아닙니다.

Dremio를 사용하면 Tableau를 비롯한 모든 SQL 기반 도구를 사용하여 Elasticsearch의 데이터를 쉽게 분석 할 수 있습니다. 예를 들어 JSON으로 저장된 Yelp 비즈니스 데이터에 대한 다음 SQL 쿼리를 살펴 보겠습니다.

주, 도시, 이름, 리뷰 수 선택

elastic.yelp.business에서

어디

  상태 NOT IN ( 'TX', 'UT', 'NM', 'NJ') 및

  review_count> 100

ORDER BY review_count DESC, state, city

제한 10

Dremio는 Elasticsearch가 처리 할 수있는 표현식으로 쿼리를 컴파일합니다.