spark 简介
spark:通用的大数据快速处理引擎的计算模型
1.spark组件简介
spark的核心,其实就是一种新型的大数据计算框架。可以基于Hadoop上存储的大数据进行计算(HDFS、Hive)。
spark替代Hadoop的一部分,也就是Hadoop的计算框架,可以取代mapreduce、Hive查询引擎等。spark本身不提供大数据存储系统。
Spark Core 用于离线计算
Spark SQL 用于交互式查询
Spark Streaming 用于实时式流计算
Spark Mllib 用于机器学习
Spark Graphx 用于图计算
2.Spark与Hadoop
1.Mapreduce 是基于本地磁盘的计算。shuffle以及mapreduce的计算模型, 决定了mapreduce只适合处理对速度不敏感的离线批处理任务。
Spark是基于内存的一种计算框架(有时也会使用磁盘,spark shuffle 也会使用磁盘),但是很多单纯的map操作,没有reduce操作,或者filter类操作, 也可以直接内存计算。所以,Spark 的速度可以比mapreduce、Hive(底层也是基于MapReduce来执行SQL语句的), 速度快出数倍,甚至数十倍,上百倍。
2.Hive是一种基于HDFS的数据仓库。而Spark SQL 则是取代Hive的查询引擎。Spark SQL相对于Hive的引擎,速度快,而且可以支持大量的不同数据源,如hive、json、Jdbc、parquet等等。此外, Spark SQL由于身处Spark技术堆栈内, 也是基于RDD来工作,因此可以与Spark的其他组件无缝整合使用,配合起来实现许多复杂的功能。比如
Spark SQL 支持可以直接针对HDFS文件执行SQL语句。
3.Spark Streaming 与 Stom 都可以用于进行实时流计算。 但是他们两者的区别是非常大的。其中区别之一就是Spark Streaming和Stom的计算模型完全不一样。Spark Streaming是基于RDD的。因此需要将一小段时间内的,比如1秒内的数据,收集起来, 作为一个RDD,然后在针对这个batch的数据进行处理。
而Stom却可以做到每来一条数据,都可以立即进行处理和计算。因此,Spark Streaming实际上严格意义上来说, 只能称作准实时的流式计算框架;而Stom是真正意义上的实时流式计算框架。
Spark Streaming由于是基于batch进行处理的,因此相较于Stom基于单条数据进行处理,具有数倍甚至数十倍的吞吐量。
Spark Streaming可以与Spark Core、Spark SQL,甚至是Spark MLlib、Spark Graphx进行无缝整合。流式处理数据, 可以立即进行各种map、reduce转换操作,
可以立即使用SQL进行查询, 甚至可以立即使用ML或者图技术算法进行处理。这种一站式的大数据处理功能和优势, 是Stom无法匹敌的。
通常在对实时性特别高,而且实时数据量不稳定, 比如在白天高峰期的情况下,可以选择使用Stom。 但是如果是对实现性要求一般,允许1秒的准实时处理,而且不要求动态调整并行度的话,选择Spark Streaming是更好的选择。