1.2 数据架构

我们先对数据架构进行深入的解释,包括它是做什么的,它为什么有用,何时使用它,以及Apache Spark如何匹配它。

在常见的场景下,现代数据体系结构有4个基本特征,如图1-1所示。

  • 数据采集。
  • 数据湖。
  • 数据科学。
  • 数据访问。

图像说明文字

图1-1 数据架构

我们将对每一项进行介绍,然后在后续章节里,再对其进行详细解释。

1.2.1 数据采集

从传统的角度来看,应该在严格的规则下采集数据,并根据预定模式对数据进行格式化。这个处理过程称为提取(Extract)、转换(Transform)和加载(Load),简称ETL,如图1-2所示,它在广泛的实践中得到了大量的商业工具和开源产品的支持。

图像说明文字

图1-2 ETL方法

ETL方法趋向于前端检查,确保数据质量和模式一致性,以简化后续的在线分析处理。它特别适合处理具有特定特征集的数据,即涉及经典实体关系模型的数据。不过,它并不完全适用于所有场景。

在“大数据革命”期间,对结构化、半结构化和非结构化的数据的潜在需求猛增,产生了可处理不同特性数据的系统。这些数据有4V特点:大体量(Volume)、多样性(Variety)、高速度(Velocity)和准确性(Veracity)。传统的ETL方法在这种情况下陷入困境,因为它需要太多的时间来处理大量的数据,并且面对变化时过于僵化。现在出现了一种不同的方法,称为“基于读时模式”的范式。该方法以原始形式(或至少非常接近)采集数据,而归一化、验证及其他的细节操作在分析过程中一并完成。

这个处理过程称为提取、加载和转换(简称ELT),参考传统方法的表示,它的表示如图1-3所示。

图像说明文字

图1-3 ELT方法

这种方法重视数据传递的即时性,它对细节操作进行延迟直到必须要处理为止。这样,数据科学家可以第一时间对数据进行操作,并采用一系列技术来找出数据中的隐藏知识,这在传统方法中是不可能实现的。

虽然我们只是做了一个较高层次的概述,但这种方法是非常重要的,本书将通过实现多种基于读时模式的算法进行深入研究。假定我们都采用ELT方法进行数据采集,也就是说,我们鼓励在用户方便的时间加载数据。这可能是在每n分钟、通宵或者低负载的时间段。然后用户判断是否采用诸如离线批量处理的方式来进行数据完整性、质量等方面的检查。

1.2.2 数据湖

数据湖是一种方便的、普遍适用的数据存储方式。它很有用,因为它有一些重要的优点,主要如下。

  • 可靠的存储。
  • 可扩展的数据处理能力。

下面对这些优点做简要说明。

1.可靠的存储

实现数据湖的底层存储有很好的预选方案,包括Hadoop分布式文件系统(HDFS)、MapR-FS和亚马逊S3等。

在本书中,HDFS是我们预设的存储实现方式。此外,本书作者使用分布式Spark配置,部署在另一种资源协调者YARN上,并在Hortonworks的HDP环境中运行。因此,除非另有说明,否则本书使用的技术就是HDFS。如果你对其中的某些技术还不太熟悉,我们会在本章中进一步讨论。

在任何情况下我们都必须知道,Spark在本地引用HDFS位置,通过前缀file://访问本地文件位置,通过前缀s3a://引用S3位置。

2.可扩展的数据处理能力

显然,Apache Spark是我们选择的数据处理平台。Spark允许用户在自己偏爱的环境中执行代码,可以是本地、独立节点、YARN或Mesos,只要在masterURL中配置合适的集群管理器。这可以在以下3个位置中的任何1个位置完成。

  • 在执行spark-submit命令时使用--master选项。
  • conf/spark-defaults.conf文件中添加spark.master属性。
  • SparkConf对象中调用setMaster方法。

如果你还不熟悉HDFS,或者没有访问过集群,那你可以使用本地文件系统运行本地Spark实例,这对于测试来说是很有帮助的。不过请注意,经常出现的不良行为往往只在集群上执行时才出现。所以,如果你想认真地使用Spark,那么应该在分布式集群管理器上进行投资,为什么不试试Spark的独立集群模式,或者使用亚马逊的AWS EMR呢?例如,亚马逊提供了许多成本较低的云计算方案,你可以访问亚马逊的AWS网站了解Spot实例的思路。

1.2.3 数据科学平台

数据科学平台提供了大量的服务和API,使数据科学工作能够有效地进行,如探索性的数据分析、机器学习模型创建和改进、图像和音频处理、自然语言处理和文本情感分析等。

数据科学平台是Spark真正强大的地方,也是本书介绍的要点,它开发了一系列强大的本地机器学习库,具有难以比拟的并行图形处理能力,并构建了一个强大的社区。Spark为数据科学提供了无限的可能。

本书接下来的部分章节将深入分析这些领域,包括第6~8章。

1.2.4 数据访问

数据湖中的数据最常被数据工程师和科学家利用Hadoop生态系统工具访问,如Apache Spark、Pig、Hive、Impala或Drill等。然而,其他用户,甚至是其他系统需要访问数据的时候,常用的工具要么太技术化,要么不能满足用户在现实世界中关于延时的要求。

这种情况下,数据通常要被复制到数据集市或索引存储库中,这样,它才可能被应用于更传统的应用方法,如报表或面板。这个过程称为数据出口,通常涉及索引创建和为了实现低延迟而进行的数据重构。

幸运的是,Apache Spark有各种各样的适配器和连接器可以连接数据库、商业智能(BI)软件以及可视化软件和报表软件。本书将介绍相关内容。