开发者学堂课程【大数据 Spark2020最新课程(知识精讲与实战演练)第一阶段:Spark 概述_Spark 的组成】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/688/detail/11936
Spark 概述_Spark 的组成
在整个 Spark 当中,最重要就是最底层最核心的一个包,叫做 Spark- Core ,里面提供了一个叫做弹弹性分布式数据集的一个数据抽象,这个 Spark 是诞生自 MIT 的,一般情况下,在高校里面如果要去做一个项目的话,可能会先去写一篇论文,尤其是大数据这个领域,Spark 当初的这篇论文名字就叫做 RDD ,就是 Spark 第一个版本只实现了一个功能,叫做 RDD ,所以说这个 RDD 是整个 Spark 的基础。
后来 Spark 团队的人员发现,在大多数情况下,使用 Spark 的时候,并不是去处理那些非结构化的数据,而是处理结构化的数据和半结构化的数据。
所以在第二部分,这个 Spark 的这个开发者为 Spark 在 RDD 之上,构建了一个新的工具,称之为叫做 SparkSQL 这个工具并不是说它只是去执行 SQL 的,事实上 Spark SQL ,是一整套解决方案,用来去处理结构化的数据好,它提供了两个非常重要的抽象,一个叫做 Dataset ,还有一个叫做 DataFrame 。
同时 DataFrame 和 Dataset 之间联系还比较紧密的,DataFrame 其实就是 Dataset 一个特殊的表现形式。
这个 Spark 不仅可以处理结构化的数据,有的时候在整个大数据的这个计算领域,这个流计算也是非常重要的一个环节,所以 Spark 也支持流计算,支持流计算的这个组件,称之为 Spark Streaming。
Spark streaming 在后来计算的时候,即是在处理这个流式计算的时候,处理的数据绝大多数还是结构化或者半结构化的数据,Spark 在后期的这个版本,在 Spark Streaming之上又构建了一个叫做 Structur Streaming 的一个工具。
Spark是支持迭代计算的,机器学习当中很大一部分的计算都是迭代,计算所以, Spark 和机器学习之间的关系还是比较的紧密的,Spark,实现了好多机器学习的算法,这些算法是包含在一个叫做 MLD 的包内的。
Spark 对于图计算的支持,叫做 GraphX。GraphX 是一个在社交,或者各个领域里面比较常见的一个图计算的工具。
总结一下的话,Spark最底层提供的这个能力,叫做Spark-Core :是由一个叫做 RDD 的这个抽象数据集来进行提供的RDD 的。
接下来,Spark 在 RDD之上又构建了对于各种不同计算的支持,比如说对于结构化数据计算的 SparkSQL 系统。
对于流计算的 Spark Streaming ,对于这个机器学习的 MLlib,对于这个图计算的 Graphx ,在 Spark的下面,其实支持各种各样的存储层,也支持各种各样的资源调度层,所以这就是整个Spark的组成。
Spark 和 Hadoop 的异同:
首先对于类型来说, Hadoop 它是一个基础的一个计算平台,包括了计算、存储和调度,但是 Spark ,它只是一个计算工具,所以 Spark 当中是不包含存储和调度的,也就是说,Spark它的产生其实不是为了去替代掉 Hadoop ,而是替代 Hadoop 当中的计算那一部分,也就是 MapReduce 。
Hadoop 比较擅长的,并不是以最快的速度返回结果,它擅长的是处理大吞吐量的数据,所以,Hadoop 的这个运行速度稍微有点慢。但是 Spark 它找到了一个非常好的平衡, Spark 不仅支持大规模的大吞吐量的这个数据的处理,同时,Spark 的这个速度也是比较快的,所以 Spark 比较适合迭代计算,交互式计算,以及流计算。
Hadoop 的计算延迟是比较大的,因为它的吞吐量也比较大,但是 Spark 找到了一个平衡,它的延迟比较小,但是它的吞吐量也相对来说比较大。
这个 Hadoop 跟 Spark,它们在这个机器部署上的这个成本来比的话,其实比较稍微高一点,因为前面提到过, Spark 是基于内存来进行中间结果的保存的,所以它对内存的要求可能就会比 Hadoop 要稍微高一点点。以上所述就是整个 Spark 和 Hadoop 主要的一个区别。