赞
踩
目录
1.5.2 下载 Flink 运行时环境,提交 Jar 包的运行方式
Apache Flink 是一个分布式流处理器,具有直观和富有表现力的 API,可实现有状态的流处理应用程序。它以容错的方式有效地大规模运行这些应用程序。Flink 于 2014 年 4 月加入 Apache 软件基金会作为孵化项目,并于 2015 年 1 月成为顶级项目。从一开始, Flink 就拥有一个非常活跃且不断增长的用户和贡献者社区。到目前为止,已有超过五百人为Flink 做出贡献,并且它已经发展成为最复杂的开源流处理引擎之一,并得到了广泛采用的证明。Flink 为不同行业和全球的许多公司和企业提供大规模的商业关键应用。
流处理技术在大大小小的公司中越来越受欢迎,因为它为许多已建立的用例(如数据分析,ETL 和事务应用程序)提供了卓越的解决方案,同时也促进了新颖的应用程序, 软件架构和商机。接下来我们将讨论,为什么有状态流处理变得如此受欢迎并评估其潜力。我们首先回顾传统的数据应用程序架构并指出它们的局限性。接下来,我们介绍基于状态流处理的应用程序设计与传统方法相比,它具有许多有趣的特征最后,我们简要讨论开源流处理器的发展,并在本地Flink 实例上运行流应用程序。
数十年来,数据和数据处理在企业中无处不在。多年来,数据的收集和使用一直在 增长,公司已经设计并构建了基础架构来管理数据。大多数企业实施的传统架构区分了两种类型的数据处理:事务处理(OLTP)和分析处理(OLAP)。
公司将各种应用程序用于日常业务活动,例如企业资源规划(ERP)系统,客户关系 管理(CRM)软件和基于Web 的应用程序。这些系统通常设计有单独的层,用于数据处理(应用程序本身)和数据存储(事务数据库系统),如图所示。
图 1.1: 事务处理
应用程序通常连接到外部服务或直接面向用户,并持续处理传入的事件,如网站上的订单,电子邮件或点击。处理事件时,应用程序将会读取远程数据库的状态,或者通 过运行事务来更新它。通常,一个数据库系统可以服务于多个应用程序,它们有时会访 问相同的数据库或表。
当应用程序需要扩展时,这样的设计可能会导致问题。由于多个应用程序可能会同 时用到相同的数据表示,或者共享相同的基础设施,因此想要更改表的结构或扩展数据 库,就需要仔细的规划和大量的工作。克服紧耦合应用程序的最新方法是微服务设计模 式。微服务被设计为小型、完备且独立的应用程序。他们遵循UNIX 的理念,即“只做一件事并且把它做好”。通过将几个微服务相互连接来构建更复杂的应用程序,这些微服务 仅通过标准化接口(例如 RESTful HTTP 连接)进行通信。由于微服务严格地彼此分离并且仅通过明确定义的接口进行通信,因此每个微服务都可以用不同技术栈来实现,包 括编程语言、类库和数据存储。微服务和所有必需的软件和服务通常捆绑在一起并部署 在独立的容器中。下图描绘了一种微服务架构。
图 1.2: 事务处理
大量数据存储在公司的各种事务数据库系统中,它们可以为公司业务运营提供宝贵 的参考意见。例如,分析订单处理系统的数据,可以获得销量随时间的增长曲线;可以 识别延迟发货的原因;还可以预测未来的销量以便提前调整库存。但是,事务数据通常 分布在多个数据库中,它们往往汇总起来联合分析时更有价值。而且,数据通常需要转 换为通用格式。
所以我们一般不会直接在事务数据库上运行分析查询,而是复制数据到数据仓库。 数据仓库是对工作负载进行分析和查询的专用数据存储。为了填充数据仓库,需要将事务数据库系统管理的数据复制过来。将数据复制到数据仓库的过程称为 extract-transform- load(ETL)。ETL 过程从事务数据库中提取数据,将其转换为某种通用的结构表示,可能包括验证,值的规范化,编码,重复数据删除(去重)和模式转换,最后将其加载到分析数据库中。ETL 过程可能非常复杂,并且通常需要技术复杂的解决方案来满足性能要求。ETL 过程需要定期运行以保持数据仓库中的数据同步。
将数据导入数据仓库后,可以查询和分析数据。通常,在数据仓库上执行两类查询。 第一种类型是定期报告查询,用于计算与业务相关的统计信息,比如收入、用户增长或者输出的产量。这些指标汇总到报告中,帮助管理层评估业务的整体健康状况。第二种 类型是即席查询,旨在提供特定问题的答案并支持关键业务决策,例如收集统计在投放 商业广告上的花费,和获取的相应收入,以评估营销活动的有效性。两种查询由批处理 方式由数据仓库执行,如图所示。
图 1.3: 事务处理
如今,Apache Hadoop 生态系统的组件,已经是许多企业 IT 基础架构中不可或缺的组成部分。现在的做法不是直接将所有数据都插入关系数据库系统,而是将大量数据(如日志文件,社交媒体或 Web 点击日志)写入 Hadoop 的分布式文件系统(HDFS)、S3 或其他批量数据存储库,如Apache HBase,以较低的成本提供大容量存储容量。驻留在此类存储系统中的数据可以通过SQL-on-Hadoop 引擎查询和处理,例如 Apache Hive,Apache Drill 或Apache Impala。但是,基础结构与传统数据仓库架构基本相同。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。