Spark 要解决的核心问题
回答 Spark 要解决的核心问题,首先需要我们回顾大数据发展的历史。
在 20 世纪 90 年代,随着企业 OLAP 需求的增长,数据仓库的概念出现,当时要解决的核心问题是从多个异构数据源中整合数据,以便进行更深入的分析和报告,代表性的技术是各种 ETL 解决方案,存储主要以 Oracle 这类单体能力强大的数据库为主。
进入 21 世纪,随着数据量的指数级增长,传统数据库无法解决新的问题,以 Hadoop(MapReduce+HDFS)为代表的技术出现,占据新的历史舞台。同时,由于非结构化数据的增长,关系型数据库在处理非结构化、高并发和水平扩展方面存在局限性,NoSQL 数据库出现,以 Cassandra、HBase 等为代表。
随着移动互联网的普及,数据量进一步爆发性增长。需要更高效的数据处理和分析工具,实时和流处理能力。这一阶段,针对 Hadoop 为代表的技术缺陷,新的技术出现,以 Spark、Flink、MPP 数据库、即席查询工具为代表。同时大数据发展也进入和数据科学、机器学习、AI 技术、云计算、物联网技术融合发展的新阶段。
回顾完这段历史,我们再来看“Spark 要解决的核心问题”这个问题,从广义上回答,Spark 想要做的是构建一整套大数据解决方案,演化为新的大数据生态。从狭义上回答,主要是为了解决以 Hadoop 技术为代表存在的问题,让我们来逐条分析。
低效的批处理。MapReduce 是基于磁盘的迭代计算,导致处理复杂计算逻辑时速度很慢,在迭代计算和交互式计算时体验非常差。
复杂的编程模型
粗放的资源管理
缺少实时计算能力
针对以上问题,Spark 实现了划时代的优化。
Spark 的核心是 RDD+DAG,RDD 解决的是以基于内存的迭代计算替代 MR 基于磁盘的迭代计算,DAG 构建有向无环图替代 MR 的任务链。
采用 DataSet/DataFrame API 替代 MR 复杂的编程模型
采用 Drive+Executor 提供更好的资源管理和调度能力
Spark Streaming(Structure Streaming)提供实时计算能力
Spark 在大数据技术上主要解决的是以上 4 个核心问题,当然在机器学习等方面,Spark 带来了更易用的生态。
评论