概述 Spark 主要特点
Spark 是在 MapReduce 基础上产生的,它克服了 MapReduce 存在的性能低下、编程不够灵活等缺点。Spark 作为一种 DAG 计算框架,其主要特点如下:
1、性能高效
其性能高效主要体现在以下几个方面:
内存计算引擎:Spark 允许用户将数据放到内存中以加快数据读取,进而提高数据处理性能。Spark 提供了数据抽象 RDD,它使得用户可将数据分布到不同节点上存储,并选择存储到内存或磁盘,或内存磁盘混合存储。
通用 DAG 计算引擎:相比于 MapReduce 这种简单的两阶段计算引擎,Spark 则是一种更加通用的 DAG 引擎,它使得数据可通过本地磁盘或内存流向不同计算单元而不是(像 MapReduce 那样)借助低效的 HDFS。
性能高效:Spark 是在 MapReduce 基础上产生的,借鉴和重用了 MapReduce 众多已存在组件和设计思想,包括基于 InputFormat 和 OutputFormat 的读写组件、Shuffle 实现、推测执行优化机制等,同时又引入了大量新颖的设计理念,包括允许资源重用、基于线程池的 Executor、无排序 Shuffle、通用 DAG 优化和调度引擎等。据有关测试结果表明,在相同资源消耗的情况下,Spark 比 MapReduce 快几倍到几十倍。
2、简单易用
不像 MapReduce 那样仅仅局限于 Mapper、Partitioner 和 Reducer 等几种低级 API,Spark 提供了丰富的高层次 API,包括 sortByKey、groupByKey、cartesian(求笛卡尔积)等。为方便不同编程语言喜好的开发者,Spark 提供了四种语言的编程 API:Scala、Python、Java 和 R。从代码量方面比较,实现相同功能模块,Spark 比 MapReduce 少 2~5 倍。
3、与 Hadoop 完好集成
Hadoop 发展到现在,已经成为大数据标准解决方案,涉及数据收集、数据存储、资源管理以及分布式计算等一系列系统,它在大数据平台领域的地位不可撼动。Spark 作为新型计算框架,将自己定位为除 MapReduce 等引擎之外的另一种可选的数据分析引擎,它可以与 Hadoop 进行完好集成:可以与 MapReduce 等类型的应用一起运行在 YARN 集群,读取存储在 HDFS/HBase 中的数据,并写入各种存储系统中。
总之,Spark 以上有别于 MapReduce 的特点,使得它在数据分析、数据挖掘和机器学习等方面得到广泛的应用,Spark 已经取代 MapReduce 成为应用最广泛的大数据计算引擎,而基于 MapReduce 实现的开源机器学习库 Mahout[插图]也已经迁移到 Spark 或 Flink 等新型 DAG 计算平台上。
版权声明: 本文为 InfoQ 作者【穿过生命散发芬芳】的原创文章。
原文链接:【http://xie.infoq.cn/article/3aff3f16b49aa9b523c366031】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论