spark知识点整理

1.查看端口
spark端口号
Spark-shell运行任务情况端口:4044
Spark Master内部通信服务端口号:7077
Spark历史服务器端口号:18080
Hadoop Yarn任务运行情况查看端口号:8088

2.核心组件
1.Driver Executor
2.Master&Worker进程  Master主要负责资源的调度和分配  

3.ApplicationMaster   ResourceManager和Driver之间解耦合靠的纠删ApplicationMaster

4.Executor和Core


3.RDD
RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是 Spark 中最基本的数据处理模型


4.RDD行动算子
reduce
collect
count
first
take
takeOrdered
aggregate
fold
countByKey
save
foreach

2.sparkSql
1.DataFrame类似于传统数据库中的二维表格
2.DataSet是分布式数据集合
3.DataFrame 转换为 RDD    DataFrame 其实就是对 RDD 所以可以直接获取内部的 RDD
4.RDD、DataFrame、DataSet三者关系

3.SparkStream
1.Dstream
2.Kafka数据源(面试、开发重定)
ReceiverAPI:需要一个专门的 Executor 去接收数据,然后发送给其他的 Executor 做计算。存在的问题,接收数据的 Executor 和计算的 Executor 速度会有所不同,特别在接收数据的 Executor速度大于计算的 Executor 速度,会导致计算数据的节点内存溢出。早期版本中提供此方式,当前版本不适用
DirectAPI:是由计算的 Executor 来主动消费 Kafka 的数据,速度由自身控制。
3.DStream转换
4.DStream输出
5.优雅关闭


Spark优化
1.最优资源配置 executor数量、driver内存、executor的内存大小、配置每个executor的cpus core数量

2.RDD优化
1.RDD复用
2.RDD持久化
3.并行度调节  Spark 作业中的并行度指各个 stage 的 task 的数量。  Spark 官方推荐,task 数量应该设置为 Spark 作业总 CPU core 数量的 2~3 倍。
4.广播大变量
5.Kryo序列化  比Serializable性能提高10倍
6.调节本地化等待时长


2.算子调优
1.mapPartitions
2.foreachPartion优化数据库操作
3.filter和coalesce的配合使用
4.repartition解决SparkSQL低并行度问题
5.reduceByKey预聚合

3.Shuffle调优
1.调节map端缓冲区大小
2.调节reduce端拉取数据缓存区大小
3.调节reduce端拉取数据重试次数
4.调节reduce端拉取数据等待间隔
5.调节ShortShuffle排序操作阈值


4.JVM调优
降低cache操作的内存占比
调节Executor堆外内存
调节连接等待时长


5.Spark数据倾斜
1.定位
查阅代码中的 shuffle 算子,例如 reduceByKey、countByKey、groupByKey、join 等算
子,根据代码逻辑判断此处是否会出现数据倾斜;
查看 Spark 作业的 log 文件,log 文件对于错误的记录会精确到代码的某一行,可以根
据异常定位到的代码位置来明确错误发生在第几个 stage,对应的 shuffle 算子是哪一个;

2.解决方案
1.聚合原数据
2.过滤导致倾斜的Key
3.提高Shuffle操作
4.使用随机ey实现双重聚合
5.将reduce join转换为map join
6.sample采样堆倾斜key单独进行Join
7.使用随机数扩容进行 join


6.Spark故障排除
1.控制reduce端缓存大小以避免OOM
2.JVM GC导致的shuffle文件拉取失败
3.解决各种序列化导致的错误
4.解决算子函数返回NULL导致的问题
5.解决YARN-CLIENT模式导致的网卡流量急增问题
6.解决YARN-CLUSTER模式的JVM栈内存溢出无法执行问题
7.解决SparkSQL导致的JVM栈内存溢出
8.持久化与checkpoint的使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值