首页 > 编程知识 正文

业务架构与应用架构区别,数据中台和业务中台的关系

时间:2023-05-03 09:10:11 阅读:53264 作者:1601

公众号回复“架构”获取架构师的电子书和视频课程

首先,让我们来看看这张图。 这是一家公司使用的大数据平台的体系结构图,大多数公司应该是一样的。

从大数据的总体结构图来看,大数据的核心层是数据收集层、数据存储和分析层、数据共享层、数据APP应用层,虽然叫法可能不同,但本质作用相似。

因此,让我们根据这一体系结构图的线索,慢慢分析大数据的核心技术包括什么。

一.数据收集

数据收集的任务是从各种数据源收集数据并存储在数据存储中,在这期间可能会进行简单的清洗。 数据源类型很多:

网站日志

作为互联网行业,站点日志的份额最大,站点日志存储在多个站点日志服务器上。 通常,在每个站点日志服务器上部署flume代理,并实时收集站点日志并将其存储在HDFS中。

业务数据库

业务数据库的种类也有Mysql、Oracle、SqlServer等各种各样。 此时,迫切需要从各种数据库向HDFS同步数据的工具。 Sqoop是一种类型,但Sqoop太高,无论数据量如何,都需要启动和运行MapReduce,为了应对这个需要启动MapReduce的场景,开源数据是一个很好的解决方案,也是一个资源

当然,Flume还可以通过配置和开发将数据从数据库实时同步到HDFS。

来自Ftp/Http的数据源

合作伙伴提供的一些数据可能需要在Ftp/Http等时机获得,但DataX也能满足这一需求。

其他数据源

例如,一些手工输入的数据只需要提供一个接口或一个小程序就可以完成。

二、数据保存与分析

毫无疑问,HDFS是大数据环境中数据仓库和数据平台的理想数据存储解决方案。

离线数据分析和计算,即实时要求不高的部分,在笔者看来,Hive还是首选,是丰富的数据类型、内置函数; 压缩率非常高的ORC文件存储格式; 借助非常有用的SQL支持,基于结构化数据的Hive统计分析比MapReduce高效得多。 一句SQL可能完成的需求可能需要数百行代码才能开发MR。

当然,使用Hadoop框架自然也会提供MapReduce接口。 如果真的很乐意开发Java,或者不熟悉SQL,也可以使用MapReduce进行分析和计算;

Spark在这两年非常受欢迎,实际上性能比MapReduce更好,而且与Hive、Yarn的组合越来越好,因此需要支持Spark和SparkSQL的分析和计算。 因为已经有了Hadoop Yarn,所以使用Spark其实非常简单,不需要单独部署Spark群集。

三.数据共享

这里的数据共享实际上是指存储前面的数据分析和计算后的结果的地方,实际上是关系数据库和NOSQL数据库

以前使用Hive、MR、Spark、SparkSQL分析和计算的结果仍然在HDFS中,但很多业务和应用无法直接从HDFS获取数据时,需要共享数据的位置,以便各业务和产品可以轻松获取数据。 与从数据收集层到HDFS相反,这里需要一种用于将数据从HDFS同步到其他目标数据源的工具,并且同样DataX也是令人满意的。

此外,实时计算的一些结果数据可以由实时计算模块直接写入和共享。

四.数据应用

业务产品(CRM、ERP等)

业务产品使用的数据

,已经存在于数据共享层,直接从数据共享层访问即可;

报表(FineReport、业务报表)

同业务产品,报表所使用的数据,一般也是已经统计汇总好的,存放于数据共享层;

即席查询

即席查询的用户有很多,有可能是数据开发人员、网站和产品运营人员、数据分析人员、甚至是部门老大,他们都有即席查询数据的需求;

这种即席查询通常是现有的报表和数据共享层的数据并不能满足他们的需求,需要从数据存储层直接查询。

即席查询一般是通过SQL完成,最大的难度在于响应速度上,使用Hive有点慢,可以用SparkSQL,它的响应速度较Hive快很多,而且能很好的与Hive兼容。

当然,你也可以使用Impala,如果不在乎平台中再多一个框架的话。

OLAP

目前,很多的OLAP工具不能很好的支持从HDFS上直接获取数据,都是通过将需要的数据同步到关系型数据库中做OLAP,但如果数据量巨大的话,关系型数据库显然不行;

这时候,需要做相应的开发,从HDFS或者HBase中获取数据,完成OLAP的功能;比如:根据用户在界面上选择的不定的维度和指标,通过开发接口,从HBase中获取数据来展示。

其它数据接口

这种接口有通用的,有定制的。比如:一个从Redis中获取用户属性的接口是通用的,所有的业务都可以调用这个接口来获取用户属性。


五、实时计算

现在业务对数据仓库实时性的需求越来越多,比如:实时的了解网站的整体流量;实时的获取一个广告的曝光和点击;在海量数据下,依靠传统数据库和传统实现方法基本完成不了,需要的是一种分布式的、高吞吐量的、延时低的、高可靠的实时计算框架;Storm在这块是比较成熟了,但我选择Spark Streaming,原因很简单,不想多引入一个框架到平台中,另外,Spark Streaming比Storm延时性高那么一点点,那对于我们的需要可以忽略。

我们目前使用Spark Streaming实现了实时的网站流量统计、实时的广告效果统计两块功能。

做法也很简单,由Flume在前端日志服务器上收集网站日志和广告日志,实时的发送给Spark Streaming,由Spark Streaming完成统计,将数据存储至Redis,业务通过访问Redis实时获取。

六、任务调度与监控

在数据仓库/数据平台中,有各种各样非常多的程序和任务,比如:数据采集任务、数据同步任务、数据分析任务等;

这些任务除了定时调度,还存在非常复杂的任务依赖关系,比如:数据分析任务必须等相应的数据采集任务完成后才能开始;数据同步任务需要等数据分析任务完成后才能开始;

这就需要一个非常完善的任务调度与监控系统,它作为数据仓库/数据平台的中枢,负责调度和监控所有任务的分配与运行。

原文链接:https://blog.csdn.net/yuanziok/article/details/117030031

更多推荐

美团外卖分布式系统架构设计

史上最实用的:分布式缓存方案

所有IT架构师必须先知道的知识:什么样的网站才算是大型网站?

滴滴开源的分布式id生成系统

       

免责声明:

本公众号部分分享的资料来自网络收集和整理,所有文字和图片版权归属于原作者所有,且仅代表作者个人观点,与本公众号无关,文章仅供读者学习交流使用,并请自行核实相关内容,如文章内容涉及侵权,请联系后台管理员删除。

戳“阅读原文”海量文档免费阅读下载

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。