首先说说Spark的起源:
Spark是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架,Spark基于map reduce算法实现的分布式计算,
拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出和结果可以保存在内存中,从而不再需要读写HDFS,
因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的map reduce的算法
Spark与Hadoop的对比
Spark的中间数据放到内存中,对于迭代运算效率更高。
Spark更适合于迭代运算比较多的ML和DM运算。因为在Spark里面,有RDD的抽象概念。
Spark比Hadoop更通用。
Spark提供的数据集操作类型有很多种,不像Hadoop只提供了Map和Reduce两种操作。比如map, filter, flatMap, sample, groupByKey, reduceByKey, union,join, cogroup, mapValues, sort,partionBy等多种操作类型,Spark把这些操作称为Transformations。同时还提供Count, collect, reduce, lookup, save等多种actions操作。
这些多种多样的数据集操作类型,给给开发上层应用的用户提供了方便。各个处理节点之间的通信模型不再像Hadoop那样就是唯一的Data Shuffle一种模式。用户可以命名,物化,控制中间结果的存储、分区等。可以说编程模型比Hadoop更灵活。
不过由于RDD的特性,Spark不适用那种异步细粒度更新状态的应用,例如web服务的存储或者是增量的web爬虫和索引。就是对于那种增量修改的应用模型不适合。
容错性。
在分布式数据集计算时通过checkpoint来实现容错,而checkpoint有两种方式,一个是checkpoint data,一个是loggingthe updates。用户可以控制采用哪种方式来实现容错。
可用性。
Spark通过提供丰富的Scala, Java,PythonAPI及交互式Shell来提高可用性。
Spark与Hadoop的结合
Spark可以直接对HDFS进行数据的读写,同样支持Spark on YARN。Spark可以与MapReduce运行于同集群中,共享存储资源与计算,数据仓库Shark实现上借用Hive,几乎与Hive完全兼容。
以下是一些常见的Spark应用场景:
大规模数据处理:Spark可以处理PB级别的数据,比传统的Hadoop MapReduce更快、更强大。
机器学习:Spark提供了机器学习库MLlib,支持常见的机器学习算法,例如分类、回归、聚类、推荐等。
实时流处理:Spark提供了流处理库Spark Streaming,可以对数据进行实时处理和分析。
图计算:Spark提供了图计算库GraphX,可以处理大规模的图数据,例如社交网络和知识图谱。
数据挖掘:Spark可以通过处理海量的数据,进行数据挖掘,找出隐藏的模式和规律。文章来源:https://www.toymoban.com/news/detail-499819.html
可以看到,Spark具有高效、易用、强大的特点,适用于各种大规模数据处理场景。文章来源地址https://www.toymoban.com/news/detail-499819.html
到了这里,关于Spark是什么?以及它有哪些应用场景呢?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!