spark 简介

spark:通用的大数据快速处理引擎的计算模型

1.spark组件简介

spark的核心,其实就是一种新型的大数据计算框架。可以基于Hadoop上存储的大数据进行计算(HDFS、Hive)。

spark替代Hadoop的一部分,也就是Hadoop的计算框架,可以取代mapreduce、Hive查询引擎等。spark本身不提供大数据存储系统。

Spark Core 用于离线计算

Spark SQL 用于交互式查询

Spark Streaming 用于实时式流计算

Spark Mllib 用于机器学习

Spark Graphx 用于图计算

spark 简介

2.Spark与Hadoop

spark 简介

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是更好的选择。

spark 简介