大数据架构师必知必会系列:数据流程与工作流设计

发布于:2023-09-27 ⋅ 阅读:(56) ⋅ 点赞:(0)

作者:禅与计算机程序设计艺术

1.简介

大数据架构师作为专门从事大数据系统构建、运维管理及运营维护等工作的一类人才,其日常工作中常见的任务主要包括:

  1. 数据采集、清洗、存储;
  2. 数据开发、计算、分析;
  3. 数据分析结果可视化展示;
  4. 数据检索和查询服务;
  5. 数据仓库设计及建设;
  6. 数据调度、实时计算;
  7. 数据质量保证及管理;
  8. 系统故障排查和快速恢复;
  9. 系统性能监控、分析和优化。
    这些任务涉及大数据平台各个组件之间的数据流动、数据的处理、数据的转换、数据的存储等环节,而如何高效的把这些环节串联起来实现业务需求,这是大数据架构师的一个重要工作技能。一般情况下,在大数据架构设计中都会定义一个数据处理流程或数据工作流,然后将该工作流中的任务映射到相关的工具上,使得数据处理任务自动化并通过流程进行协同调度。因此,数据流程与工作流设计是大数据架构师的核心能力之一。本文将以具体的场景为例,向大家介绍数据流程与工作流设计的基本概念及原理,并结合实际案例介绍如何通过工具对数据处理流程进行建模、编排、执行。希望通过本文,能够帮助读者更好地理解大数据平台架构设计的关键环节,具备全面、高效地掌握数据流程与工作流设计的能力。

2.数据流程与工作流设计概述

数据流程与工作流是大数据平台架构设计的重要组成部分,它的作用就是将不同的数据处理环节通过指定的顺序连接起来,确保数据按照预定的方式流动,最终达到所需目的。这里面有一个重要的角色叫做Data Engineer(数据工程师),它负责构建整个大数据平台的数据流程。一般来说,数据流程分为三个阶段:数据收集、数据加工和数据输出,其中数据收集又分为数据采集、数据导入和数据转移三个子阶段。数据加工阶段则包括数据清洗、转换、聚合和计算,而数据输出则包括数据呈现、数据应用和数据推送。如下图所示:

以上是数据流程与工作流的基本结构。流程从左至右可以分为四个阶段:数据源收集、数据传输、数据计算和数据存储。数据源收集阶段通常需要人工介入,而数据传输可以借助专用的工具完成。数据计算阶段通常由专业的软件或工具完成,例如Hive、Spark等;数据存储阶段则依赖于数据湖的部署和数据分层方案,例如星型模型和雪花模型。

工作流在大数据平台构建中扮演着重要角色,它定义了平台中不同用户或系统间的数据交互过程,确定了数据获取和消费的方式。工作流一般由多个不同的节点构成,每个节点都代表一个具体的处理阶段或功能,节点之间的连线代表数据流动的方向。每个节点都由一组固定的输入和输出端口,可以提供参数配置、控制流和数据流信息。如下图所示:

以上是数据流程与工作流的实际运行过程。数据源首先通过数据采集节点获取原始数据,经过数据传输节点传输给下一个节点进行处理。下一步,数据计算节点利用Hive或Spark等工具进行数据计算,最后的数据存储节点将计算结果输出到平台的数据库或文件系统中。这样的工作流可以非常灵活地处理复杂的数据处理任务,而且可以按需自动调整并平衡资源,提升整体的数据处理效率。

3.数据流程与工作流设计原理

(一)数据流动模式

首先要明确的是,数据在数据流程中的流动是单向的、有序的,即只能从左侧流向右侧。也就是说,一条数据只能由一个工作流环节被处理,不能跳过任何环节。所以,我们需要根据实际情况制定相应的工作流模型,才能充分满足大数据平台对数据的需求。

(1)实时数据流动模式

实时数据流动模式是指系统不断产生新数据,这些数据需要快速被处理并反馈给其他模块进行实时的分析和决策。这种模式的典型代表就是实时计算、实时统计和实时监控。这些模式一般需要系统具有较强的实时性要求,比如秒级、毫秒级的响应时间和低延迟。因此,实时数据流动模式下的工作流通常包括数据接收、数据加工、数据存储和数据输出几个环节,如图1所示。

  1. 数据接收:实时数据源通常包括各种传感器、网络摄像头、监测设备等,这些源头产生的数据可能来自异地或者分布式地位置,需要通过网络传输到数据中心进行统一处理。
  2. 数据加工:实时数据源的数据往往需要经过数据处理才能得到满足业务需求的计算结果,数据处理的速度也需要保证实时性。实时数据处理通常采用批量处理或流式处理的方法,分别对应于离线批处理和实时流处理。
  3. 数据存储:实时计算的结果可以被直接存储到大数据平台的数据库或搜索引擎中,供后续分析和决策使用。
  4. 数据输出:实时计算的结果通常需要立即反映到客户终端上,以便客户能够在短时间内了解当前的状况。实时输出的数据通常通过API接口或者消息推送的方式被第三方系统消费。

