数据对于技术发展的重要程度不言而喻,尤其是在互联网大行其道的当下,任何一款产品,数据都是其最宝贵的资源。而如何把数据的价值最大化,如何更高效的计算以及分析这些数据就显得尤为重要。正值QCon十周年之际,QCon来到广州,现场为你解读大数据的应用技巧以及实时流计算框架的选择。
随着移动互联网规模的不断扩大,用户群体越来越多,大家对于移动互联网产品的需求越来越多样化的同时,对于体验的要求也越来越“严苛”。这么一想的确没错,在产品同质化十分严重的现在,同一领域下的竞品可能有数十家,如何从这些竞品中脱颖而出,用户体验显得尤为重要。
“实时性”是影响当下互联网用户体验最重要的一个因素之一,无法想象打车、外卖、网购、在线视频等场景下需要花费很长的时间来等待,更快给用户的反馈已经成为用户体验中极为重要的一部分。让用户能够迅速感知到产品的反馈,无论是点击、购买、视频等等,无延迟、及时的反馈等等都会给用户带来极其良好的体验感受。
所以如何处理数据并从数据中挖掘有价值的信息呢?这里不说大家也应该知道了,肯定是实时流计算技术。当下,实时流计算框架可以说是群雄并起,Flink 与 Spark 可以说是当下大环境中应用最广的两款实时流计算框架,Spark 和 Flink 都支持实时计算,且都可基于内存计算。但同时 Spark 与 Flink 也有着诸多的不同,我们在生产中应该用哪个?Flink 确定完胜 Spark 吗?
Spark 的核心概念是 RDD (resilient distributed dataset),指的是一个只读的,可分区的分布式数据集,这个数据集的全部或部分可以缓存在内存中用在多次的计算期间。其强一致性的特点,使得 Spark 可以利用强大一致的批处理引擎的重复运行来提供无界数据集的连续处理,可以在确保正确性的同时降低延迟。
Spark 的真正精彩之处在于强大的批处理引擎解决了太多底层麻烦的问题,如果基于此构建流式处理引擎则整个流处理系统将简单很多,而且可以独自提供一致性语义保障的流式处理系统。
但是用流计算的思路开发批计算才是最优雅的方式,因此对于 Spark 来讲,大换血不可能,只有局部优化。并且 Spark 的本质是一款基于 microbatch 计算的引擎,这种引擎天生的缺点就是延迟越低,所需要的额外开销就越大。这就决定了 Spark 并非特别适合于做秒级甚至亚秒级的计算。
Flink 是可扩展的批处理和流式数据处理的数据处理平台,在大规模流处理方面走在最前沿。不同于 Spark,Flink 是一个真正意义上的流计算引擎,通过流水线数据传输来实现低延迟的流处理方式。Flink 流行的一个重要因素,即如果要用一套引擎来统一流处理和批处理的话,就必须以流处理引擎为基础。Flink 提供了 SQL/tableAPI 这两个 API,为批和流在 query 层的统一铺平了道路。
通过快速将无序流式数据处理的强大功能带到开源世界,并将其与分布式快照及保存点功能等自身创新相结合,Flink 提高了开源流处理的业界标准并引领了当前流式处理创新趋势。
最后,Flink 在设计之初就非常在意性能相关的任务状态 state 和流控等关键技术的设计,并且支持增量跌打,这些都使得 Flink 在执行复杂的大规模任务时性往往更胜一筹。
但是,那就一定要选择 Flink 吗?
Flink、Spark 都是十分优秀的、高性能开源大规模数据处理引擎,都为 Apache 的顶级开源项目,目标是在一个系统中支持所有的数据处理以带来效能的提升。Spark 社区是目前最为活跃的社区之一,经过几年发展和 Hadoop 生态已经能够实现较好的结合,也已经被广泛视为 Hadoop MapReduce 引擎的取代者,但是 Flink 也受到了众多大厂的青睐。
无论是 Spark 还是 Flink ,未来的发展重点将是数据科学和平台的 API 化,除了传统的统计算法外,还包括学习算法,同时使其生态系统越来越完善。未来,Spark 和 Flink 它们都将会是下一代大数据引擎的最有力竞争者。
无论是 Spark 还是 Flink,QCon 全球软件开发大会广州站,两位分别践行“Spark”与“Flink”的大数据实时流计算技术专家将会现场“Solo”,各执一词,听谁的完全取决于你。
不只是这些,更有来自全球范围内的 70 余位资深技术专家将会亲临现场,与现场参会者深度探讨【大前端】、【微服务】、【人工智能】、【高可用高性能架构】、【DevOps】等 13+ 热门技术的实践及趋势。
扫描下方二维码或点击阅读原文可了解大会详情,当前正处于 9 折阶段,购票立减 680 元,咨询可致电鱼丸:13269078023(微信同号)。
1、头条易读遵循行业规范,任何转载的稿件都会明确标注作者和来源;
2、本文内容来自“InfoQ”微信公众号,文章版权归InfoQ公众号所有。