草庐IT

离线数仓建设,企业大数据的业务驱动与技术实现丨03期直播回顾

袋鼠云数栈 2023-03-28 原文

原文链接:离线数仓建设,企业大数据的业务驱动与技术实现丨03期直播回顾

视频回顾:点击这里

课件获取:点击这里

一、离线数仓建设背景

离线数据是相对实时数据而言的数据产出,不同于实时数据,离线数据一般是T+1天处理,也就是说昨天产生的数据至少要今天才能看到计算结果。离线数据一般应用于对数据时效要求不高,需要基于一段时间的历史数据计算才能得到结果的场景,我们大致可以分为离线数据分析及数据应用两类,离线数据计算具备:数据准确度高、吞吐量大、计算成本低等特点。


file

离线数据应用的场景非常广泛,企业的数据迎来了爆发式的增长,目前企业数据规模巨大、数据类型多样、生成及处理速度极快、数据价值巨大但密度却较低,这些数据增长的场景,带来的是是我们传统的一些数据基础设施建设暴露出来的缺陷,比如自建数仓投入高、周期长、无法弹性扩缩容导致资金和人力成本投入越来越大;传统数仓在存储、搜索和分析挖掘等能力上的瓶颈也越来越突出。传统离线数据建设无法满足数据增长需求,数字化转型迫在眉睫,许多企业已经在转型或者在转型的路上。


file

但企业在数字化转型过程中并非一帆风顺,还面临着许多问题:

● 数据生产效率低

企业内部数据孤岛现象比较严重,不同部门自行搭建数据仓库,数据重复开发、难以共享,跨部门的数据需求响应周期长。

● 计算存储成本高

数据量增长后计算和存储的资源消耗也越来越大,此时资源利用不合理导致的数据延迟等问题也愈发突出。

● 数据质量问题频繁发生

因开发人员水平参差不齐,数据研发规范不统一等原因导致的质量问题频发且溯源困难。

● 数据安全难以保障

由于数据权限管理粒度粗、数据访问认证欠缺等一系列的问题导致重要数据泄露,数据安全难以保障。


file

因此在离线数仓数字化转型过程中,我们需要实现以下目标:

● 提升数据生成效率

● 提升数据质量

● 降低计算存储成本

● 保障数据安全

file

二、离线数仓建设方法论

如何帮助企业建设离线数仓,我们主要从以下五步骤入手:


file

1、业务调研

企业进行离线数仓建设的第一步是进行业务调研,业务调研的目标是梳理核心的业务流程,包括这个业务流程中涉及到的环节及主要人员,关注的重点数据指标是什么,以及数据来源,和数据量。从企业整体的角度探查数据需求可以帮助架构师进行数据计算存储底座和开发工具的选型。


file

2、技术选型

第二步技术选型阶段,首先是底座选型,底座选型的目标是确定我们需要把不同来源的数据统一汇集到哪个存储介质里,用什么样的方式进行计算。在工具方面,离线开发比较关注数据同步、数据开发、任务调度相关的一些工具,这些方面无论是开源还是商业版目前市面上都有很多类型的产品可供选择。


file

3、数仓域划分

第三步是数仓主题域和主题划分,一个主题域对应一个宏观的分析领域,可以理解为一个业务数据大类。主题域的划分方式根据企业内部需要可以按业务系统、需求、部门甚至是行业案例划分。主题域划分完成后可以继续往下划分一级主题二级主题,也就是数据大类下面的小类,直到划分到实体为止,那么整个主题域主题就划分完成了。


file

4、逻辑建模

第四步是逻辑建模,逻辑建模可分为指标体系梳理、实体关系调研、维度梳理及数仓分层这4个部分。


file

5、物理建模

在上面的四个步骤中我们已经把数仓框架搭建完成了,那么物理建模阶段就是根据业务需求进行数据开发代码编写和上线的过程。


file

三、离线开发实施流程

分享完离线数仓的建设方法论,接下来来为大家分享离线开发的实施流程。


file

● 第一步:数据集成(多源异构数据双向读写)

流程中的第一步数据集成,本质上是把来自一些数据库的数据经过数据的解析、转换后写入到相同或者异构的数据库这样一个过程,我们需要重点关注:

1、数据读写性能,关注工具是否能满足数据同步要求的速率;

2、异常恢复,当同步任务出现各种原因的异常中断时,能否从断点处继续进行数据读写,而不必每次出现异常都全部重新开始;

3、同步方式,关注同步工具能否支持全量、增量、批量的同步方式;

4、脏数据监控,如果源头或数据转换过程出现异常,这些异常数据能否进行记录和分析,帮助数据开发追溯数据质量问题来源。


file

● 第二步:数据开发

1、SQL数据加工

通过SQL代码实现数据加工逻辑,产出表的过程。需要关注的点是工具对于开发任务类型能否满足要求,开发界面是否友好,任务的调试,数据日志下载等基本功能是否满足。
图片


file

2、调度配置:编排任务有序按需执行

上一步完成代码开发后,还需要为开发任务进行调度属性配置,让任务根据设置的依赖关系和计划时间有序地运行。需要关注的重点是:稳定性与兼容性、任务依赖、周期调度。


