做者:studytime
原文: https://www.studytime.xin/
官网地址:http://spark.apache.org/算法
spark 是高性能 DAG 计算引擎,一个实现快速通用的集群计算平台。它是由加州大学伯克利分校AMP 实验室开发的通用内存并行计算框架,用来构建大型的、低延迟的数据分析应用程序。它扩展了普遍使用的 MapReduce 计算模型。高效的支撑更多计算模式,包括交互式查询和流处理。spark 的一个主要特色是可以在内存中进行计算,及时依赖磁盘进行复杂的运算。Spark 依然比 MapReduce 更加高效。sql
发展历程:shell
Spark 是在 MapReduce 的基础上产生的,借鉴了大量 MapReduce 实践经验,引入多种新型涉及思想和优化策略。针对MapReduce计算框架存在的局限性进行分析,能更好的了解到 Spark。apache
MapReduce 的局限性以下:编程
一、处理效率低效网络
二、 不适合迭代计算(如机器学习、图计算等),交互式处理(数据挖掘) 和流式处理(点击日志分析)
三、 MapReduce 编程不够灵活架构
四、计算框架多样化、无形中产生运维和管理成本框架
Spark 是基与 MapReduce 基础产生了,克服了其存在的性能低下,变成不够灵活的缺点。运维
Spark 做为一种 DAG 计算框架,主要特色以下:
一、高效性,性能高效,主要体现以下:机器学习
二、易用性。
Spark 支持 Java、Python 和 Scala 的 API,还支持超过 80 种高级算法,使用户能够快速构建不一样的应用。并且 Spark 支持交互式的 Python 和 Scala 的 shell,能够很是方便地在这些 shell 中使用 Spark 集群来验证解决问题的方法。
三、通用性。
Spark 提供了统一的解决方案。Spark 能够用于批处理、交互式查询(Spark SQL)、实时流处理(Spark Streaming)、机器学习(Spark MLlib)和图计算(GraphX)。这些不一样类型的处理均可以在同一个应用中无缝使用。Spark统一的解决方案很是具备吸引力,毕竟任何公司都想用统一的平台去处理遇到的问题,减小开发和维护的人力成本和部署平台的物力成本。
四、兼容性。
Spark 能够很是方便地与其余的开源产品进行融合。好比,Spark可使用Hadoop的YARN和Apache Mesos做为它的资源管理和调度器,器,而且能够处理全部Hadoop支持的数据,包括HDFS、HBase和Cassandra 等。这对于已经部署 Hadoop 集群的用户特别重要,由于不须要作任何数据迁移就可使用Spark的强大处理能力。
总之,Spark以上有别于MapReduce的特色,使得它在数据分析、数据挖掘和机器学习等方面获得普遍的应用,Spark已取代MapReduce成为应用最为普遍的数据计算引擎,同时基于MapReduce实现的机器学习库Mahout也已经迁移到Spark或Flink.
Spark组成(BDAS):全称伯克利数据分析栈,经过大规模集成算法、机器、人之间展示大数据应用的一个平台。也是处理大数据、云计算、通讯的技术解决方案。
它的主要组件有:
一、Yahoo 将 Spark 用在 Audience Expansion 中的应用,进行点击预测和即席查询等
二、淘宝技术团队使用了 Spark 来解决屡次迭代的机器学习算法、高计算复杂度的算法等。应用于内容推荐、社区发现等
三、腾讯大数据精准推荐借助 Spark 快速迭代的优点,实现了在“数据实时采集、算法实时训练、系统实时预测”的全流程实时并行高维算法,最终成功应用于广点通pCTR投放系统上。
四、优酷土豆将 Spark 应用于视频推荐(图计算)、广告业务,主要实现机器学习、图计算等迭代计算。
一、Spark 在任何状况下均比 MapReduce 高效吗?
回答: 答案是否认的,在某些数据量很是大的状况下,MapReduce要比Spark快。例如: WordCount计算的数据量到1PB级别时,就会出现。缘由为:目前Spark处理shufflw实现相对较差,但以后可能会改观。
二、Spark 号称“内存计算框架”,它将全部数据写到内存吗?
回答: 答案是不必定的,存在多种级别类型,能够自行选择。相对建议选择内存,可是内存不够最终仍是会写入磁盘中。
三、 当前存在不少 DAG 引擎,包括 Spark Flink ,为什么你们都在讨论 Spark ?
回答: 从设计架构上来看,Spark机构不必定是最优的,甚至某些方面还不如Flink和Tez.但我以为相面两个方面能够说明部分问题,社区支持,推广宣传较好,活跃度高,故而关注度也更高。同时spark具备通用性,也是一大缘由。