黑马探花交友----6.Spark快速入门

  • 了解什么是Spark
  • 了解Spark的特点
  • 搭建Spark集群
  • 了解Spark的角色介绍
  • 体验第一个Spark程序
  • 编写Spark应用
  • 掌握RDD弹性分布式数据集
  • 掌握RDD常用的算子操作
  • 掌握Spark的任务调度流程

 

1、Spark概述

1.1、什么是Spark?

官网:http://spark.apache.org/

黑马探花交友----6.Spark快速入门

 

1.2、为什么要学Spark?

  • Spark 是一个开源的类似于Hadoop MapReduce 的通用的并行计算框架,Spark基于MapReduce 算法实现的分布式计算,拥有Hadoop MapReduce 所具有的优点;
  • 但不同于MapReduce 的是Spark 中的Job 中间输出和结果可以保存在内存中,从而不再需要读写 HDFS,因此Spark 能更好地适用于数据挖掘与机器学习等需要迭代的map reduce 的算法。
  • Spark 是MapReduce 的替代方案,而且兼容HDFS、Hive,可融入Hadoop 的生态系统,以弥补 MapReduce 的不足。

 

1.3、Spark的特点

1.3.1、运行速度快

与Hadoop 的MapReduce 相比,Spark 基于内存的运算要快100 倍以上,基于硬盘的运算也要快10 倍 以上。Spark 实现了高效的DAG(有向无环图) 执行引擎,可以通过基于内存来高效处理数据流。

1.3.2、易用性好

Spark 支持Java、Python 和Scala 的API,还支持超过80 种高级算法,使用户可以快速构建不同的应 用。而且Spark 支持交互式的Python 和Scala 的shell,可以非常方便地在这些shell 中使用Spark 集群 来验证解决问题的方法。

1.3.3、通用性强

Spark 提供了统一的解决方案。Spark 可以用于批处理、交互式查询(Spark SQL)、实时流处理 (Spark Streaming)、机器学习(Spark MLlib)和图计算(GraphX)。这些不同类型的处理都可以 在同一个应用中无缝使用。Spark统一的解决方案非常具有吸引力,毕竟任何公司都想用统一的平台去 处理遇到的问题,减少开发和维护的人力成本和部署平台的物力成本。

1.3.4、兼容性强

Spark 可以非常方便地与其他的开源产品进行融合。

 

2、搭建Spark集群

Spark的运行环境,可以是在windows上,也可以是运行在linux上,一般情况而言都是运行在linux上 的。

Spark HA 高可用部署

2.1、高可用部署说明 Spark Standalone 集群是Master-Slaves 架构的集群模式,和大部分的Master-Slaves 结构集群一样, 存在着Master 单点故障的问题

2.2、基于zookeeper 的Spark HA 高可用集群部署

 

3、Spark 角色介绍

Spark 是基于内存计算的大数据并行计算框架

 

4、体验Spark程序

spark-shell 是Spark 自带的交互式Shell 程序,方便用户进行交互式编程,用户可以在该命令行下用 scala 编写spark 程序。

 

5、编写Spark应用

说明:编写Spark应用,官方推荐使用的是Scala语言,这里不涉及到Scala语言的语法讲 解,

所以,我们将使用java语言进行编写应用,如熟悉Scala语言的请使用Scala编写。

黑马探花交友----6.Spark快速入门

 

6、弹性分布式数据集RDD

知性调度和可伸缩性。RDD允许用户在执行多个查询时显式地将数据缓存在内存中,后续的查询能够重 用这些数据,这极大地提升了查询速度。

  • Dataset:一个数据集合,用于存放数据的。
  • Distributed:RDD中的数据是分布式存储的,可用于分布式计算。
  • Resilient:RDD中的数据可以存储在内存中或者磁盘中。

 

7、Spark任务调度

说明:

  • 各个RDD之间存在着依赖关系,这些依赖关系就形成有向无环图DAG;
  • DAGScheduler对这些依赖关系形成的DAG进行Stage划分,划分的规则很简单,从后往前回溯, 遇到窄依赖加入本stage,遇见宽依赖进行Stage切分,完成了Stage的划分。
  • DAGScheduler基于每个Stage生成TaskSet,并将TaskSet提交给TaskScheduler。
  • TaskScheduler 负责具体的task调度,最后在Worker节点上启动task。