file

● 第三步:任务发布

完成代码开发调试和调度配置后,我们就可以把数据开发任务从开发环境发布,也就是拷贝到生产环境中,由生产环境任务周期运行产生的数据就可以给业务方使用了。

一般数据开发会有三种环境模式。

1、单项目模式,也就是开发测试都在一个项目内完成,经过测试的任务直接跑生产数据,这种模式开发流程短,需求响应快,适合对数据稳定性和要求不高的场景,但大部分情况下我们不建议这么操作;

2、双项目模式,数据开发在开发项目中完成任务开发和测试,通过运维发布到生产环境中运行,开发项目和生产项目存在数据隔离,这种模式对数据安全比较有保障;


3、三项目模式,用户有两套网络相互隔离的集群,第一个集群用于数据开发和测试,数据开发在开发环境进行编码和自测,发布到测试环境由测试人员进行用例测试,测试完成的任务打包下载至本地,人工拷贝或传输到生产集群的项目下进行运行,这种模式虽然操作流程上多了一个环节,看起来比较麻烦,但由于网络隔离也最大程度上保证了生产数据的安全和稳定。

file

● 第四步:运维监控

任务运维就是全局掌控任务的运行,对于一些异常或紧急情况进行处理的过程。


file

● 第五步:数据安全

最后的数据安全其实贯穿在数据开发的整个流程中,数据安全包含数据权限管理、数据生命周期管理和数据访问认证等内容。


file

以上就是离线开发建设落地的全过程,那么是否有一款产品能满足上述需求呢?袋鼠云自研的数栈离线开发平台就完美符合这个情景。

云原生一站式离线数据开发平台(BatchWorks),具备灵活的多集群、多引擎对接能力,覆盖数据采集、数据开发、周期调度、监控告警等全链路功能。上线5年已服务500+客户,专注于提供数据开发解决方案,帮助企业快速完成数据中台离线数仓建设,加速释放数据价值。

file

同时产品具备以下特点:

● 一站式可视化智能数据开发

一个平台覆盖完整数据开发流程,减少组件运维成本与流程衔接操作,让用户专注于业务本身。全流程可视化操作附带语法提示,智能调度与监控等多种辅助功能,减少上手成本,让更多用户参与数据使用。

● 多集群多引擎弹性兼容

支持输出自研Hadoop集群,同时可对接CDH、HDP、TDH等多集群及Oracle、TiDB等多引擎;节点资源可根据计算存储需求快速弹性伸缩,业务需求稳定响应。

● 全流程多维安全保障

多租户多项目组织结构实现数据权限隔离的同时支持灵活的申请授权;多角色内置权限点实现功能隔离;数据权限全流程校验,关键操作细粒度审计,最大限度减少生产安全事故。

四、离线数仓建设案例

接下来我们分享两个使用数栈离线开发平台完成数仓建设的实际案例,让大家切实感受产品给客户带来的实际价值。

● 某银行客户

file

● 某高校客户

file

原文来源:VX公众号“数栈研习社”
袋鼠云开源框架钉钉技术交流群(30537511),欢迎对大数据开源项目有兴趣的同学加入交流最新技术信息,开源项目库地址:https://github.com/DTStack

