tez什么意思_传统数仓和大数据数仓的区别是什么?

fe77bdc0535e5dab6cee5ea4413b7421.png

概念与容器

为什么先说这个,其实很简单:因为绝大多数人都把这两个概念混为一谈。然后就会出现各种各样的问题:oracle不是数据库么,怎么又是数据仓库?Hive不是数据仓库么?怎么又是数据库?

数据仓库、数据库是一个概念,是一些技术的集合。类同于切菜刀法和雕刻刀法;

Oracel、DB2、MySQL、Hive是一个容器,是一种工具。类同于一把刀。

当我们在说数据仓库的时候,我们在说什么?说的是你用的mysql还是oracle?用的是Hive还是Kylin?用的是druid还是doris?都不是!因为这些是实现数据仓库的工具!

我们在说数据仓库的时候,我们实际上说的是一种面向主题,沉淀历史不可变信息,对明细数据进行汇总的,为决策提供在线分析服务的数据技术的集合。

我们在实现数据仓库的时候,需要用到数据仓库设计(数据库设计工具)、数据存储技术(数据库工具)、数据处理技术(ETL工具、监控报警)、数据管理技术(元数据、数据地图、血缘关系)等等技术。

而oracle、mysql、hadoop等都只是数据存储技术中的一种而已。

数据仓库发展历史

1、数据仓库概念诞生

数据仓库概念公认最早的定义者,是数据仓库之父比尔·恩门(Bill Inmon)在1991提出的。在此之前,所有的业务操作数据和分析数据都是存在一个数据库中的,并没有分开。

627ed866121e476ceb92f314ec927e7d.png

这个inmon就是inmon、kimball建仓方法论的inmon,是不是很熟悉?

如同绝大多数新概念一样,刚诞生的数据仓库同样遭受到了巨大的失败。inmon的建设理念是自上而下,这个上指的是数据的上游,不是数据分层的上层。

0be3274735045ee53096ca2682771925.png

大家都是做数仓的,你肯定理解为什么一开始数据仓库概念会惨败。因为自上而下太难见效,得把所有的业务理清楚,把所有系统的数据理清楚,然后分主题分层一点点的设计,然后按照这个设计一层层的建。而且一旦其中有任何变动,整个设计全废。所以第一批吃螃蟹的那些公司基本上都是小白鼠。

2、数据集市概念诞生

这个时候,有个英雄站出来了,这就是Kimball,他写了一本书《The DataWarehouse Toolkit》,开启了数据集市的狂潮,也开创了另一种数据仓库建设的流派-Kimball的自下而上流派。这个上、下也是上下游的意思。Kimball建议,百鸟在林,不如一鸟在手。先搞一个销售部门,摸清销售部门的需求,等于把下游的需求先锁死。然后再顺藤摸瓜,把数仓的每一层设计好,最后再摸到业务系统(CRM+ERP+人力系统),找业务系统的数据,这样就建立了一个销售部门级的数据集市。

4eb163063a9f8b99d2856aa472aa226f.png

由于这种方法的需求少了,设计工作少,难度也就低了,对应的建设难度和工作量也少,建设速度就快,见效也就快啊,非常利于工作的开展。所以数据集市大行其道。

3、DWDM融合

两派吵了很久很久,各自都有死忠,也都有对的理由,各自也都说服不了对方。双方也明白了:“one size fits all”一码通用是不可能的。终于在1998年, Inmon提出了新的BI架构CIF(CorporationInformation Factory,企业信息工厂)。

ea4c415404b54c4281c11cd1d5a63b60.png

上面这张图就是inmon老爷子画的,看上去很乱对吧?其实按照咱现在的视角看就很清晰了:

beb12392d6111d5c0c8e4d03bd101b8c.png

这个架构是不是很熟悉?对!这个架构从1998年到现在,就没变过!而且也是所有数据仓库建设的框架性指南。

4、实时数仓

