今日份总结:我们通过今天先来认识一下spark是什么,了解spark core以及rdd,并掌握一些常用的算子,今天不用知识点的概括去认识spark core,而是用问答的方式去引导知识点,更深入探究和认识。
一、spark是什么?
目标:通过了解spark的历史和产生原因,浅显了解spark的作用
spark历史:Spark 于 2009 年诞生于加州大学伯克利分校 AMPLab,2013 年被捐赠给 Apache 软件基金会,2014 年 2 月成为 Apache 的顶级项目。相对于 MapReduce 的批处理计算,Spark 可以带来上百倍的性能提升,因此它成为继 MapReduce 之后,最为广泛使用的分布式计算框架。
浅显小结:也就是说它是一个分布式计算框架,可能是为了取代mapreduce的计算的,那么问题来了,它为什么比mapreduce快?为什么要取代mapreduce?我们通过一张图来对比mapreduce和spark的区别,再总结一下大家就明白了。
那么现在spark是什么呢?我们可以大概的总结一下
Apache Spark是一个快速的,多用途的集群计算系统,相对于Hadoop Mapreduce将中间结果保存在磁盘中,Spark使用了内存保存中间结果,能在数据尚未写入硬盘时在内存中进行计算。
当然,spark只是一个计算框架,不像hadoop一样具备分布式文件系统和完备的调度系统,如果要使用spark需要结合存储系统和调度系统来使用。
二、Spark的特点是什么?
目标:通过了解spark的特点,从而了解为什么要用spark
(1)速度快:spark在内存时的运行速度时mapreduce的100倍;基于硬盘的运算速度大概时mapreduce的10倍;spark实现了一种叫做RDD的DAG(有向无环图)执行引擎,其数据缓存在内存中可以进行迭代处理。
(2)易用性:spark支持scala,python,java等多语种的API;spark支持超过80个高级运算符使得用户很轻易构建并运行计算程序;spark可以基于scala,paython,r,sql的shell交互式查询。
(3)通用性:spark提供了一个完整的技术栈,包括sql执行,数据集dataset命令式的API,机器学习库MLlib,图计算框架GraphX,流计算SparkStreaming。用户可以在同一个应用中同时使用这些强大的工具,这是划时代的。
(4)兼容性:spark可以运行在Hadoop,Apache Mesos,Kubernets,Spark Standalone等集群中;spark可以访问Hbase、Hive在内的多种数据库。
总结:因为能使用多语种的API;可扩展集群节点超过8k个;在内存中缓存数据集,实现交互式数据分析;提供命令窗口。
三、Spark的核心是什么?为什么是它?
Spark 核心的部分就是spark core,而spark core最核心的功能是RDD,RDD存在于spark-core包内,也是spark最核心的包。那我们就来了解spark-core和弹性分布式数据集(RDD)
-
Spark-Core 是整个 Spark 的基础, 提供了分布式任务调度和基本的 I/O 功能
-
Spark 的基础的程序抽象是弹性分布式数据集(RDDs), 是一个可以并行操作, 有容错的数据集合
-
RDDs 可以通过引用外部存储系统的数据集创建(如HDFS, HBase), 或者通过现有的 RDDs 转换得到
-
RDDs 抽象提供了 Java, Scala, Python 等语言的API
-
RDDs 简化了编程复杂性, 操作 RDDs 类似通过 Scala 或者 Java8 的 Streaming 操作本地数据集合
-
四、spark集群结构是怎样的呢?程序怎样运行在集群中的?</