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

亦余心之所善兮,虽九死其犹未悔。这篇文章主要讲述数据湖引擎-dremio-白话数据架构相关的知识,希望能为你提供帮助。
版本:dremio15

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

一、dremio是什么      ??Dremio??是新一代的数据湖引擎,他是一款完整的产品,通过界面化的SQL输入查询数据湖的数据。
      Dremio严格遵守了维基的数据湖定义,把一些诸如oracle的库标注为第三方库,我在图里就直接跟hive并列到一起
图1: dremio数据流程图
         
??dremio 成立之初核心三大组件??
图2:dremio雏形
                                                 
二、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组成



  1. arrow 列式内存
  2. arrow flight    -- 数据传输
  3. arrow 的 SIMD
简述下arrow flight, arrow flight 目标是统一传输协议,不需要序列化和反序列化,并且因为是列式存储,他体现如下:
图4: arrow 统一内存



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



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更具体,处理的数据量更小,但是要提前做计算。
【数据湖引擎-dremio-白话数据架构】

4. ELT的新思路      前面文章提到过,这里简述一下:
ETL典型的数仓建设思路,通过数据抽取,转换,加载到数据集市,提供查询
ELT是直接通过SQL查询数据湖,而ODS层,DW层都可以被数据湖引擎-dremio随时调用,业务人员可以随时查询我们的数据,不需要等待一个很明确的数据集市落地。
我们理解:

实际上我们使用中:

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


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

    推荐阅读