购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.1 大数据开发总体架构

在正式讲解Flink之前,读者首先需要了解使用Flink进行大数据开发的总体架构,如图1-1所示。

数据来源层

在大数据领域,数据的来源往往是关系型数据库、日志文件(用户在Web网站和手机App中浏览相关内容时,服务器端会生成大量的日志文件)、其他非结构化数据等。要想对这些大量的数据进行离线或实时分析,需要使用数据传输工具将其导入Hadoop平台或其他大数据集群中。

图1-1 大数据开发总体架构

数据传输层

常用的数据传输工具有Flume、Sqoop、Kafka。Flume是一个日志收集系统,用于将大量日志数据从不同的源进行收集、聚合,最终移动到一个集中的数据中心进行存储。Sqoop主要用于将数据在关系型数据库和Hadoop平台之间进行相互转移。Kafka是一个发布与订阅消息系统,它可以实时处理大量消息数据以满足各种需求,相当于数据中转站。

数据存储层

数据可以存储于分布式文件系统HDFS中,也可以存储于分布式数据库HBase中,而HBase的底层实际上还是将数据存储于HDFS中。此外,为了满足对大量数据的快速检索与统计,可以使用Elasticsearch作为全文检索引擎。

资源管理层

YARN是大数据开发中常用的资源管理器,它是一个通用资源(内存、CPU)管理系统,不仅可以集成于Hadoop中,也可以集成于Flink、Spark等其他大数据框架中。

数据计算层

MapReduce是Hadoop的核心组成部分,可以结合Hive通过SQL的方式进行数据的离线计算,当然也可以单独编写MapReduce应用程序进行计算。Storm用于进行数据的实时计算,可以非常容易地实时处理无限的流数据。Flink提供了离线计算库和实时计算库两种,离线计算库支持FlinkML(机器学习)、Gelly(图计算)、基于Table的关系操作,实时计算库支持CEP(复杂事件处理),同时也支持基于Table的关系操作。

任务调度层

Oozie是一个用于Hadoop平台的工作流调度引擎,可以使用工作流的方式对编写好的大数据任务进行调度。若任务不复杂,则可以使用Linux系统自带的Crontab定时任务进行调度。

业务模型层

对大量数据的处理结果最终需要通过可视化的方式进行展示。可以使用Java、PHP等处理业务逻辑,查询结果数据库,最终结合ECharts等前端可视化框架展示处理结果。

从另一个角度理解Flink在大数据开发架构中的位置,如图1-2所示。

图1-2 Flink在大数据开发架构中的位置 uE9qeYn+iqnZqbCtvag2ZF7vLmJTYFcQjwVOeIWzNcjI1SV2FtmORhTmXXNCQZAC

点击中间区域
呼出菜单
上一章
目录
下一章
×