一直到最近两年,实时处理技术的飞速发展,才将数据仓库的架构往前又推了一步,出现了实时数仓。实时数仓又分为批数据+流数据、批流一体两种架构。从这里开始,也就正式进入了大数据环境下的数据仓库范畴。

大数据环境下的数据仓库

1、离线数仓

刚转到大数据环境中的哥们会很奇怪,为啥有一个数仓叫离线数仓?从来没听过啊!

其实离线数仓就是咱以前做的传统数仓,数据以T+1的形式计算好放在那里,给前台的各种分析应用提供算好的数据。这也被称为“大数据的批处理”。只不过原本的单体环境工具(oracle、informatica等)基本都被替换成了大数据体系内(Hadoop、Hive、Sqoop、oozie等)的工具而已。

32ac4b1b10e84712874e93cb70d382cf.png

大数据环境中工具清单:

  • 数据采集:flume/logstash+kafka,替代传统数仓的FTP;
  • 批量数据同步:Sqoop、Kettle,跟传统数仓一样用Kettle,部分商用ETL工具也开始支持大数据集群;
  • 大数据存储:Hadoop HDFS/Hive、TiDB、GP等MPP,替代传统数仓的Oracle、MySQL、MS SQL、DB2等;
  • 大数据计算引擎:MapReduce、Spark、Tez,替代传统数仓的数据库执行引擎;
  • OLAP引擎:Kylin/druid,(Molap,需预计算)、Presto/Impala,(Rolap,无需预计算),替代BO、Brio、MSTR等各种BI工具。

2、实时计算

就是因为有实时数据处理,所以才会有离线数据处理。相对应的也就有实时数仓和离线数仓。实时数仓最开始是在日志数据分析业务中被广泛使用,后来在各种实时战报大屏的推动,实时数仓开始应用。

f58ee5eccf77d4ac4bdd1def5d20ce93.png

与离线计算相比,实时计算这边减少了数据落地,替换了数据计算引擎,目前纯流式数据处理基本上就只有Spark Streaming了。Storm会丢数据,Flink是批流一体的。实时数据计算好结果后,可以落地到各种数据库中,也可以直接对接到大屏进行展示。

大数据环境下的数据仓库架构

1、Lambda 架构

Lambda架构核心就三个:批数据处理层、流数据处理层和服务层。批数据处理层应对历史长时间数据计算,流数据处理层应对短时间实时数据计算。如果一个需求要历史到当前所有数据的累加结果,那就在服务层将两部分数据进行累加就好了。

dec98960f7813c7944bc84f8ac660b6f.png

Lambda架构需要维护两套计算引擎,如果需要历史到现在实时数据的累加,则需要在两边同时做相同的计算,然后还得加总一下,非常麻烦。因此就有了最近非常火热的Kappa架构。

2、Kappa 架构

Kappa架构的设计很有意思。Lambda架构反正还是分离线和实时两部分的,所以可以从离线库和实时消息队列取数,分别计算后,在服务层加总就可以了。

Kappa的设计理念是:干脆不要离线了,全部都进行流式计算。流式计算的数据来源是消息队列,那我把所有需要计算的数据放在消息队列里就好了,然后让流计算引擎计算所有数据不就好了?

c9eb86c702f2596bdfc0df0e277dcfa6.png

因为所有数据都存在Kafka,上面接Flink批流一体数据处理引擎将kafka的数据计算好存在服务层的table n中。如果需求有变化了,就讲kafka的offset调整一下,Flink则重启一个任务重新计算,存在table N+1中,当N+1的数据进度赶上table n了,就停掉table n的任务。

3、Kappa 架构+查询+分析展示

Kappa架构只到数据服务层,Flink本身只是一个计算引擎,因此还需要一个提供快速查询的工具和一个展示的工具。所以现在的架构就变成了这样:

355002bbbc7a997aa789e4737eeb9910.png

总结

