大数据学习之路~Spark

目录

 

Spark学习之路 (一)Spark初识

Spark学习之路 (二)Spark2.3 HA集群的分布式安装

Spark学习之路 (三)Spark之RDD

Spark学习之路 (四)Spark的广播变量和累加器

Spark学习之路 (五)Spark伪分布式安装

Spark学习之路 (六)Spark Transformation和Action

Spark学习之路 (七)Spark 运行流程

Spark学习之路 (八)SparkCore的调优之开发调优

Spark学习之路 (九)SparkCore的调优之数据倾斜调优

Spark学习之路 (十)SparkCore的调优之Shuffle调优

Spark学习之路 (十一)SparkCore的调优之Spark内存

Spark学习之路 (十二)SparkCore的调优之资源调优

Spark学习之路 (十三)SparkCore的调优之资源调优JVM的基本架构

Spark学习之路 (十四)SparkCore的调优之资源调优JVM的GC垃圾收集器

Spark学习之路 (十五)SparkCore的源码解读(一)启动脚本

Spark学习之路 (十六)SparkCore的源码解读(二)spark-submit提交脚本

Spark学习之路 (十七)Spark分区

Spark学习之路 (十八)SparkSQL简单使用

Spark学习之路 (十九)SparkSQL的自定义函数UDF

Spark学习之路 (二十)SparkSQL的元数据

Spark学习之路 (二十一)SparkSQL的开窗函数和DataSet


Spark学习之路 (一)Spark初识

  • 一、官网介绍
    • 1、什么是Spark
  • 二、Spark的四大特性
    • 1、高效性
    • 2、易用性
    • 3、通用性
    • 4、兼容性
  • 三、Spark的组成
  • 四、应用场景

Spark学习之路 (二)Spark2.3 HA集群的分布式安装

  • 一、下载Spark安装包
    • 1、从官网下载
    • 2、从微软的镜像站下载
    • 3、从清华的镜像站下载
  • 二、安装基础
  • 三、Spark安装过程
    •  1、上传并解压缩
    • 2、为安装包创建一个软连接
    • 3、进入spark/conf修改配置文件
    • 4、配置环境变量
  • 四、启动
    • 1、先启动zookeeper集群
    • 2、在启动HDFS集群
    • 3、在启动Spark集群
    • 4、查看进程
    • 5、问题
    • 6、执行之后再次查看进程
  • 五、验证
    • 1、查看Web界面Master状态
    • 2、验证HA的高可用
  • 六、执行Spark程序on standalone
    • 1、执行第一个Spark程序
    • 2、启动spark shell
    • 3、 在spark shell中编写WordCount程序
  • 七、 执行Spark程序on YARN
    • 1、前提
    • 2、启动Spark on YARN
    • 3、打开YARN的web界面
    • 4、运行程序
    • 5、执行Spark自带的示例程序PI

Spark学习之路 (三)Spark之RDD

  • 一、RDD的概述
    • 1.1 什么是RDD?
    • 1.2 RDD的属性
    • 1.3 WordCount粗图解RDD
  • 二、RDD的创建方式
    • 2.1 通过读取文件生成的
    • 2.2 通过并行化的方式创建RDD
    • 2.3 其他方式
  • 三、RDD编程API
    • 3.1 Transformation
    • 3.2 Action
    • 3.3 Spark WordCount代码编写
    • 3.4 WordCount执行过程图
  • 四、RDD的宽依赖和窄依赖
    • 4.1 RDD依赖关系的本质内幕
    • 4.2 依赖关系下的数据流视图

Spark学习之路 (四)Spark的广播变量和累加器

  • 一、概述
  • 二、广播变量broadcast variable
    • 2.1 为什么要将变量定义成广播变量?
    • 2.2 广播变量图解
    • 2.3 如何定义一个广播变量?
    • 2.4 如何还原一个广播变量?
    • 2.5 定义广播变量需要的注意点?
    • 2.6 注意事项
  • 三、累加器 
    • 3.1 为什么要将一个变量定义为一个累加器?
    • 3.2 图解累加器
    • 3.3 如何定义一个累加器?
    • 3.4 如何还原一个累加器?
    • 3.5 注意事项

Spark学习之路 (五)Spark伪分布式安装

  • 一、JDK的安装
    • 1.1 上传安装包并解压
    • 1.2 配置环境变量
    • 1.3 验证Java版本
  • 二、配置配置ssh localhost 
    • 2.1 检测
    • 2.2 生成私钥和公钥秘钥对
    • 2.3 将公钥添加到authorized_keys
    • 2.4 赋予authorized_keys文件600的权限
    • 2.5 修改Linux映射文件(root用户)
    • 2.6 验证
  • 三、安装Hadoop-2.7.5
    • 3.1 上传解压缩
    • 3.2 创建安装包对应的软连接
    • 3.3 修改配置文件
    • 3.4 配置环境变量
    • 3.5 查看hadoop版本
    • 3.6 创建文件夹
    • 3.7 Hadoop的初始化
    • 3.8 启动HDFS和YARN
    • 3.9 检查WebUI
  • 四、Scala的安装(可选)
    • 4.1 下载
    • 4.2 上传解压缩
    • 4.3 配置环境变量
    • 4.4 验证是否安装成功
  • 五、Spark的安装
    • 5.1 下载安装包
    • 5.2 上传解压缩
    • 5.3 为解压包创建一个软连接
    • 5.4 进入spark/conf修改配置文件
    • 5.5 配置环境变量
    • 5.6 启动Spark
    • 5.7 查看进程
    • 5.8 查看web界面

