但是如何去分析这些庞大的数据,过滤出对我们有价值的信息。这个过程你清楚么?
我们今天就从技术原理角度,来分享一个数据分析架构-- Flink-on-YARN。可能到这里有人会有疑惑,什么是Flink ?什么是YARN?什么又是Flink-on-YARN?那么就带着这些问题来进入我们今天的话题吧!
对于业界的大数据存储及分布式处理系统来说,Hadoop 是耳熟能详的卓越开源分布式文件存储及处理框架。但是不代表它就是完美的。事实上原生MapReduce 的 JobTracker/TaskTracker 的机制,JobTracker需要同时负责资源管理和作业控制,它也因为赋予的功能过多而造成负载过重,所以需要大规模的调整来修复它在可扩展性,内存消耗,线程模型,可靠性和性能上的缺陷。但是随着修改的难度日益加大,为了从根本上解决旧MapReduce框架的性能瓶颈,也为了Hadoop架构更加长远的发展,Hadoop团队重构了MapReduce,这就是MapReduceV2诞生的背景。
区别于MapReduceV1,MapReduceV2将JobTracker的两个主要功能,即资源管理和作业控制(包括作业监控,容错等)分拆成两个独立进程。资源管理进程与具体应用程序无关,它负责整个集群的资源(内存、CPU、磁盘等)管理,而作业控制进程则是直接与应用程序相关的模块,且每个作业控制进程只负责管理一个作业。这样,通过将原有JobTracker中与应用程序相关和无关的模块分开,不仅减轻了JobTracker负载,也使得Hadoop支持更多的计算框架。因此又在Hadoop2.0产生了一个新的资源管理系统--YARN。
由于YARN具有通用性,用户可以将各种各样的计算框架移植到YARN之上,由YARN进行统一管理和资源分配。通常而言,我们一般将运行在YARN上的计算框架称为“X-on-YARN”
Flink是一个高效、分布式、基于Java实现的通用大数据分析引擎,是Apache的顶级项目之一。它不仅具有分布式 MapReduce一类平台的高效性、灵活性和扩展性以及并行数据库查询优化方案。还支持多种数据源的数据分析处理,比如Amazon Kinesis流数据和 Apache Cassandra分布式数据库管理系统。
在大数据处理领域,批处理任务与流处理任务一般被认为是两种不同的任务,因为他们它们所提供的SLA是完全不相同的,因此一个大数据项目一般会被设计为只能处理其中一种任务,而Flink能够实现两种数据的处理,完全是受益于其灵活的执行引擎。它以固定的缓存块为单位进行网络数据传输,用户可以通过缓存块超时值来控制数据处理的延迟和吞吐量。因此在统一的流式执行引擎的基础上,Flink能够同时支持流处理系统与批处理系统,并且保证其流处理系统与批处理系统的性能并没有因为统一的执行引擎而受到影响。
Flink的大部分API操作,都类似于Apache Hadoop和Apache Spark在分布式对象集上的转换,它主要提供了DataSet API和DataStream API。其中DataSet API用于把静态数据抽象成分布式的数据集进行处理,而DataStreams API则是用于对数据流进行流处理操作。比如针对Amazon kinesis上的数据处理,调用的就是DataStream API。
Flink系统的架构与Spark类似,是一个基于Master-Slave风格的架构。在Flink集群启动时,会启动一个JobManager进程,和至少一个TaskManager进程。而在实现上,Flink是基于Actor实现了JobManager和TaskManager,所以JobManager与TaskManager之间的信息交换,都是通过事件的方式来进行处理。
Flink 有三种部署模式,分别是 Local、Standalone Cluster 和 YARN Cluster。前两种不在我们讨论的范围内。由下图我们可以清晰的得知,Flink 和 YARN 的关系与 MapReduce 和YARN 的关系是一样的。Flink 通过 YARN 的接口实现了自己的 App Master。当在 YARN 中部署了 Flink后,YARN 就会用自己的 Container 来启动 Flink 的 JobManager(也就是 App Master)和 TaskManager。
对于一个企业级应用而言,稳定性永远是第一优先考虑的问题,和MapReduceV1一样,Flink同样也存在JobManager的单点故障问题。对于 YARN Cluaster 模式来说,就意味着Flink 要依靠 YARN 本身来对 JobManager 做 HA 了。比如JobManager 和 TaskManager 都是被 YARN 启动在 YARN 的 Container 中。此时的 JobManager,其实应该称之为 Flink Application Master。也就说它的故障恢复,就完全依靠着 YARN 中的ResourceManager。

11月06日,AWS更新了EMR的版本。在新5.1.0版本中开始支持 Flink-on-YARN。这意味着通过AWS EMR,我们能很容易部署我们的Flink 集群。
那我们又该如何在AWS上快速的部署呢?
很简单,参照下面代码,我们可以直接使用AWS CLI来根据需求创建我们的Flink集群。
通过aws configure配置我们的AK和SK以后,直接运行指令便可创建。

然后可以在AWS的EMR控制面板中查看已经创建好的Flink集群。是不是感觉so easy?



长按二维码 关注我们
光环有云(北京)网络服务有限公司,简称光环有云,为北京光环新网科技股份有限公司和UNITEDSTACK(北京)科技有限公司于2016年8月共同成立的合资公司
光环有云作为AWS APN合作伙伴,旨在为广大企业客户打造领先的、适合中国市场需求的基于AWS技术的云服务产品和服务,并以专业的培训、咨询服务和整体的DevOps体系、帮助客户无缝地构建和使用基于AWS技术的云服务产品和混合云资源,加速客户向云端迁移,实现企业的数字化转型。