综上所述,传统数仓和大数据环境下的数仓还是有很多区别的:

7029a66a10d0a187268bffe6b4c6695b.png
  • 数仓设计的工具都是一样的,这个不会变;
  • 由于大数据集群中,表关联的代价比较大,因此数仓建模会更多的使用宽表,所以这里会有一些变化;
  • 数据处理和调度工具用kettle基本都OK,没啥太大变化,但是需要了解一下Flume、Kafka等工具;
  • 数据存储这边需要深入了解一下,这是单体数据库和集群数据库的差别,会有分布式一致性的各种乱七八糟的问题;
  • 数据计算引擎也有变化,也是单体数据库和集群数据库的差别。分布式计算会有数据倾斜、join代价高等问题,所以优化的方法和方向也不一样;
  • 数据总体架构设计的时候也会有所变化,传统数仓整个BI套件就ok了,大数据环境下可能要面对更多的各种复杂需求,所需的大数据组件就变多了,需要系统学习。

建议传统数据仓库工程师的转型路线:

传统数仓-离线数仓(批数据处理)-实时数据处理(流数据处理)-lambda架构-kappa架构(批流一体)。

来源网络侵删

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/355133.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

华为M2平板打不开云课堂_能运行PC应用的安卓生产力平板:华为MatePad Pro 5G登场...

当手机屏幕无法承担更复杂的工作任务,当PC重量不能满足更随性的移动办公,拥有全面屏和便携优势的平板电脑或是中间值,但前提是其必须拥有足够强大的生产力。5月27日华为在国内上市的其首款5G平板——华为MatePad Pro 5G,就是5G时代…

soa示例_SOA示例应用程序

soa示例SOA描述了一组用于创建松散耦合的,基于标准的,与业务相关的服务的模式,由于描述,实现和绑定之间的关注点分离,因此提供了新的灵活性。 近年来,至少在参与大多数信息技术活动的人们中,面向…

body curl 设置post_curl 命令详解

常用参数常用参数分类# 调试类-v, --verbose 输出信息-q, --disable 在第一个参数位置设置后 .curlrc 的设置直接失效,这个参数会影响到 -K, --config -A, --user-agent -e, --referer-K, --config FILE …

NetBeans Java EE技巧7:忽略的Java类和XHTML编辑器快捷方式

有时,最被忽略的是IDE最有用的功能。 在本文中,我将概述在开发Java EE应用程序时可以使用的五个NetBeans Java和XHTML编辑器快捷方式。 #1 –轻松修复命名空间和类 也许您已经向尚未声明名称空间的视图中添加了新的JSF标记,或者…

python学习第三十二节(进程间通信、进程池、协程)

当多线程创建完毕之后,start并没有了立刻运行,依旧需要和其他线程抢CPU的资格,只是时间很短。进程之间的通信分为两种,queue和pipe 1 import multiprocessing2 def foo(q):3 q.put([1,hello,True])4 if __name____main__:5 …

备份ad_IT管理公开课——备份恢复解决方案

时间:2020年5月28日 14:00内容:调查显示,44%的客户面临意外删除或修改数据,如果没有提前备份,这些数据是很难恢复的。RecoveryManager Plus是一款针对AD域,Exchange,Sharepoint以及O…

Ajax中的url使用规则

Ajax中的url使用规则Ajax中的url使用规则如下: 先封装项目访问地址: String basePath request.getScheme() "://" request.getServerName() ":" request.getServerPort() request.getContextPath();然后在js中定义&#xff1…

[网络管理]全双工与半双工的差别

[网络管理]全双工与半双工的差别 同事说新办公室的网络一直不稳定,常常掉线延迟。检查进口线路和更换转接网线。都无法解决这个问题。预计是不是进口网线中一根或者2根短路,那就改动下网卡属性吧。 把自适应改成全双工10M模式,測试OK。全双工…

echarts大屏模板_完整的可视化大屏分享,科技感十足,各行业直接就能用

