微服务场景下数据抽取与统计(3)

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 微服务场景下数据抽取与统计(3)

数据仓库建模方法

在数据仓库建模领域有两种主流的建模方法,一种是Inmon提出的依托于OLTP数据库,采用自上而下的建模方法,先对企业级数据仓库进行总体设计,在数据仓库基础之上,根据业务部门的不同需求构建数据集市。另一种是Kimball提出的维度建模,采用自下而上的建模方法,先构建数据集市,然后将多个数据集市整合成一个数据仓库。


目前,这两种建模方法在学术界和工业界都得到了广泛认可,并且在生产环境中已经被大规模应用。这两种建模方法没有好坏之分,用户可以根据公司目前所处阶段、业务复杂度、公司规模等条件选择合适的建模方法。当公司处于早期阶段,公司规模较小,业务发展速度非常快,有可能需要经常调整业务方向。针对这种情况,可以选择使用Kimball的维度建模法,快速地搭建数据仓库,及时响应业务需求。当公司处于稳定阶段,公司属于大中型规模,业务发展稳定,并且已经有了一定的数据积累。针对这种情况,可以选择Inmon的建模方法,从上到下系统地规划设计,这种方法的开发周期比较长,但是一旦搭建成功,后期维护将非常方便。


数据抽取、转换和加载

在构建数据仓库的过程中,需要将各分散数据源中的数据整合在一起,不同数据源的数据格式、字段描述、存储方式等信息各不相同,有些数据中还存在大量的脏数据。数据仓库要求必须是干净的、规范的、一致性的数据才可以被加载到数据仓库中。所以原始数据源的数据要经过抽取、清洗转换之后才会被加载到数据仓库中,这个数据被加工处理的过程称为ETL。


ETL是抽取(Extract)、转换(Transformation)、加载(Load)的简称,目的是将企业中分散、不规范、不一致的数据整合到一起,为后续的统计分析工作提供准确的数据支撑。


ETL不只发生在数据加载进数据仓库之前,在数据仓库各层之间也会涉及ETL。ETL在数据仓库中起着非常重要的作用,决定了最终分析结果的准确性。在构建数据仓库的过程中,ETL会耗费大量的时间,有些公司会专门设置ETL工程师的岗位专门从事ETL工作。


数据统计

数据从业务系统经过ETL进入数据仓库,为后续的数据统计工作提供基础数据。数据工程师基于数据仓库进行数据处理和统计分析工作,最终的统计结果会被导入BI系统为决策者提供数据依据。整个数据处理和统计流程如图9-4所示。


image.png


数据统计分析的过程是基于数据仓库中进行的,公司决策者使用的BI系统与数据仓库是两套系统,那么就会涉及统计结果在两个系统之间的传输问题。解决这个问题有三种常用方法。


(1)将统计结果保存到TXT、CSV等数据文件中,然后使用关系型数据库的数据导入工具将数据文件导入BI系统可以访问的关系型数据库表中。

(2)将统计结果保存到数据仓库应用层的数据表中,搭建中间数据服务系统,该系统通过JDBC/ODBC访问应用层数据表中的数据,BI系统通过中间数据服务系统获取相关数据。

(3)如果数据仓库是基于Hadoop/Hive构建的,那么可以将统计结果保存到HDFS的指定目录中,通过Sqoop等工具将存储在HDFS中的结果数据导入BI系统的关系型数据库表中。


数据仓库工具Hive

Hive是一款基于Hadoop的数据仓库解决方案。Hive最初是由Facebook开发的,后来贡献给Apache软件基金会,将其命名为Apache Hive并作为一个独立开源项目。Hive不是一个关系型数据库,不提供数据存储服务,真正的数据存储在Hadoop的分布式文件系统HDFS中。Hive主要负责元数据管理,把研发工程师或数据分析师熟悉的SQL语句转换为Hadoop的分布式处理程序MapReduce,然后将MapReduce程序调度到Hadoop中运行,对存储在HDFS上的大规模数据进行分析处理。


虽然Hive不是一个关系型数据库,但是Hive支持类似关系型数据库中的数据库、表、视图等概念。对于熟悉数据库的用户来说学习成本非常低,可以像操作关系型数据一样使用Hive。Hive提供了一种类SQL的查询语言HiveSQL,它的语法与MySQL的语法非常相似,熟悉MySQL的用户可以非常快速地掌握HiveSQL。


HiveSQL内置了很多常用的运算符和函数,能够满足日常的大部分工作需求。对于HiveSQL中没有提供的函数或用户需要处理的一些个性化需求,可以通过用户自定义函数UDF或用户自定义聚合函数UDAF进行扩展实现。


Hive的架构如图9-5所示。

 


image.png


Hive允许用户通过三种方式访问Hive,分别如下:

(1)通过命令行接口(CLI)交互式地访问Hive,这种方式简单方便。

(2)为了方便用户使用不同编程语言开发的程序访问Hive,Hive提供了跨语言Thrift服务,在程序中通过JDBC或ODBC直接访问Hive。

