目录
什么是Spark?
Spark有哪些特点和优势
1.计算速度
2.易用性
3.通用性
4.兼容性
Spark架构
Spark基本概念
Spark结构设计
使用Scala语言实现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文件支持,否则会报错