一、spark概述

1.1、定义

Spark是一种基于内存的快速、通用可扩展的的大数据分析引擎。

1.2、历史

Spark如何做分类 spark分析_spark

 

 

 1.3、spark特点

1)、运行速度快:与Hadoop的MR相比,Spark基于内存的运算要快100倍以上,基于硬盘的计算也快10倍以上。使用DAG(有向无环图)执行引擎以支持循环数据流与内存计算。计算结果存放于内存中,

2)、易用性好:支持使用Scala、java、Python和R语言进行编程,可以通过Spark shell进行交互式编程。

3)、通用性强:spark提供了完整而又强大的的工具,包括sql查询,流式计算,机器学习和图算法组件等等

4)、兼容性强:可运行与独立的集群环境中,可运行与Hadoop中,也可运行在Amazon EC2等云环境中。并且可以访问HDFS,Hbase,hive等多种数据源。

DAG结构图如下

Spark如何做分类 spark分析_jar_02

 

 

 1.4 Spark 内置模块

Spark如何做分类 spark分析_spark_03

 

spark core:实现了spark的基本功能。包含任务调度,内存管理,错误恢复,与存储系统交互等模块。spark core中包含了对RDD(弹性分布式数据集)的API定义。

Spark SQL:是spark用来操作结构化数据的程序包。通过使用Spark SQL,我们可以使用SQL或者HQL来查询数据。Spark SQL支持多种数据源,比如HIve表。Parquet以及JSOn等。

Spark Streaming:是Spark提供对实时数据进行流式计算的组件。包括用来操作数据流的API,并且与Spark core中的RDD API高度对应。

Spark MLlib:提供常见的机器学习(ML)功能的程序库。包括分类、回归、聚类、协同过滤等,还提供了模型评估、数据 导入等额外的支持功能。

集群管理器:Spark 设计为可以高效地在一个计算节点到数千个计算节点之间伸缩计 算。为了实现这样的要求,同时获得最大灵活性,Spark支持在各种集群管理器(Cluster Manager)上运行,包括Hadoop YARN、Apache Mesos,以及Spark自带的一个简易调度 器,叫作独立调度器。 

二、Spark部署模式

2.1、Local模式

2.1.1、概述

Local模式就是运行在一台计算机上的模式,通常用于本机的练手和测试。

Local模式设置Master的方式:

1)、local:所有计算都运行在一个线程当中,没有任何的并行运算,通产在本机执行一些测试代码或者练手的时候使用这种模式、

2)、local[K]:指定使用几个进程 来运行计算,比如local[4]就是运行4个Worker线程。

3)、local[*] :这种模式直接是按照CPU最多COres来设置线程数。

2.2.2 安装使用

1)上传并解压spark安装包

[myc@nn1 sorfware]$ tar -zxvf spark-2.1.1-bin-hadoop2.7.tgz -C /opt/module/
[myc@nn1 module]$ mv spark-2.1.1-bin-hadoop2.7 spark

2)官方求PI案例

 

[myc@nn1spark]$ bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--executor-memory 1G \
--total-executor-cores 2 \
./examples/jars/spark-examples_2.11-2.1.1.jar \
100

 

(1)基本语法

bin/spark-submit \
--class <main-class>
--master <master-url> \
--deploy-mode <deploy-mode> \
--conf <key>=<value> \
... # other options
<application-jar> \
[application-arguments]

(2)参数说明:

 

--master 指定Master的地址,默认为Local

--class: 你的应用的启动类 (如 org.apache.spark.examples.SparkPi)

--deploy-mode: 是否发布你的驱动到worker节点(cluster) 或者作为一个本地客户端 (client) (default: client)*

--conf: 任意的Spark配置属性, 格式key=value. 如果值包含空格,可以加引号“key=value”

application-jar: 打包好的应用jar,包含依赖. 这个URL在集群中全局可见。 比如hdfs:// 共享存储系统, 如果是 file:// path, 那么所有的节点的path都包含同样的jar

application-arguments: 传给main()方法的参数

--executor-memory 1G 指定每个executor可用内存为1G

--total-executor-cores 2 指定每个executor使用的cup核数为2个

 

3)结果展示

 

该算法是利用蒙特·卡罗算法求PI

Spark如何做分类 spark分析_SQL_04

 


 

 

 

 

 

 

2.2、Standalone模式

2.2.1、概述

Spark如何做分类 spark分析_SQL_05

2.3、On Yarn模式(重点)

2.3.1、概述

Spark客户端直接连接Yarn,不需要额外构建Spark集群。有yarn-client和yarn-cluster两种模式,主要区别在于:Driver程序的运行节点。

yarn-client:Driver程序运行在客户端,适用于交互、调试,希望立即看到app的输出

yarn-cluster:Driver程序运行在由RM(ResourceManager)启动的AP(APPMaster)适用于生产环境

 

 

Spark如何做分类 spark分析_Spark如何做分类_06

 

2.4、On Messos模式

Spark客户端直接连接Mesos;不需要额外构建Spark集群。国内应用比较少,更多的是运用yarn调度。

2.5、几种模式对比

Spark如何做分类 spark分析_jar_07