你的老板有没有要求过你做一个可视化大屏?或许在你看来,这就是一个无理的需求,很简单啊,做几个动态图表,直接投影到屏幕上不就行了?就算做出来能用数据增长业务吗?不懂为什么要拍脑袋做大屏&…

Java面试基础知识(1)

1、final, finally, finalize的区别final:修饰符(关键字)如果一个类被声明为final,没有子类也不能被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们…

bird 报表_轻松完成Birt报告

bird 报表这是使用Birt插件在Eclipse中构建报告的完整指南。 Birt或Business Intelligence and Reporting工具是一种无需编写太多Java代码即可生成报告的工具。 如果您使用的是ireport,那么您知道我在说什么:)(晶体报告..毫无意义…

通过kubeadm安装kubernetes 1.7文档记录[docker容器方式]

参照了网上N多文档,不一一列表,共享精神永存!!!! 获取所有安装包 安装包分为两类,rpm安装包和docker镜像 rpm安装包 rpm为以下四个 kubeadm-1.7.0-0.x86_64.rpm kubectl-1.7.0-0.x86_64.rpm ku…

san框架计数的textarea

san框架计数的textarea<template><div style"height: 100%;width:100%;"><div style"border-bottom: 1px solid #e7e7e7"><div style"height:230px;overflow: hidden;"><t-textarea id"cxfssy" value"…

京东五星电器送扫地机器人_京东五星电器联手打造互联网小家电“孵化器”

出新迭代迅速、件均价较低的生活小家电复购率高&#xff0c;易“种草”&#xff0c;是最具活力的家电品类。11月24日&#xff0c;京东小家电事业部联合京东五星电器召开“小家电发展战略沟通会”&#xff0c;美的、苏泊尔、九阳、小熊、雀巢、德龙、戴森、飞利浦、科沃斯等众多…

异或运算性质

异或性质**异或运算的性质**

星痕 轻松实现大屏数据可视化_数据美的历程有多难?大屏可视化轻松帮你实现...

看到这个数据可视化大屏&#xff0c;我们如何实现美感呢&#xff1f;正确的姿势必不可少&#xff01;当我们满怀激动地开始数据可视化时&#xff0c;请不要马上钻入某个细节里&#xff0c;不要急着考虑用什么酷炫的图表来展现&#xff0c;也不要纠结于用什么颜色、什么字体。而…

卡方检验检验水准矫正_【2008.】趋势性卡方检验专题讨论

学员提问学员老师&#xff0c;在SPSS中怎样实现线性趋势卡方检验呢&#xff1f;很多学员都为这个问题疑惑&#xff0c;下面我来详细介绍一下。老师1、线性趋势卡方检验的常用方法&#xff1a;线性趋势检验最常用的方法是&#xff1a;Cochran-Armitage Test for Trend(也就是the…

前端布局的一些收获

前端布局的一些收获这段时间做前端样式的改造&#xff0c;有一些收获&#xff0c;来记录一下(吐槽一句IE垃圾) 1.calc()函数 定义与用法 calc() 函数用于动态计算长度值。 需要注意的是&#xff0c;运算符前后都需要保留一个空格&#xff0c;例如&#xff1a;width: calc(10…

lua菜鸟教程_Lua语言学习

根据百科描述&#xff1a;Lua是一个小巧的脚本语言&#xff0c;是巴西里约热内卢天主教大学里的一个研究小组&#xff0c;由Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo所组成并于1993年开发。 其设计目的是为了嵌入应用程序中&#xff0c;从而为应…

如何使用插件生成自定义Java 8代码

大多数程序员讨厌的一件事就是编写样板代码。 无休止的时间花费在设置实体类和配置数据库连接上。 为了避免这种情况&#xff0c;您可以让Speedment Open Source之类的程序为您生成所有这些代码。 这样可以很容易地以最少的人工就可以启动和运行数据库项目&#xff0c;但是当将…