目录
什么是Spark?
Spark有哪些特点和优势
1.计算速度
2.易用性
3.通用性
4.兼容性
Spark架构
Spark基本概念
Spark结构设计
使用Scala语言实现Spark本地词频统计
什么是Spark?
Spark它是一个用于大规模数据处理的实时计算引擎。
Spark有哪些特点和优势
1.计算速度
由于Spark它是基于内存计算的方式,从计算速度来说远比Hadoop要高,经过统计Spark的计算速度是Hadoop的100多倍。
2.易用性
Spark能够支持多种编程语言进行开发。有 Java, Scala, Python, R, 和 SQL
3.通用性
Spark支持一站式开发流程,支持一系列库,包括SQL和DataFrames、用于机器学习的MLlib、GraphX和Spark流。
4.兼容性
Spark可以运行在Hadoop、Apache Mesos、Kubernetes、独立平台上,也可以运行在云上。它可以访问不同的数据源。
Spark架构
Spark基本概念
RDD:是弹性分布式数据集(Resilient Distributed Dataset)的简称,是分布式内存的一个抽象概念,提供了一种高度受限的共享内存模型;
DAG:是Directed Acyclic Graph(有向无环图)的简称,反映RDD之间的依赖关系;
Executor:是运行在工作节点(Worker Node)上的一个进程,负责运行任务,并为应用程序存储数据;
应用:用户编写的Spark应用程序;
任务:运行在Executor上的工作单元;
作业:一个作业包含多个RDD及作用于相应RDD上的各种操作;
阶段:是作业的基本调度单位,一个作业会分为多组任务,每组任务被称为“阶段”,或者也被称为“任务集”。
Spark结构设计
Master节点:Spark运行架构包括集群资源管理器
Worker节点:运行作业任务的工作节点(Node)
Driver:任务提交运行程序
Executor:和每个工作节点上负责具体任务的执行进程(Executor)
集群资源管理器可以是Spark自带的资源管理器,也可以是YARN或Mesos等资源管理框架。
使用Scala语言实现Spark本地词频统计
1.创建Maven工程
2.pom.xml导入相关依赖
<build>
<!--java编译插件,如果使用的java默认配置不是java8,需要配置这个-->
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
</plugins>
</build>
<!--spark核心依赖-->
<dependencies>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>2.2.0</version>
</dependency>
</dependencies>
3.编写spark wordcount
import org.apache.spark.{SparkConf, SparkContext}
object WordCountWithScala {
def main(args: Array[String]): Unit = {
//本地调试
val conf = new SparkConf().setMaster("local[2]").setAppName("master")
val sc = new SparkContext(conf)
sc.textFile("sparktest/spark_demo/words.text").flatMap(_.split(" "))
.map((_,1)).reduceByKey(_+_)//.saveAsTextFile("hdfs://hadoop01:9000/out")
.foreach(println)
sc.stop
}
}
tips:运行相关配置
文件默认路径是当前父项目根目录
本地运行需要winutils文件支持,否则会报错