数据湖引擎-dremio-白话数据架构

Posted yjplxq

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据湖引擎-dremio-白话数据架构相关的知识,希望对你有一定的参考价值。

版本:dremio15

注:
SQL一直是一个比较理想的数据使用方式,而我们在数据组件逐渐演进过程当中有推出Mapreduce, RDD等多种对数据的处理方式,补充SQL的不足;但大家都在
探索SQL自动转义的策略,比如hql尝试转换为mr,而sparksql转义为rdd,都是为了让数据查询的方式简单化。有人认为dremio只有SQL是一个不足,我认为这不是不足。

一、dremio是什么

      ​​Dremio​​是新一代的数据湖引擎,他是一款完整的产品,通过界面化的SQL输入查询数据湖的数据。

      Dremio严格遵守了维基的数据湖定义,把一些诸如oracle的库标注为第三方库,我在图里就直接跟hive并列到一起

图1: dremio数据流程图

     数据湖引擎-dremio-白话数据架构_dremio

​dremio 成立之初核心三大组件​

图2:dremio雏形

                         数据湖引擎-dremio-白话数据架构_数据_02

二、dremio四大利器

  1. apache arrow --同impala
  2. 自助语义层 ---用户体验优于大多数大数据组件
  3. data reflection ---对标kylin
  4. ELT的新思路 ---对比ETL传统调度


1. ​​apache arrow​

1.1  ​​arrow​​相关的产品

impala也是基于apache arrow,但我推荐顺序如下:

dremio>presto>impala

做了个简单对比:

POC测试-简单查询 :20亿数据


dremio

impala

presto

速度上限

245毫秒

同dremio

14秒左右

易用性

自助语义层

满足资深程序员使用

满足普通程序员使用

资源消耗


内存  -高

网络Io – 优化


内存 –高

网络Io – 优化



内存

网络Io –



1.2 arrow 具体是什么

Apache Arrow is a development platform for in-memory analytics. 
It contains a set of technologies that enable big data systems
to process and move data fast.

arrow的网上翻译比较多了,我简单解读就是发展路径:

图3: arrow组成

数据湖引擎-dremio-白话数据架构_数据架构_03


  1. arrow 列式内存
  2. arrow flight  -- 数据传输
  3. arrow 的 SIMD

简述下arrow flight, arrow flight 目标是统一传输协议,不需要序列化和反序列化,并且因为是列式存储,他体现如下:

图4: arrow 统一内存

数据湖引擎-dremio-白话数据架构_数据湖引擎_04


2.自助语义层

这一层主要是体现用户通过UI操作dremio,数据从PDS抽取为VDS为用户查询

数据湖引擎-dremio-白话数据架构_数据架构_05


3. data reflections
Raw reflections –
A raw reflection includes one or more fields from the anchor dataset, sorted, partitioned and distributed by specific fields.
Aggregation reflections –
An aggregation reflection includes one or more dimension and measure fields from the anchor dataset, sorted, partitioned and distributed by specified fields.
External reflections –
An external reflection is an un-managed reflection, which allows users to leverage existing datasets and summary tables built in external system as reflections in Dremio.

主要分为三大类,目前社区版可支持raw reflections,aggregation reflections。

raw reflections  粗浅理解为 建立一个多变关联的宽表

aggregation reflections 与kylin的 预聚合有些相似,相对raw reflections更具体,处理的数据量更小,但是要提前做计算。


4. ELT的新思路

     前面文章提到过,这里简述一下:

ETL典型的数仓建设思路,通过数据抽取,转换,加载到数据集市,提供查询

ELT是直接通过SQL查询数据湖,而ODS层,DW层都可以被数据湖引擎-dremio随时调用,业务人员可以随时查询我们的数据,不需要等待一个很明确的数据集市落地。

我们理解:

数据湖引擎-dremio-白话数据架构_数据架构_06

实际上我们使用中:

数据湖引擎-dremio-白话数据架构_数据架构_07

数据湖引擎dremio-可以支持从ODS-DW-DM 任意一层进行查询,这样我们的数据科学家们可以随时获取我们的数据,还可以对我们数据集市的建立提供更切合实际的数据结构。


三、 dremio存在的问题

  1. 执行计划需要改进,最大的问题
  2. reflections没有合理规划,容易膨胀,这个在kylin也有同样问题。 且dremio15社区办,没有自动清理功能
  3. 内存分配策略可以加强,诸如spark会建立多个容器,presto会考虑单独处理大查询等

以上是关于数据湖引擎-dremio-白话数据架构的主要内容,如果未能解决你的问题,请参考以下文章

基于MinIO/Deleta Lake/Dremio和Superset或Metabase搭建简单的数据湖

数据仓库数据集市数据湖,你的企业更适合哪种数据管理架构?

Dremio:使数据分析民主化

数据湖架构及概念简介

数据湖vs数据仓库vs数据集市

数据库 vs 数据集市 vs 数据仓库 vs 数据湖