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

本文涉及的产品
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 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数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
8月前
|
SQL 数据库 微服务
微服务03,最简单的Demo,我们每个服务不能重复开发相同业务,微服务数据独立,不要访问其他微服务的数据库,微服务的特点之一是提供不能功能的数据库互相分割,微服务需要根据业务模块拆分,做到单一职责,
微服务03,最简单的Demo,我们每个服务不能重复开发相同业务,微服务数据独立,不要访问其他微服务的数据库,微服务的特点之一是提供不能功能的数据库互相分割,微服务需要根据业务模块拆分,做到单一职责,
|
8月前
|
消息中间件 Kafka 微服务
微服务数据问题之MetaQ设置同步异步刷盘如何解决
微服务数据问题之MetaQ设置同步异步刷盘如何解决
|
8月前
|
消息中间件 存储 微服务
微服务数据问题之异步刷盘如何解决
微服务数据问题之异步刷盘如何解决
|
6月前
|
存储 搜索推荐 数据库
MarkLogic在微服务架构中的应用:提供服务间通信和数据共享的机制
随着微服务架构的发展,服务间通信和数据共享成为关键挑战。本文介绍MarkLogic数据库在微服务架构中的应用,阐述其多模型支持、索引搜索、事务处理及高可用性等优势,以及如何利用MarkLogic实现数据共享、服务间通信、事件驱动架构和数据分析,提升系统的可伸缩性和可靠性。
83 5
|
7月前
|
安全 网络安全 数据安全/隐私保护
云原生技术探索:容器化与微服务架构的实践之路网络安全与信息安全:保护数据的关键策略
【8月更文挑战第28天】本文将深入探讨云原生技术的核心概念,包括容器化和微服务架构。我们将通过实际案例和代码示例,展示如何在云平台上实现高效的应用部署和管理。文章不仅提供理论知识,还包含实操指南,帮助开发者理解并应用这些前沿技术。 【8月更文挑战第28天】在数字化时代,网络安全和信息安全是保护个人和企业数据的前线防御。本文将探讨网络安全漏洞的成因、加密技术的应用以及提升安全意识的重要性。文章旨在通过分析网络安全的薄弱环节,介绍如何利用加密技术和提高用户警觉性来构建更为坚固的数据保护屏障。
|
6月前
|
缓存 负载均衡 数据管理
深入探索微服务架构的核心要素与实践策略在当今软件开发领域,微服务架构以其独特的优势和灵活性,已成为众多企业和开发者的首选。本文将深入探讨微服务架构的核心要素,包括服务拆分、通信机制、数据管理等,并结合实际案例分析其在不同场景下的应用策略,旨在为读者提供一套全面、深入的微服务架构实践指南。**
**微服务架构作为软件开发领域的热门话题,正引领着一场技术革新。本文从微服务架构的核心要素出发,详细阐述了服务拆分的原则与方法、通信机制的选择与优化、数据管理的策略与挑战等内容。同时,结合具体案例,分析了微服务架构在不同场景下的应用策略,为读者提供了实用的指导和建议。
|
7月前
|
Java 数据库连接 微服务
揭秘微服务架构下的数据魔方:Hibernate如何玩转分布式持久化,实现秒级响应的秘密武器?
【8月更文挑战第31天】微服务架构通过将系统拆分成独立服务,提升了可维护性和扩展性,但也带来了数据一致性和事务管理等挑战。Hibernate 作为强大的 ORM 工具,在微服务中发挥关键作用,通过二级缓存和分布式事务支持,简化了对象关系映射,并提供了有效的持久化策略。其二级缓存机制减少数据库访问,提升性能;支持 JTA 保证跨服务事务一致性;乐观锁机制解决并发数据冲突。合理配置 Hibernate 可助力构建高效稳定的分布式系统。
101 0
|
8月前
|
消息中间件 微服务
微服务数据问题之同步复制如何解决
微服务数据问题之同步复制如何解决
|
8月前
|
消息中间件 负载均衡 Kafka
微服务数据问题之Kafka实现高可用如何解决
微服务数据问题之Kafka实现高可用如何解决
|
8月前
|
消息中间件 存储 负载均衡
微服务数据问题之Kafka作为元数据节点如何解决
微服务数据问题之Kafka作为元数据节点如何解决