(3)Hive提供了可视化操作工具HWI,用户可以更加直观地通过试图界面访问Hive。


ETL作业调度

ETL过程会调度大量的作业,在项目初期业务比较简单的阶段,一种比较经典的调度方式是通过Linux系统的crontab调度作业脚本执行调度的,在Linux系统中,用户可以通过编辑crontab文件设置需要定时执行的作业。crontab文件中的一行就是一个待执行的作业,Linux系统通过后台服务进程crond定期检查crontab文件中是否有要执行的任务,从而实现定时自动执行某个任务。


例9-3每天凌晨1点15分执行数据抽取脚本sqoop_import_consumer_address_df.sh,作业执行过程中产生的日志输出到sqoop_import_consumer_address_df.log日志文件中。

 

使用crontab定时执行作业的优点是操作简单,适合在简单地业务场景下使用。缺点也很明显,在复杂的业务场景下通常需要调度大量的作业,有些作业需要并行执行,有些作业需要前后依赖执行,需要编写大量的脚本控制各个作业的执行流程,需要工程师投入大量的精力维护这些脚本,作业的监控管理也非常不方便。


在复杂的业务场景下,通常会选择使用操作更加灵活、功能更加强大、方便监控管理的开源调度系统或公司内部自研的调度系统进行自动化调度。这种调度方式不但可以周期性地并行执行各种作业,还可以设置复杂的作业之间的依赖关系。工程师可以对作业整个运行流程进行监管,当作业运行失败时会立即向管理员发送报警信息,如果配置了重试机制,那么调度器针对失败的作业还会重新调度执行。常用的开源工作流调度系统有Apache Oozie、Azkaban等。

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
2月前
|
消息中间件 存储 关系型数据库
【微服务】mysql + elasticsearch数据双写设计与实现
【微服务】mysql + elasticsearch数据双写设计与实现
76 2
|
8月前
|
存储 关系型数据库 MySQL
微服务--数据聚合
微服务--数据聚合
105 0
|
8月前
|
供应链 架构师 数据库
架构师带你搞明白微服务进阶场景实战:服务之间的数据依赖问题
数据同步 上面讲解了数据一致性的解决方案,这一篇来讲讲服务之间的数据依赖问题,还是先来说说具体的业务场景。 业务场景:如何解决微服务之间的数据依赖问题 在某个供应链系统中,存在商品、订单、采购这3个服务,它们的主数据部分结构表如下。
架构师带你搞明白微服务进阶场景实战:服务之间的数据依赖问题
|
12天前
|
Serverless 云计算 Docker
SAE是全场景Serverless计算平台,深度融合微服务
【5月更文挑战第2天】SAE是全场景Serverless计算平台,深度融合微服务,提供SAE Job任务场景解决方案,具备便捷、节省、稳定、透明和省心的特点。而ECI是Serverless容器运行服务,结合云计算理念,仅需Docker镜像即可运行,支持细粒度资源计费,旨在降低成本和提升效率。SAE侧重应用管理和运营,ECI专注于优化容器资源使用。
18 0
|
7月前
|
运维 Java Serverless
深度解析四大主流软件架构模型:单体架构、分布式应用、微服务与Serverless的优缺点及场景应用
深度解析四大主流软件架构模型:单体架构、分布式应用、微服务与Serverless的优缺点及场景应用
488 0
|
7月前
|
消息中间件 存储 安全
微服务之间的数据依赖问题是怎样的?
微服务之间的数据依赖问题是怎样的?
144 0
微服务之间的数据依赖问题是怎样的?
|
3月前
|
消息中间件 Java 开发者
Spring Cloud Stream解密:流式数据在微服务中的魔力
Spring Cloud Stream解密:流式数据在微服务中的魔力
255 1
|
5月前
|
消息中间件 数据挖掘 Kafka
Kafka在微服务架构中的应用:实现高效通信与数据流动
微服务架构的兴起带来了分布式系统的复杂性,而Kafka作为一款强大的分布式消息系统,为微服务之间的通信和数据流动提供了理想的解决方案。本文将深入探讨Kafka在微服务架构中的应用,并通过丰富的示例代码,帮助大家更全面地理解和应用Kafka的强大功能。
|
10月前
|
移动开发 小程序 安全
Spring Security OAuth2 微服务认证中心自定义授权模式扩展以及常见登录认证场景下的应用实战(二)
Spring Security OAuth2 微服务认证中心自定义授权模式扩展以及常见登录认证场景下的应用实战(二)
Spring Security OAuth2 微服务认证中心自定义授权模式扩展以及常见登录认证场景下的应用实战(二)
|
10月前
|
安全 前端开发 小程序
Spring Security OAuth2 微服务认证中心自定义授权模式扩展以及常见登录认证场景下的应用实战(一)
Spring Security OAuth2 微服务认证中心自定义授权模式扩展以及常见登录认证场景下的应用实战(一)