目录
01:学习目标
-
整体目标:初学入门
-
离线
-
SparkCore:类似于MapReduce,最核心的知识
-
SparkSQL:类似于Hive,最常用的内容,基于SparkCore封装的SQL计算层
-
-
实时
-
SparkStreaming:准实时计算,基于SparkCore用离线模拟实时:1天
-
StructStreaming:真实时计算,基于SparkSQL实现实时计算,归属于SparkSQL:1天
-
-
-
今天目标
-
分布式计算需求以及常见的分布式计算的技术有哪些?
-
==Spark的功能、特点【与MapReduce对比】、应用场景?==
-
与MR有什么区别?
-
为什么比MR要快?
-
Spark的核心设计思想?
-
-
Spark的集群和程序测试
-
分布式集群架构
-
分布式集群搭建
-
-
==Spark程序的基本组成和监控平台==
-
Master:主节点
-
Worker:从节点
-
Driver、Executor、Job、Stage、Task
-
-
02:分布式计算需求及发展
-
目标:了解分布式计算的需求及发展
-
为什么要有分布式计算?
-
常用分布式计算的技术有哪些?
-
-
路径
-
step1:分布式计算的需求
-
step2:分布式计算技术的发展
-
-
实施
-
需求
-
问题1:现在有一台机器,内存有4G,要对一个40G的文件内容进行排序,怎么办?
-
单机资源不足
-
-
问题2:现在有一台机器,内存有256G,要在ms级别实现一个100G的文件进行解析处理,怎么办?
-
单机性能较差
-
-
解决:分布式计算
-
-
发展
-
第一代计算:MapReduce
-
离线:文本计算
-
-
第二代计算:Tez/Storm
-
离线:Tez基于MR做了颗粒度拆分
-
实时:Storm
-
-
第三代计算:Spark
-
离线+实时:lambda架构
-
==目前在工作中主要使用的离线计算引擎==
-
-
第四代计算:Flink
-
所有计算全部通过实时来实现:Kappa架构
-
==目前在工作中主要使用实时计算引擎==
-
-
-
-
小结
-
分布式计算主要解决了单机计算资源不足和单机计算性能较差的问题
-
03:Spark的诞生及发展
-
目标:了解Spark的诞生及发展
-
实施
-
诞生
-
发展
-
2014:Spark1.x
-
2016:Spark2.x
-
2020:Spark3.x
-
-
小结
-
了解Spark的诞生及发展
-
04:Spark的功能及特点
-
目标:掌握Spark的功能及特点
-
Spark可以解决哪些分布式计算的场景?
-
为什么用Spark而不用MapReduce?
-
-
路径
-
step1:定义
-
step2:功能
-
step3:特点
-
-
实施
-
定义
Apache Spark is a lightning-fast unified analytics engine for big data and machine learning. It was originally developed at UC Berkeley in 2009.
-
Spark是一个光速的、统一化的分布式分析计算引擎和机器学习算法库
-
-
功能:数据分析引擎工具栈
-
实现离线数据批处理:SparkCore
-
代替MapReduce
-
-
实现交互式数据分析:SparkSQL
-
代替Hive实现SQL分布式计算
-
-
实现实时数据处理:SparkStreaming / StructStreaming
-
代替Storm/Flink
-
-
实现机器学习的开发:Spark ML lib
-
代替Python中机器学习库
-
-
-
特点
-
Speed:快
-
比MapReduce处理同样的数据的性能快上100倍以上
-
为什么很快?
-
积极使用内存:所有处理和计算尽量使用内存来实现
-
-
-
Easy Of Use:好使
-
支持多种开发接口
-
Java/Python/SQL/DSL/R/Scala
-
-
Generality:通用性
-
功能非常全面:任何一种大数据分析计算的场景都可以使用Spark来解决
-
-
SparkCore:基于代码的离线批处理计算,类似于MR
-
SparkSQL
-
离线:基于SQL实现离线批处理计算,类似于Hive
-
实时:StructStreaming,使用SQL实现实时数据计算
-
-
Streaming:基于SparkCore实现实时数据计算
-
MLlib:机器学习算法库
-
Graphx:图计算,数据结构中的图的计算
-
-
Runs Everywhere:随处运行
-
数据源接口非常丰富:==提供了各种读写数据源接口==
-
离线:HDFS、Hive、MySQL、Hbase
-
实时:Kafka
-
-
-
==Spark程序可以运行在各个资源平台上==
-
Standalone:Spark自带的资源平台
-
YARN:工作中主要使用的资源平台
-
Messos
-
K8s
-
-
-
-
-
小结
-
Spark的功能是什么?
-
定义:Spark一个光速的,统一化的分布式数据分析引擎和机器学习算法库
-
功能:离线批处理、SQL交互式处理、实时计算、机器学习、图计算
-
-
Spark有哪些特点?
-
快、接口非常丰富、功能非常全面、随处运行
-
-
05:Spark的应用场景
-
目标:掌握Spark目前在工作中的主要应用场景
-
大数据开发工作中什么时候会用到Spark进行开发?
-
-
实施
-
离线
-
数据采集:Flume、Sqoop、FileBeats、Logstash
-
数据存储:HDFS/Hive
-
数据处理:SparkCore【ETL】、SparkSQL【分析处理】
-
-
实时
-
数据采集:Flume、Logstash、Canal
-
数据存储:Kafka
-
数据处理:SparkStreaming/StructStreaming【流式数据处理】
-
-
-
小结
-
Spark主要应用于哪些场景下?
-
==离线:利用SparkCore和SparkSQL==
-
实时:利用SparkStreaming和StructStreaming
-
目前工作中主要用Flink来代替Spark
-
-
-
06:MR的设计回顾
-
目标:回顾MapReduce的设计流程
-
路径
-
step1:MR的实现设计
-
step2:MR的缺点
-
-
实施
-
MR的实现设计
-
Input:负责读取数据:InputFormat:TextInputFormat、DBInputFormat、TableInputFormat
-
功能一:实现分片,将读取到的数据进行划分,将不同的数据才能分给不同Task
-
功能二:转换KV
-
-
Map:负责数据处理:一对一的转换,多对一的过滤
-
功能一:构建分布式并行Task,每个分片对应一个MapTask【进程】
-
功能二:每个MapTask负责自己处理的分片的数据的转换,转换逻辑由map方法来决定
-
-
Shuffle:负责数据处理
-
Map输出写入数据:磁盘
<
-
-
-