Spark学习之路 (六)Spark Transformation和Action

  • Transformation算子
    • 基本的初始化
  • 一、map、flatMap、mapParations、mapPartitionsWithIndex
    • 1.1 map
    • 1.2 flatMap
    • 1.3 mapPartitions
    • 1.4 mapPartitionsWithIndex
  • 二、reduce、reduceByKey
    • 2.1 reduce
    • 2.2 reduceByKey
  • 三、union,join和groupByKey 
    • 3.1 union
    • 3.2 groupByKey
    • 3.3 join
  • 四、sample、cartesian 
    • 4.1 sample
    • 4.2 cartesian
  • 五、filter、distinct、intersection
    • 5.1 filter
    • 5.2 distinct
    • 5.3 intersection
  • 六、coalesce、repartition、repartitionAndSortWithinPartitions
    • 6.1 coalesce
    • 6.2 replication
    • 6.3 repartitionAndSortWithinPartitions
  • 七、cogroup、sortBykey、aggregateByKey
    • 7.1 cogroup
    • 7.2 sortBykey
    • 7.3 aggregateByKey

Spark学习之路 (七)Spark 运行流程

  • 一、Spark中的基本概念
  • 二、Spark的运行流程
    • 2.1 Spark的基本运行流程
  • 三、Spark在不同集群中的运行架构
    • 3.1 Spark on Standalone运行过程
    • 3.2 Spark on YARN运行过程

Spark学习之路 (八)SparkCore的调优之开发调优

  • 调优概述
  • 原则一:避免创建重复的RDD
    • 一个简单的例子
  • 原则二:尽可能复用同一个RDD
    • 一个简单的例子
  • 原则三:对多次使用的RDD进行持久化
    • 对多次使用的RDD进行持久化的代码示例
    • Spark的持久化级别
    • 如何选择一种最合适的持久化策略
  • 原则四:尽量避免使用shuffle类算子
    • Broadcast与map进行join代码示例
  • 原则五:使用map-side预聚合的shuffle操作
  • 原则六:使用高性能的算子
    • 使用reduceByKey/aggregateByKey替代groupByKey
    • 使用mapPartitions替代普通map
    • 使用foreachPartitions替代foreach
    • 使用filter之后进行coalesce操作
    • 使用repartitionAndSortWithinPartitions替代repartition与sort类操作
  • 原则七:广播大变量
    • 广播大变量的代码示例
  • 原则八:使用Kryo优化序列化性能
  • 原则九:优化数据结构
  • 原则十:Data Locality本地化级别

Spark学习之路 (九)SparkCore的调优之数据倾斜调优

  • 调优概述
  • 数据倾斜发生时的现象
  • 数据倾斜发生的原理
  • 如何定位导致数据倾斜的代码
    • 某个task执行特别慢的情况
    • 某个task莫名其妙内存溢出的情况
  • 查看导致数据倾斜的key的数据分布情况
  • 数据倾斜的解决方案
    • 解决方案一:使用Hive ETL预处理数据
    • 解决方案二:过滤少数导致倾斜的key
    • 解决方案三:提高shuffle操作的并行度
    • 解决方案四:两阶段聚合(局部聚合+全局聚合)
    • 解决方案五:将reduce join转为map join
    • 解决方案六:采样倾斜key并分拆join操作
    • 解决方案七:使用随机前缀和扩容RDD进行join
    • 解决方案八:多种方案组合使用

Spark学习之路 (十)SparkCore的调优之Shuffle调优

  • 一、概述
  • 二、shuffle的定义
  • 三、ShuffleManager发展概述
  • 四、HashShuffleManager的运行原理
    • 4.1 未经优化的HashShuffleManager
    • 4.2 优化后的HashShuffleManager
  • 五、SortShuffleManager运行原理
    • 5.1 普通运行机制
    • 5.2 bypass运行机制
  • 六、shuffle相关参数调优
    • spark.shuffle.file.buffer
    • spark.reducer.maxSizeInFlight
    • spark.shuffle.io.maxRetries
    • spark.shuffle.io.retryWait
    • spark.shuffle.memoryFraction(已经弃用)
    • spark.shuffle.manager(已经弃用)
    • spark.shuffle.sort.bypassMergeThreshold
    • spark.shuffle.consolidateFiles(已经弃用)

