聊聊Hadoop、Storm、Spark Streaming、Flink在大数据领域的现状
Hadoop 生态组件竞争激烈,Spark 优势明显,MapReduce 已进入维护模式
曾有开发人员表示,Hadoop 主要是被 MapReduce 拖累了,其实 HDFS 和 YARN 都还不错。堵俊平( 腾讯云专家研究员)则认为 MapReduce 拖累 Hadoop 的说法并不准确:
首先 MapReduce 还是有应用场景,只是越来越窄,它仍然适合某些超大规模数据处理的批量任务,且任务运行非常稳定;
其次,Hadoop 社区对于 MapReduce 的定位就是进入维护模式, 并不追求任何新的功能或性能演进,这样可以让资源投入到更新的计算框架,比如 Spark、Tez,促进其成熟。
HDFS 和 YARN 目前还是大数据领域分布式存储和资源调度系统的事实标准,不过也面临一些挑战。
对 HDFS 而言,在公有云领域,越来越多的大数据应用会选择跳过 HDFS 而直接使用云上的对象存储, 这样比较方便实现计算与存储分离,增加了资源弹性。
YARN 也面临着来自 Kubernetes 的强大挑战,尤其是原生的 docker 支持,更好的隔离性以及上面生态的完整性。不过 K8S 在大数据领域还是追赶者,在资源调度器以及和对各计算框架支持上还有很大的进步空间。
Spark 在计算框架方面基本上占据了主导地位,MapReduce 主要是一些历史应用,而 Tez 更像是 Hive 的专属执行引擎。
当前流处理引擎主角 Spark Streaming 和 Flink
流处理方面,早期的流处理引擎 Storm 正在退役,而当前唱主角的则是 Spark Streaming 和 Flink,这两个流处理引擎各有千秋,前者强在生态,后者则在架构方面有优势。
一个有意思的情况是,对于 Spark Streaming 和 Flink 的应用在国内外的情况很不一样,国内已经有大量的公司开始使用 Flink 构建自己的流处理平台(这可能和阿里在国内大力推广Flink技术有关系),但美国市场 Spark Streaming 还是占绝对主流的地位。当然,还有一些新的流处理框架,例如 Kafka Streams 等等,发展得也不错。
大数据SQL引擎
在大数据 SQL 引擎方面,四大主流引擎 Hive、SparkSQL、Presto 以及 Impala 仍然各有所长。
Hive 最早由 Facebook 开源贡献也是早年应用最广泛的大数据 SQL 引擎,和 MapReduce 一样,Hive 在业界的标签就是慢而稳定。其无私地提供了很多公共组件为其他引擎所使用,堪称业界良心,比如元数据服务 Hive Metastore、查询优化器 Calcite、列式存储 ORC 等。近年来,Hive 发展很快,例如查询优化方面采用了 CBO,在执行引擎方面用 Tez 来替换 MapReduce,通过 LLAP 来 cache 查询结果做优化,以及 ORC 存储不断演进。不过相比较而言,这些新技术从市场应用来说还不算成熟稳定,Hive 仍然被大量用户定义为可靠的 ETL 工具而非即时查询产品。
SparkSQL 这两年发展迅猛,尤其在 Spark 进入 2.x 时代,发展更是突飞猛进。其优秀的 SQL 兼容性(唯一全部 pass TPC-DS 全部 99 个 query 的开源大数据 SQL),卓越的性能、庞大且活跃的社区、完善的生态(机器学习、图计算、流处理等)都让 SparkSQL 从这几个开源产品中脱颖而出,在国内外市场得到了非常广泛的应用。
Presto 这两年应用也非常广泛,这款内存型 MPP 引擎的特点就是处理小规模数据会非常快,数据量大的时候会比较吃力。Impala 的性能也非常优异,不过其发展路线相对封闭,社区生态进展比较缓慢,SQL 兼容性也比较差,用户群体相对较小。
原文来自知乎平台( https://zhuanlan.zhihu.com/p/39439760),小编摘录了部分关于大数据处理框架当前现状的内容。