一、Spark初始
1.什么是Spark?
Apache Spark是专为大规模数据处理而设计的快速通用的计算引擎。
Spark是UC Berkeley AMP lab(加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行计算框架,
Spark拥有Hadoop Mapreduce所具有的优点,但不同于MapReduce的是Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,
因此Spark能更好的适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。
2.Spark总体技术栈
3.Spark与MapReduce的区别
都是分布式计算框架,Spark基于内存,MR基于HDFS。
Spark处理数据的能力一般是MR的十倍以上,Spark中除了基于内存计算外,还有DAG有向无环图来切分任务的执行先后顺序。
4.Spark的运行模式
1.Local:
多用于本地测试,如在eclipse,idea中写程序测试等。
2.Standalone:
Standalone是Spark自带的一个资源调度框架,它支持完全分布式。
3.Yarn:
Hadoop生态圈里面的一个资源调度框架,Spark也可以基于Yarn来计算。
4.Mesos:
资源调度框架
注意:要基于Yarn来进行资源调度,必须实现ApplicationMaster接口,Spark实现了这个接口,所以可以基于Yarn实现。
二、Spark基于Maven项目搭建
1.创建项目
2.创建选择maven-archetype-quickstart
3.配置名称,点击下一步配置Maven及本地Maven仓库地址
4.配置项目名称和位置,并创建
5.配置Maven pom.xml信息,需要注意的地方为,配置的spark版本与scala的版本需要对应匹配
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<!--注意:spark的版本需要跟scala的版本一致,否则在启动项目时,会报版本不一致,无法启动项目-->
<spark.version>2.0.2</spark.version>
<scala.version>2.11</scala.version>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_${scala.version}</artifactId>
<version>${spark.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<!--这个插件主要是用于maven管理scala代码,如果没有此插件,在idea中new file时将无法创建scala文件,如下图-->
<plugin>
<groupId>org.scala-tools</groupId>
<artifactId>maven-scala-plugin</artifactId>
<version>2.15.2</version>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19</version>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>
如下图