数据湖引擎-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数据流程图
图2:dremio雏形
二、dremio四大利器
- apache arrow --同impala
- 自助语义层 ---用户体验优于大多数大数据组件
- data reflection ---对标kylin
- 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组成
- arrow 列式内存
- arrow flight -- 数据传输
- 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更具体,处理的数据量更小,但是要提前做计算。
4. ELT的新思路
前面文章提到过,这里简述一下:
ETL典型的数仓建设思路,通过数据抽取,转换,加载到数据集市,提供查询
ELT是直接通过SQL查询数据湖,而ODS层,DW层都可以被数据湖引擎-dremio随时调用,业务人员可以随时查询我们的数据,不需要等待一个很明确的数据集市落地。
我们理解:
实际上我们使用中:
数据湖引擎dremio-可以支持从ODS-DW-DM 任意一层进行查询,这样我们的数据科学家们可以随时获取我们的数据,还可以对我们数据集市的建立提供更切合实际的数据结构。
三、 dremio存在的问题
- 执行计划需要改进,最大的问题
- reflections没有合理规划,容易膨胀,这个在kylin也有同样问题。 且dremio15社区办,没有自动清理功能
- 内存分配策略可以加强,诸如spark会建立多个容器,presto会考虑单独处理大查询等
以上是关于数据湖引擎-dremio-白话数据架构的主要内容,如果未能解决你的问题,请参考以下文章