(2)批量数据流动模式

批量数据流动模式是指数据源不断产生大量数据,这些数据必须根据一定时限进行整理,然后再进行分析和决策。这种模式的典型代表就是数据仓库和分析平台。这种模式下的数据处理流程一般比较简单,只需要按照时间周期进行清洗、处理、转换、分析和计算即可。

批量数据流动模式的工作流模型包括数据源收集、数据导入、数据清洗、数据转换、数据导入、数据加载、数据预处理、数据集成、数据计算、数据分析、数据报告、数据输出几个步骤,如图2所示。

  1. 数据源收集:批量数据源一般由多个不同来源、类型的数据组成,比如各种日志、财务数据、网页访问数据、点击事件数据等。数据源收集环节需要对所有数据源进行汇总,形成统一的数据视图。
  2. 数据导入:批量数据源的数据导入环节一般采用ELT(抽取-传输-加载)的方法,即通过工具将数据源中的数据导进数据仓库,这样可以在数据源发生变化的时候,可以很快地更新数据仓库中的最新数据。
  3. 数据清洗:数据清洗环节需要对数据进行清洗、转换、标准化等操作,以便后续数据处理环节顺利进行。
  4. 数据转换:数据转换环节将数据进行归一化、合并、分割、重塑等操作,使得数据成为分析、决策的有效输入。
  5. 数据加载:数据加载环节将数据分批次加载到数据仓库,以避免一次性加载过多的数据导致系统压力过大。
  6. 数据预处理:数据预处理环节主要包括缺失值处理、异常值处理、噪声点检测和数据编码等,目的是为了消除数据质量和完整性方面的瑕疵。
  7. 数据集成:数据集成环节主要用于整合不同数据源,例如将网店和广告数据整合到一个视图中,形成统一的管理和分析。
  8. 数据计算:数据计算环节通过SQL语言对数据进行聚合、过滤、排序、投影等操作,对数据进行分析和决策。
  9. 数据分析:数据分析环节需要对计算出来的结果进行深入分析,寻找有价值的模式和特征,并进行迭代优化,以改善数据质量、提升分析效果。
  10. 数据报告:数据报告环节通过各种报表形式呈现分析结果,包括仪表盘、报告和图表等。
  11. 数据输出:数据输出环节将数据结果输出到外部系统,比如数据可视化系统、协作系统等。

(二)数据流程与工作流设计工具

由于数据流程与工作流的复杂性,如何实现数据流程的自动化是一个重要的难题。因此,大数据平台架构设计人员一般会选择一些开源的工具,基于这些工具来构建自动化的工作流。以下介绍几种常用的数据流程与工作流设计工具。

(1)Oozie

Apache Oozie 是 Hadoop 的子项目,它是一个基于 Hadoop 的 Workflow System,能够管理 Hadoop 中 Apache MapReduce 和 Apache Pig 的工作流。Oozie 支持丰富的操作符,允许用户通过定义工作流来完成 MapReduce 或 Pig 程序。其优点是易于使用,可靠,支持调度、控制和跟踪多种作业类型。Oozie 使用 XML 文件来定义工作流,并提供了丰富的 API 和命令行界面来管理工作流。

(2)Azkaban

Azkaban 是 LinkedIn 在 Hadoop 技术开发过程中开发出的工作流系统,可以用于 Hadoop 集群上的 MapReduce 作业和 Hive 查询的调度。该系统使用简单的 Web 界面来创建工作流,并使用 RESTful API 对其进行管理。Azkaban 提供了项目级别的权限控制机制,同时支持邮件、JMX、SLA(Service Level Agreement,服务水平协议)等功能。Azkaban 使用 MySQL 来存储工作流信息。

(3)Airflow

Apache Airflow 是由 Airbnb 开源的一个基于 Python 的工作流系统,可以用于复杂的 ETL(Extract-Transform-Load)作业。Airflow 可以用于编排基于 DAG(有向无环图)的工作流,其中每一个节点表示一个任务,边表示依赖关系。Airflow 使用 SQLite 来存储工作流信息。

(4)Nifi

NiFi 是 Apache 基金会推出的新一代开源数据流向处理框架,可以作为大数据平台中的流式数据处理组件。NiFi 基于 Flowfile(数据包)和记录(Record)进行流数据处理,支持数据路由、过滤、拆分、包装、传输、增删、路由、同步、标准化、验证等操作。Nifi 通过 XML 配置文件定义数据处理流程,并提供多种方式来管理和监控数据处理流程。

综上所述,数据流程与工作流设计工具一般可分为两大类:基于数据的工具和面向任务的工具。基于数据的工具主要用来对已有的数据进行抽取、清洗、转换、加载、计算、分析等操作,面向任务的工具主要用来构建面向特定任务的工作流,并提供相应的管理和监控功能。

4.数据处理流程建模、编排、执行

(一)基础知识