Spark学习之路 (十一)SparkCore的调优之Spark内存

  • 一、概述
  • 二、堆内和堆外内存规划
    • 2.1 堆内内存
    • 2.2 堆外内存
    • 2.3 内存管理接口
  • 三、内存空间分配
    • 3.1 静态内存管理
    • 3.2 统一内存管理
  • 四、存储内存管理
    • 4.1 RDD 的持久化机制
    • 4.2 RDD 缓存的过程
    • 4.3 淘汰和落盘
  • 五、 执行内存管理
    • 5.1 多任务间内存分配
    • 5.2 Shuffle 的内存占用

Spark学习之路 (十二)SparkCore的调优之资源调优

  • 一、概述
  • 二、Spark作业基本运行原理
  • 三、资源参数调优
    • 3.1 num-executors
    • 3.2 executor-memory
    • 3.3 executor-cores
    • 3.4 driver-memory
    • 3.5 spark.default.parallelism
    • 3.6 spark.storage.memoryFraction
    • 3.7 spark.shuffle.memoryFraction

Spark学习之路 (十三)SparkCore的调优之资源调优JVM的基本架构

  • 一、JVM的结构图
    • 1.1 Java内存结构
    • 1.2 如何通过参数来控制各区域的内存大小
    • 1.3 控制参数
    • 1.4 JVM和系统调用之间的关系
  • 二、JVM各区域的作用
    • 2.1 Java堆(Heap)
    • 2.2 方法区(Method Area)
    • 2.3 程序计数器(Program Counter Register)
    • 2.4 JVM栈(JVM Stacks)
    • 2.5 本地方法栈(Native Method Stacks)

Spark学习之路 (十四)SparkCore的调优之资源调优JVM的GC垃圾收集器

  • 一、概述
  • 二、垃圾收集器(garbage collector (GC)) 是什么?
  • 三、为什么需要GC?
  • 四、为什么需要多种GC?
  • 五、对象存活的判断
  • 六、垃圾回收算法
    • 6.1 标记 -清除算法
    • 6.2 复制算法
    • 6.3 标记-整理算法
    • 6.4 分代收集算法
  • 七、垃圾收集器
    • 7.1 Serial收集器
    • 7.2 ParNew收集器
    • 7.3 Parallel收集器
    • 7.4 CMS收集器
    • 7.5 G1收集器
  • 八、常用的收集器组合 

Spark学习之路 (十五)SparkCore的源码解读(一)启动脚本

  • 一、启动脚本分析
    • 1.1 start-all.sh 
    • 1.2 start-master.sh
    • 1.3 spark-config.sh(1.2的第5步)
    • 1.4 load-spark-env.sh(1.2的第6步)
    • 1.5 spark-env.sh
    • 1.6 spark-daemon.sh
    • 1.7 spark-class
    • 1.8 start-slaves.sh
    • 1.9 转向start-slave.sh
  • 二、其他脚本
    • 2.1 start-history-server.sh
    • 2.2 start-shuffle-service.sh
    • 2.3 start-thriftserver.sh

Spark学习之路 (十六)SparkCore的源码解读(二)spark-submit提交脚本

  • 一、概述
  • 二、源码解读
    • 2.2 find-spark-home
    • 2.3 spark-class
    • 2.4 SparkSubmit 

Spark学习之路 (十七)Spark分区

  • 一、分区的概念
  • 二、为什么要进行分区
  • 三、Spark分区原则及方法
    • 3.1 本地模式
    • 3.2 YARN模式
  • 四、分区器

Spark学习之路 (十八)SparkSQL简单使用

  • 一、SparkSQL的进化之路
  • 二、认识SparkSQL
    • 2.1 什么是SparkSQL?
    • 2.2 SparkSQL的作用
    • 2.3 运行原理
    • 2.4 特点
    • 2.5 SparkSession
    • 2.7 DataFrames   
  • 三、RDD转换成为DataFrame
    • 3.1 方式一:通过 case class 创建 DataFrames(反射)
    • 3.2 方式二:通过 structType 创建 DataFrames(编程接口)
    • 3.3 方式三:通过 json 文件创建 DataFrames
  • 四、DataFrame的read和save和savemode
    • 4.1 数据的读取
    • 4.2 数据的保存
    • 4.3 数据的保存模式
  • 五、数据源
    • 5.1 数据源只json
    • 5.2 数据源之parquet
    • 5.3 数据源之Mysql
    • 5.4 数据源之Hive

Spark学习之路 (十九)SparkSQL的自定义函数UDF

Spark学习之路 (二十)SparkSQL的元数据

  • 一、概述
  • 二、Spark-SQL脚本

Spark学习之路 (二十一)SparkSQL的开窗函数和DataSet

 

你可能感兴趣的:(大数据之Spark,spark,大数据)