有关离线数仓建设,企业大数据的业务驱动与技术实现丨03期直播回顾的更多相关文章

  1. ruby - 完全离线安装RVM - 2

    我打算为ruby​​脚本创建一个安装程序,但我希望能够确保机器安装了RVM。有没有一种方法可以完全离线安装RVM并且不引人注目(通过不引人注目,就像创建一个可以做所有事情的脚本而不是要求用户向他们的bash_profile或bashrc添加一些东西)我不是要脚本本身,只是一个关于如何走这条路的快速指针(如果可能的话)。我们还研究了这个很有帮助的问题:RVM-isthereawayforsimpleofflineinstall?但有点误导,因为答案只向我们展示了如何离线在RVM中安装ruby。我们需要能够离线安装RVM本身,并查看脚本https://raw.github.com/wayn

  2. ruby - 如何根据特征实现 FactoryGirl 的条件行为 - 2

    我有一个用户工厂。我希望默认情况下确认用户。但是鉴于unconfirmed特征,我不希望它们被确认。虽然我有一个基于实现细节而不是抽象的工作实现,但我想知道如何正确地做到这一点。factory:userdoafter(:create)do|user,evaluator|#unwantedimplementationdetailshereunlessFactoryGirl.factories[:user].defined_traits.map(&:name).include?(:unconfirmed)user.confirm!endendtrait:unconfirmeddoenden

  3. ruby-on-rails - 如何在 Ruby on Rails 中实现由 JSF 2.0 (Primefaces) 驱动的 UI 魔法 - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。问题1)我想知道ruby​​onrails是否有功能类似于primefaces的gem。我问的原因是如果您使用primefaces(http://www.primefaces.org/showcase-labs/ui/home.jsf),开发人员无需担心javascript或jquery的东西。据我所知,JSF是一个规范,基于规范的各种可用实现,prim

  4. 报告回顾丨模型进化狂飙,DetectGPT能否识别最新模型生成结果? - 2

    导读语言模型给我们的生产生活带来了极大便利,但同时不少人也利用他们从事作弊工作。如何规避这些难辨真伪的文字所产生的负面影响也成为一大难题。在3月9日智源Live第33期活动「DetectGPT:判断文本是否为机器生成的工具」中,主讲人Eric为我们讲解了DetectGPT工作背后的思路——一种基于概率曲率检测的用于检测模型生成文本的工具,它可以帮助我们更好地分辨文章的来源和可信度,对保护信息真实、防止欺诈等方面具有重要意义。本次报告主要围绕其功能,实现和效果等展开。(文末点击“阅读原文”,查看活动回放。)Ericmitchell斯坦福大学计算机系四年级博士生,由ChelseaFinn和Chri

  5. 华为OD机试用Python实现 -【明明的随机数】 2023Q1A - 2

    华为OD机试题本篇题目:明明的随机数题目输入描述输出描述:示例1输入输出说明代码编写思路最近更新的博客华为od2023|什么是华为od,od薪资待遇,od机试题清单华为OD机试真题大全,用Python解华为机试题|机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为o

  6. FOHEART H1数据手套驱动Optitrack光学动捕双手运动(Unity3D) - 2

    本教程将在Unity3D中混合Optitrack与数据手套的数据流,在人体运动的基础上,添加双手手指部分的运动。双手手背的角度仍由Optitrack提供,数据手套提供双手手指的角度。 01  客户端软件分别安装MotiveBody与MotionVenus并校准人体与数据手套。MotiveBodyMotionVenus数据手套使用、校准流程参照:https://gitee.com/foheart_1/foheart-h1-data-summary.git02  数据转发打开MotiveBody软件的Streaming,开始向Unity3D广播数据;MotionVenus中设置->选项选择Unit

  7. 基于C#实现简易绘图工具【100010177】 - 2

    C#实现简易绘图工具一.引言实验目的:通过制作窗体应用程序(C#画图软件),熟悉基本的窗体设计过程以及控件设计,事件处理等,熟悉使用C#的winform窗体进行绘图的基本步骤,对于面向对象编程有更加深刻的体会.Tutorial任务设计一个具有基本功能的画图软件**·包括简单的新建文件,保存,重新绘图等功能**·实现一些基本图形的绘制,包括铅笔和基本形状等,学习橡皮工具的创建**·设计一个合理舒适的UI界面**注明:你可能需要先了解一些关于winform窗体应用程序绘图的基本知识,以及关于GDI+类和结构的知识二.实验环境Windows系统下的visualstudio2017C#窗体应用程序三.

  8. MIMO-OFDM无线通信技术及MATLAB实现(1)无线信道:传播和衰落 - 2

     MIMO技术的优缺点优点通过下面三个增益来总体概括:阵列增益。阵列增益是指由于接收机通过对接收信号的相干合并而活得的平均SNR的提高。在发射机不知道信道信息的情况下,MIMO系统可以获得的阵列增益与接收天线数成正比复用增益。在采用空间复用方案的MIMO系统中,可以获得复用增益,即信道容量成倍增加。信道容量的增加与min(Nt,Nr)成正比分集增益。在采用空间分集方案的MIMO系统中,可以获得分集增益,即可靠性性能的改善。分集增益用独立衰落支路数来描述,即分集指数。在使用了空时编码的MIMO系统中,由于接收天线或发射天线之间的间距较远,可认为它们各自的大尺度衰落是相互独立的,因此分布式MIMO

  9. 【Java入门】使用Java实现文件夹的遍历 - 2

    遍历文件夹我们通常是使用递归进行操作,这种方式比较简单,也比较容易理解。本文为大家介绍另一种不使用递归的方式,由于没有使用递归,只用到了循环和集合,所以效率更高一些!一、使用递归遍历文件夹整体思路1、使用File封装初始目录,2、打印这个目录3、获取这个目录下所有的子文件和子目录的数组。4、遍历这个数组,取出每个File对象4-1、如果File是否是一个文件,打印4-2、否则就是一个目录,递归调用代码实现publicclassSearchFile{publicstaticvoidmain(String[]args){//初始目录Filedir=newFile("d:/Dev");Datebeg

  10. ruby - Arrays Sets 和 SortedSets 在 Ruby 中是如何实现的 - 2

    通常,数组被实现为内存块,集合被实现为HashMap,有序集合被实现为跳跃列表。在Ruby中也是如此吗?我正在尝试从性能和内存占用方面评估Ruby中不同容器的使用情况 最佳答案 数组是Ruby核心库的一部分。每个Ruby实现都有自己的数组实现。Ruby语言规范只规定了Ruby数组的行为,并没有规定任何特定的实现策略。它甚至没有指定任何会强制或至少建议特定实现策略的性能约束。然而,大多数Rubyist对数组的性能特征有一些期望,这会迫使不符合它们的实现变得默默无闻,因为实际上没有人会使用它:插入、前置或追加以及删除元素的最坏情况步骤复

随机推荐