Spark入门到实践
一、Spark 快速入门
1.1 Spark 概述
1.2 Spark 最简安装
1.3 Spark实现WordCount
1.3.1 下载安装Scala
1.3.2 添加Spark依赖
1.3.3 Scala实现WordCount
1.3.4 通过IDEA运行WordCount
1.3.5 IDEA配置WordCount输入与输出路径
1.3.6 通过IDEA运行WordCount
1.3.7 查看运行结果
二、Spark Core 的核心功能
2.1 Spark的工作原理
2.2 弹性分布式数据集RDD
2.3 Spark 算子
2.3.1算子的作用
2.3.2 算子的分类
2.4 Pair RDD 及算子
三、Spark 分布式集群搭建
3.1 Spark 运行模式
3.2 搭建 Spark 的 Standalone 模式集群
3.2.1 下载解压 Spark
3.2.2 配置 Spark-env.sh
3.2.3 配置 slaves
3.2.4 配置文件同步其他节点
3.2.5 启动 Spark 集群
3.2.6 查看 Spark 集群状态
2.6.7 测试运行 Spark 集群
四、Spark Streaming 实时计算
4.1 Spark Streaming概述
4.1.1 Spark Streaming定义
4.1.2 Spark Streaming特点
4.2 Spark Streaming运行原理
4.2.1 Spark Streaming工作原理
4.2.2 DStream(数据集)
4.2.3 DStream vs RDD 区别
4.2.3 batch duration (批次)
4.3 Spark Streaming 编程模型
一、Spark 快速入门
1.1 Spark 概述
定义
Spark是基于内存计算的大数据并行计算框架。Spark基于内存计算的特性,提高了在大数据环境下数据处理的实时性,同时保证了高容错性和高可伸缩性,允许用户将Spark部署在大量的廉价硬件之上形成集群,提高了并行计算能力
Spark 于 2009 年诞生于加州大学伯克利分校 AMP Lab,在开发以 Spark 为核心的BDAS时,AMP Lab提出的目标是:one stack to rule them all,也就是说在一套软件栈内完成各种大数据分析任务。目前,Spark已经成为Apache软件基金会旗下的顶级开源项目。
特点
运行速度快
Spark 框架运行速度快主要有三个方面的原因:Spark基于内存计算,速度要比磁盘计算要快得多;Spark程序运行是基于线程模型,以线程的方式运行作业,要远比进程模式运行作业资源开销更小;Spark框架内部有优化器,可以优化作业的执行,提高作业执行效率。
易用性
Spark支持Java、Python和Scala的API,还支持超过80种高级算法,使用户可以快速构建不同的应用。而且Spark支持交互式的Python和Scala的Shell,可以非常方便地在这些Shell中使用Spark集群来验证解决问题的方法。
支持复杂查询
Spark支持复杂查询。在简单的"Map"及"Reduce"操作之外,Spark还支持SQL查询、流式计算、机器学习和图计算。同时,用户可以在同一个工作流中无缝搭配这些计算范式。
实时的流处理
对比MapReduce只能处理离线数据,Spark还能支持实时流计算。Spark Streaming主要用来对数据进行实时处理(Hadoop在拥有了YARN之后,也可以借助其他工具进行流式计算)。
容错性
Spark引进了弹性分布式数据集RDD(Resilient Distributed Dataset),它是分布在一组节点中的只读对象集合。这些对象集合是弹性的,如果丢失了一部分对象集合,Spark则可以根据父RDD对它们进行计算。另外在对RDD进行转换计算时,可以通过CheckPoint机制将数据持久化(比如可以持久化到HDFS),从而实现容错。
1.2 Spark 最简安装
下载
下载地址:https://archive.apache.org/dist/spark/spark-2.4.8/spark-2.4.8-bin-hadoop2.7.tgz
解压
root@hadoop1 local\]# tar -zxvf /usr/local/spark-2.4.8-bin-hadoop2.7.tgz
创建超链接
\[root@hadoop1 local\]# ln -s /usr/local/spark-2.4.8-bin-hadoop2.7 spark
准备测试数据集
\[root@hadoop1 local\]# vim /usr/local/words.log
hadoop hadoop hadoop
spark spark spark
flink flink flink
测试运行
统计单词词频
\[root@hadoop1 local\]# /usr/local/spark/bin/spark-shell
#读取本地文件
scala\> val line=sc.textFile("/usr/local/spark/words.log")
#WordCount统计并列印
scala\> line.flatMap(.split("\\s+")).map((,1)).reduceByKey(+).collect().foreach(println)

#### 1.3 Spark实现WordCount
##### 1.3.1 下载安装Scala
下载地址:https://www.scala-lang.org/download/2.11.8.html
##### 1.3.2 添加Spark依赖
maven依赖
\
\org.apache.spark\
\spark-core_2.11\
\2.4.8\
\
.3.3 Scala实现WordCount
创建Scala目录
在bigdata项目中的Java同级目录下创建scala目录,并右击scala目录选择Mark Directory as---\>Sources Root,然后在IDEA工具中选择File---\>Project Structure---\>Modules---\>+---\>Scala,在弹出的对话框中添加已经安装的Scala库,最后一路点击ok即可。
实现WordCount代码
package com.bigdata.spark
import org.apache.spark.{SparkConf, SparkContext}
object MyScalaWordCount {
def main(args: Array\[String\]): Unit = {
//参数检查
if(args.length \< 2){
System.err.println("Usage:MyScalaWordCount \ \