目录

什么是Spark?

Spark有哪些特点和优势

1.计算速度

2.易用性

3.通用性

4.兼容性

Spark架构

Spark基本概念

Spark结构设计

使用Scala语言实现Spark本地词频统计


什么是Spark?

Spark它是一个用于大规模数据处理的实时计算引擎。Spark开发——Spark简介及入门-编程之家

 

Spark有哪些特点和优势

1.计算速度

由于Spark它是基于内存计算的方式,从计算速度来说远比Hadoop要高,经过统计Spark的计算速度是Hadoop的100多倍。

Spark开发——Spark简介及入门-编程之家

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:运行相关配置

文件默认路径是当前父项目根目录

Spark开发——Spark简介及入门-编程之家

本地运行需要winutils文件支持,否则会报错

Spark开发——Spark简介及入门-编程之家

Spark开发——Spark简介及入门-编程之家