本小节介绍如何通过工具来实现数据处理流程的建模、编排、执行。

(1)数据集市概念

数据集市(DataMart)是一种按照主题、主题垂直、业务范围等分类法组织的数据集合。数据集市是企业内部各种系统的数据集合,并不是一个独立的产品,而是通过对数据的分类、整合、分析等方式提炼出来的数据集合。数据集市是在大数据架构设计中被广泛使用的一种模式。数据集市将多种数据源按照行业和业务进行分类,并根据其使用价值大小,将其收纳到数据集市中。

(2)ETL(Extract-Transform-Load)工具

ETL(Extract-Transform-Load)工具是数据处理流程建模、编排、执行的关键工具。ETL工具的基本功能是:从各种数据源中提取数据,对数据进行转换,并将转换后的数据加载到目标数据仓库。ETL工具可以分为离线和实时两种,前者适用于较慢、静态的数据处理,后者适用于较快、动态的数据处理。目前主流的ETL工具有Pentaho Data Integration、Talend Open Studio和Informatica PowerCenter。

(3)数据模型概念

数据模型是数据集市中最重要的组成部分。数据模型是建立数据集市的依据,是指数据集市的数据库设计。数据模型一般包括实体关系模型、事实表模型和星型模型三种。

实体关系模型是一种比较简单的数据库设计方法。实体关系模型把数据按照实体、属性、联系两个层次来划分。实体是指对现实世界中某个对象进行抽象的模型,它是一个独立的对象,可以包含属性和行为,属性代表这个对象的一切特征,行为代表对象的状态以及对外界的活动。实体关系模型把实体按一定顺序组织成表,每个表代表实体,并且表与表之间存在联系。

事实表模型是一种数据模型,它把数据以事实表的形式组织,每个事实表都是有两个属性,分别表示事实、事实发生的时间。事实表模型是针对属性多、数据少的非事务型数据库设计的,其优点是简单、容易理解,缺点是对于数据质量和完整性要求不高的场景不太适用。

星型模型是一种数据模型,它把数据按照事实表关联表和维度表的结构组织。星型模型主要用于数据分析,适用于分析复杂的数据集市。

(二)案例分析

下面通过一个场景来说明如何通过工具实现数据处理流程建模、编排、执行。

(1)场景描述

假设某大型电商公司要分析用户的购买行为,他想知道每天到访电商网站的人数、浏览商品的人数、购买商品的人数等数据。他希望通过分析网站访问日志、商品日志、订单日志等数据,并通过数据分析工具生成每天的访问、浏览和购买人数的数据曲线。下面是该场景的详细步骤:

  1. 数据采集:该公司需要将网站的访问日志、商品日志、订单日志等数据采集到一个统一的数据仓库中。
  2. 数据清洗:数据采集之后,需要对日志数据进行清洗、转换、标准化等操作,去掉重复的数据、错误的数据。
  3. 数据转换:对清洗后的日志数据进行统一的数据格式,方便进行下一步的处理。
  4. 数据加载:将日志数据导入到一个统一的数据仓库中。
  5. 数据预处理:数据加载完成后,需要对日志数据进行缺失值处理、异常值处理、噪声点检测、数据编码等操作,消除数据质量和完整性方面的瑕疵。
  6. 数据计算:对日志数据进行分析、统计,生成每天的访问、浏览和购买人数的数据曲线。
  7. 数据分析:对生成的数据曲线进行分析,寻找用户访问、浏览、购买行为的规律,并进行迭代优化,以改善数据质量、提升分析效果。
  8. 数据报告:生成的数据报告呈现到数据可视化系统、协作系统等外部系统,进行可视化展示。

(2)步骤实现

步骤1:准备环境

安装数据集市、ETL工具和数据可视化工具,并配置好相关的参数。

步骤2:数据源收集

需要找到网站日志文件的存放路径,并确认日志文件格式。将日志文件拷贝到数据仓库的指定目录,并添加到数据集市。

步骤3:日志文件清洗

日志文件可能会出现一些杂乱的数据,需要对日志文件进行清洗、转换、标准化等操作,去掉重复的数据、错误的数据,并将日志数据按照统一的数据格式保存。

步骤4:日志文件转换

日志文件是杂乱的数据,需要转换为统一的数据格式,方便接下来的处理。

步骤5:日志文件导入

将日志文件导入到统一的大数据仓库中。

步骤6:数据预处理

对日志文件进行缺失值处理、异常值处理、噪声点检测、数据编码等操作,消除数据质量和完整性方面的瑕疵。

步骤7:数据计算

对日志数据进行分析、统计,生成每天的访问、浏览和购买人数的数据曲线。

步骤8:数据分析

对生成的数据曲线进行分析,寻找用户访问、浏览、购买行为的规律,并进行迭代优化,以改善数据质量、提升分析效果。

步骤9:数据报告

生成的数据报告呈现到数据可视化系统、协作系统等外部系统,进行可视化展示。


网站公告

今日签到

点亮在社区的每一天
去签到