一文看懂大数据平台架构

大数据平台的整体架构如下图所示。

大数据平台的总体架构可以分为5层:数据源层、数据采集层、大数据平台层、数据仓库层和应用层。

上图是基于Lambda架构构建的大数据平台,这也是目前构建大数据平台的主流方式。

Lambda架构存在的最主要问题是需要维护离线与实时两套计算系统,从而导致批量与实时计算结果数据口径不一致。

另外,维护两套计算系统增加了系统开发和维护的成本。

01

数据源层

数据源层的主要功能是提供各种需要的业务数据,例如用户订单数据、交易数据、系统的日志数据等。

尽管数据源的种类多种多样,但在大数据平台体系中可以把它们划分成两大类:

离线数据源:用于大数据离线计算。

实时数据源:用于大数据实时计算。

02

数据采集层

有了底层数据源提供的数据,就需要使用ETL工具完成数据的抽取、转换和加载。

Hadoop体系中就提供了这样的组件,例如:

使用Sqoop完成大数据平台与关系型数据库的数据交换;

使用Flume完成对日志数据的采集。

除了大数据平台体系本身提供的这些组件,爬虫也是一种典型的数据采集方式。当然也可以使用第三方的数据采集工具,如DataX和CDC完成数据的采集工作。

为了降低数据源层和数据采集层之间的耦合度,可以在这两层之间加入数据总线。数据总线并不是必需的,它的引入只是为了在进行系统架构设计时,降低层与层之间的耦合度。

03

大数据平台层

大数据平台层是整个大数据体系中最核心的一层,用于完成大数据的存储和大数据的计算。

由于大数据平台可以被看作数据仓库的一种实现方式,进而又可以分为离线数据仓库和实时数据仓库。下面分别进行介绍。

1. 基于大数据技术的离线数据仓库的实现方式

数据采集层得到数据后,通常先将数据存储在HDFS或HBase中。

然后,由离线计算引擎(如MapReduce、Spark Core、Flink DataSet)完成离线数据的分析与处理。为了在平台上对各种计算引擎进行统一的管理和调度,可以把这些计算引擎都运行在Yarn上。

接下来,可以使用Java程序或Scala程序来完成数据的分析与处理。为了简化应用的开发,在大数据平台体系中,也支持使用SQL语句来处理数据,即提供了各种数据分析引擎,例如Hadoop体系中的Hive,其默认的行为是Hive on MapReduce。这样就可以在Hive中书写标准的SQL语句,从而由Hive将其转换为MapReduce,进而运行在Yarn上,以处理大数据。

常见的大数据分析引擎除了Hive,还有Spark SQL和Flink SQL。

2. 基于大数据技术的实时数据仓库的实现方式

数据采集层得到实时数据后,为了进行数据的持久化,同时保证数据的可靠性,可以将采集的数据存入消息系统Kafka,进而由各种实时计算引擎(如Storm、Spark Stream和Flink DataStream进行处理)。

和离线数据仓库一样,这些计算引擎可以运行在Yarn上,同时支持使用SQL语句对实时数据进行处理。

离线数据仓库和实时数据仓库在实现的过程中,可能会用到一些公共的组件,例如,使用MySQL存储的元信息,使用Redis进行缓存,使用ElasticSearch(简称ES)完成数据的搜索等。

04

数据仓库层

有了大数据平台层的支持就可以进一步搭建数据仓库层了。在搭建数据仓库时,可以基于星形模型或雪花模型搭建。

05

应用层

有了数据仓库层的各种数据模型和数据后,就可以基于这些模型和数据实现各种各样的应用场景了。例如热门商品分析、社交网络分析、商业精准推荐、信贷风险控制及购买行为预测等。

请使用浏览器的分享功能分享到微信等