大数据设计模式-业务场景-批处理
一个常见的大数据场景是静态数据的批处理。在此场景中,源数据通过源应用程序本身或编排工作流加载到数据存储中。然后,数据由并行作业就地处理,并行作业也可以由编制工作流发起。在将转换后的结果加载到分析数据存储之前,处理过程可能包括多个迭代步骤,可以通过分析和报告组件查询分析数据存储。
例如,可以将web服务器上的日志复制到一个文件夹中,然后在夜间进行处理,生成web事件的每日报表。
何时使用此解决方案
批处理用于各种场景,从简单的数据转换到更完整的ETL (extract-transform-load)管道。在大数据环境中,批处理可能在非常大的数据集上运行,计算需要大量时间。(例如,参见Lambda架构)。批处理通常会导致进一步的交互探索,为机器学习提供可建模的数据,或者将数据写到数据存储中,以便优化分析和可视化。
批处理的一个例子是将一组大型的扁平、半结构化CSV或JSON文件转换为一种计划化和结构化的格式,以便进一步查询。通常,数据从用于摄取的原始格式(如CSV)转换为二进制格式,这种格式具有更好的查询性能,因为它们以列格式存储数据,并且通常提供关于数据的索引和内联统计信息。
技术挑战
- 数据格式和编码。当文件使用意外的格式或编码时,一些最难调试的问题就会发生。例如,源文件可能混合使用UTF-16和UTF-8编码,或者包含特殊的分隔符(空格对制表符),或者包含特殊的字符。另一个常见的例子是文本字段,其中包含被解释为分隔符的制表符、空格或逗号。数据加载和解析逻辑必须足够灵活,以检测和处理这些问题。
- 编排时间片。通常将源数据放在反映处理窗口的文件夹层次结构中,按年、月、日、小时等进行组织。在某些情况下,数据可能会延迟到达。例如,假设web服务器发生故障,并且3月7日的日志直到3月9日才被放入文件夹中进行处理。他们只是因为太迟而被忽视了吗?下游处理逻辑可以处理无序记录吗?
架构
批处理体系结构具有以下逻辑组件,如上图所示。
- 数据存储。通常是一个分布式文件存储库,它可以作为各种格式的大量大型文件的存储库。一般来说,这种存储通常称为数据湖。
- 批处理。大数据的高容量特性通常意味着解决方案必须使用长时间运行的批处理作业来处理数据文件,以便过滤、聚合和准备用于分析的数据。通常这些工作包括读取源文件、处理源文件并将输出写入新文件。
- 分析数据存储。许多大数据解决方案都是为分析准备数据,然后以结构化的格式提供处理后的数据,可以使用分析工具进行查询。
- 分析和报告。大多数大数据解决方案的目标都是通过分析和报告来洞察数据。
- 编排。对于批处理,通常需要一些业务流程将数据迁移或复制到数据存储、批处理、分析数据存储和报告层。
技术选型
对于Azure中的批处理解决方案,推荐使用以下技术
数据存储
- Azure存储Blob容器。许多现有的Azure业务流程已经使用了Azure blob存储,这对于大数据存储来说是一个很好的选择。
- Azure数据湖存储。Azure Data Lake Store为任何大小的文件提供了几乎无限的存储空间,并提供了广泛的安全选项,这使得它成为非常大规模的大数据解决方案的良好选择,这些解决方案需要对异构格式的数据进行集中存储
批处理
- U-SQL。U-SQL是Azure Data Lake Analytics使用的查询处理语言。它结合了SQL的声明性和c#的过程可扩展性,并利用并行性支持大规模数据的高效处理。
- Hive。Hive是一种类似sql的语言,大多数Hadoop发行版(包括HDInsight)都支持这种语言。它可以用来处理来自任何兼容hdfs的存储的数据,包括Azure blob存储和Azure data Lake存储。
- Pig。Pig是一种声明性的大数据处理语言,在许多Hadoop发行版中都使用,包括HDInsight。它对于处理非结构化或半结构化数据特别有用。
- Spark。Spark引擎支持用多种语言编写的批处理程序,包括Java、Scala和Python。Spark使用分布式架构跨多个工作节点并行处理数据。
数据分析存储
- SQL数据仓库。Azure SQL数据仓库是基于SQL Server数据库技术的托管服务,经过优化后可以支持大规模数据仓库工作负载。
- SparkSQL。Spark SQL是一个基于Spark的API,它支持创建可以使用SQL语法查询的数据流和表。
- HBase。HBase是一个低延迟的NoSQL存储,它为查询结构化和半结构化数据提供了高性能、灵活的选项
- Hive。除了对批处理有用之外,Hive还提供了一个在概念上类似于典型关系数据库管理系统的数据库体系结构。通过Tez引擎和Stinger等创新改进了Hive查询性能,这意味着在某些场景中,Hive表可以有效地用作分析查询的源。
数据UI展示
- Azure分析服务。许多大数据解决方案通过包括集中式在线分析处理(OLAP)数据模型(通常称为多维数据集)来模拟传统的企业业务智能架构,报告、仪表板和交互式“切片和骰子”分析可以基于该模型。Azure分析服务支持创建表格模型来满足这一需求。
- BI。Power BI允许数据分析师基于OLAP模型中的数据模型或直接从分析数据存储中创建交互式数据可视化。
- Microsoft Excel。Microsoft Excel是世界上使用最广泛的软件应用程序之一,提供了丰富的数据分析和可视化功能。数据分析师可以使用Excel从分析数据存储构建文档数据模型,或者从OLAP数据模型检索数据到交互式数据透视表和图表。
编排
- Azure数据工厂。Azure数据工厂管道可用于定义一系列活动,计划用于重复出现的时间窗口。这些活动可以在按需HDInsight集群中启动数据复制操作以及Hive、Pig、MapReduce或Spark作业;Azure数据湖分析中的U-SQL作业;以及Azure SQL数据仓库或Azure SQL数据库中的存储过程
- Oozie Sqoop。Oozie是Apache Hadoop生态系统的一个作业自动化引擎,可用于启动数据复制操作,以及Hive、Pig和MapReduce作业来处理数据,以及Sqoop作业来在HDFS和SQL数据库之间复制数据。