大数据产业兴盛期,说到大数据分析引擎,不少人第一时间会想起Spark、Impala等,然而,作为Apache顶级项目的Flink也是不少企业的选择。它到底有什么优势呢?和Spark相比较,它有什么更可取之处呢?且听大圣众包威客平台一一道来。
一、宝剑露锋芒——Apache Flink
作为Apache的顶级项目,Flink固然集众多优点于一身,包括快速、可靠可扩展、完全兼容Hadoop、使用简便、表现卓越。
1.快速
快,是Flink的主要特点。利用基于内存的数据流,并将迭代处理算法深度集成到系统的运行时中,这样,Flink使得系统能够以极快的速度处理数据密集型和迭代任务。
2.可靠、可扩展
得益于Flink包含自己的内存管理组件、序列化框架和类型推理引擎,所以,即使服务器内存被耗尽,Flink也能够很好地运行。
3.完全兼容Hadoop
为什么开发者无需做任何修改,就能利用Flink运行历史遗留的MapReduce操作?这是因为Flink支持所有Hadoop的所有输入/输出格式和数据类型。另外,Flink包括基于Java和Scala的用于批量和基于流数据分析的API、优化器和具有自定义内存管理功能的分布式运行时等,这也是它能够完全兼容Hadoop的原因之一。
4.易用
让人感到惊喜的是,在无需进行任何配置的情况下,Flink内置的优化器就能够以最高效的方式在各种环境中执行程序。只需要三个命令,Flink就可以运行在Hadoop的新MapReduce框架Yarn上。
5.表现卓越
作为一款优秀的大数据分析引擎,Flink能够利用Java或者Scala语言编写出漂亮、类型安全和可为核心的代码,并能够在集群上运行所写程序。这样,使得开发者可以在无需额外处理的情况下使用Java和Scala数据类型。
一言以蔽之,ApacheFlink具有分布式MapReduce一类平台的高效性、灵活性和扩展性,以及并行数据库查询优化方案,同时,它还支持批量和基于流的数据分析,而且提供了基于Java和Scala的API。总的来说,Flink是一个高效的、分布式的、基于Java实现的通用大数据分析引擎。
二、双锋互切磋——Apache Spark与Apache Flink
同样作为流处理引擎,尽管ApacheSpark在大数据处理运用中已经十分著名,然而,没有一款工具能够处理所有问题。在一些特殊的情况下,ApacheFlink可能很好地弥补了ApacheSpark所未能涵盖的地方。那么,应该选哪一款作为企业的大数据分析引擎呢?我们可以通过两者的异同比较,做出最优选择。
相同之处:
1.两者都能提供恰好一次的保证,即每条记录都仅处理一次;
2.与其他处理系统(比如Storm)相比,它们都能提供一个非常高的吞吐量;
3.两者都能够提供自动内存管理;
4.它们的容错开销都非常低。
不同之处:
事实上,ApacheSpark和ApacheFlink的主要差别,就在于计算模型不同。所以,对于选择ApacheSpark,还是ApacheFlink的问题上,实际上就变成了计算模型的选择。
要了解ApacheSpark与ApacheFlink的相异之处,首先要对如下三种计算模型有一个初步的理解:
批处理——基本上处理静态数据,一次读入大量数据进行处理并生成输出。
微批处理——结合了批处理和连续流操作符,将输入分成多个微批次进行处理,从根本上讲,微批处理是一个“收集然后处理”的计算模型。
连续流操作符——在数据到达时进行处理,没有任何数据收集或处理延迟。
实际中,Spark采用的是微批处理模型,而Flink采用的是基于操作符的连续流模型。随着数据处理能力的提高,企业开始认识到,信息的价值在数据产生的时候最高,他们希望在数据产生时处理数据,这就是说需要一个实时处理系统。当需要实时处理时,可以优先选择ApacheFlink。但也不是所有情况都需要实时系统,这时,ApacheSpark则是更优的选择。比如,在电信行业,统计特定用户使用的带宽,微批处理可能是一个更高效的方案。
至于具体应该怎么选,需要企业在延迟、吞吐量和可靠性等多个方面上去进行权衡。
纵使科技日新月异,然而,适合的,才是最好的。