赞
踩
spark是基于内存计算的大数据并行计算框架,也是hadoop中的mapreduce的替代方案,但和mapreduce又有许多不同。
Spark包含了大数据领域常见的各种计算框架:比如Spark Core用于离线计算,Spark SQL用于交互式查询,Spark Streaming用于实时流式计算,Spark MLlib用于机器学习,Spark GraphX用于图计算。
Spark主要用于大数据的计算,而Hadoop以后主要用于大数据的存储(比如HDFS、Hive、HBase等),以及资源调度(Yarn)。
Spark+Hadoop的组合,是未来大数据领域最热门的组合,也是最有前景的组合!
1、最明显的一点,spark要比mapreduce快的多,官网的数据是,spark在硬盘上运行要比mapreduce快上十倍以上,而在内存中则是快到百倍,主要原因有以下几点(个人总结,也许不够全面)
2、hadoop的底层是java编写的,而spark是用scale编写的,虽然两者都提供了丰富的api可以支持不同的语言,但想深入学习一下spark最好还是使用scale。
3、相比hadoop 的一个mr程序需要写map,reduce,driver等一大堆类和方法,spark程序则要精简的多,拿wordcount来说:
- object WordCount {
-
- def main(args: Array[String]) {
- val conf = new SparkConf().setAppName("WordCount");
- val wordCounts= new SparkContext(conf)
- .textFile("hdfs://spark1:9000/spark.txt", 1)
- .flatMap { line => line.split(" ") }
- .map { word => (word, 1) }
- .reduceByKey { _ + _ }
- .foreach(wordCount => println(wordCount._1 + " appeared " + wordCount._2 + " times."))
- }
-
- }
只需两行代码(虽然第二行略长了一些),就完成了一个wordCount,要知道写一个mr的wordcount得多麻烦。而这也是因为spark的RDD对许多操作进行了抽象,使得我们更方便使用。
4、相比hadoop,spark较为不稳定,由于大量数据被缓存在内存中,Java回收垃圾缓慢的情况严重,导致Spark性能不稳定,在复杂场景中SQL的性能甚至不如现有的Map/Reduce。也是因为数据存在内存中的原因,当数据量过大超出内存空间时会产生非常可怕的后果。所以在处理大量数据方面还是使用hadoop较为合理
(参考自:https://blog.csdn.net/zhang123456456/article/details/78207184)
Spark生态圈也称为BDAS(伯克利数据分析栈),是伯克利APMLab实验室打造的,力图在算法(Algorithms)、机器(Machines)、人(People)之间通过大规模集成来展现大数据应用的一个平台。伯克利AMPLab运用大数据、云计算、通信等各种资源以及各种灵活的技术方案,对海量不透明的数据进行甄别并转化为有用的信息,以供人们更好的理解世界。该生态圈已经涉及到机器学习、数据挖掘、数据库、信息检索、自然语言处理和语音识别等多个领域。
Spark生态圈以Spark Core为核心,从HDFS、Amazon S3和HBase等持久层读取数据,以MESS、YARN和自身携带的Standal
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。