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 的专属执行引擎。

Hadoop技术无法提供实时分析 hadoop现状_flink

 

当前流处理引擎主角 Spark Streaming 和 Flink

流处理方面,早期的流处理引擎 Storm 正在退役,而当前唱主角的则是 Spark Streaming 和 Flink,这两个流处理引擎各有千秋,前者强在生态,后者则在架构方面有优势。

Hadoop技术无法提供实时分析 hadoop现状_Hadoop技术无法提供实时分析_02

 

一个有意思的情况是,对于 Spark Streaming 和 Flink 的应用在国内外的情况很不一样,国内已经有大量的公司开始使用 Flink 构建自己的流处理平台(这可能和阿里在国内大力推广Flink技术有关系),但美国市场 Spark Streaming 还是占绝对主流的地位。当然,还有一些新的流处理框架,例如 Kafka Streams 等等,发展得也不错。

Hadoop技术无法提供实时分析 hadoop现状_大数据_03

 

大数据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 兼容性也比较差,用户群体相对较小。