【Python3实战Spark大数据分析及调度】第7章 Spark Core调优

History Server

Spark的UI界面端口默认4040,只能在Application运行的时候维持。
在这里插入图片描述
修改参数使得spark保存运行日志和UI界面,端口改为18080
在这里插入图片描述
位置
在这里插入图片描述

在这里插入图片描述
改完之后的UI界面
在这里插入图片描述
在这里插入图片描述

序列化

序列化的作用:Shuffle的时候需要进行网络传输时,需要将数据序列化进行传输;节省内存的使用
序列化的类型:
- Java serialization:默认,能够运行实现了 java.io.Serializable 的任何类,灵活但是速度慢。
- Kryo serialization:比 Java 要快10倍左右,但是不支持所有的Serializable ,需要在代码中事先注册类;如果不注册,也能够工作,但是需要在每个项目中存储完整的类名,造成浪费。
在这里插入图片描述

内存管理

内存管理的三个方面:
1. 项目使用的内存
2. 访问这些项目所用的内存
3. 回收垃圾所用的内存
在这里插入图片描述
(重点!)内存的管理分为两大类:

  1. 执行
  2. 存储
    两者共用一块内存,如果执行没有用内存,那么存储可以使用全部的内存,反之一样。但是执行能够在必要的时候踢出存储,但是可以设置阈值留给存储一定的阈值内存
    在这里插入图片描述
    在这里插入图片描述
    在总的Worker node 的内存-300M的基础上,乘以0.6分配给spark进行执行和存储。
    然后执行和存储在这个基础上,各占50%。
    在这里插入图片描述
    判断RDD占用了多少内存,创建之后cache一下,在UI界面查看占用了多少内存

在这里插入图片描述
RDD太大时可以考虑序列化,缺点就是稍微费时
在这里插入图片描述

广播变量

广播变量能够使得开发人员可以在每个机器上缓存一个只读的变量而不是不断地用task对他的副本进行移动。

在这里插入图片描述
在这里插入图片描述
能够大幅度的降低每一个序列化任务的大小,同时减小在集群上部署任务的开销。一般一个task大于20KB,就值得去优化了
在这里插入图片描述

数据本地性

最好的情况是数据和计算都在一个节点,如果不在,一个必须向另一个移动。最好是移动计算,因为序列化的代码比数据要小很多。

数据本地性就是数据和处理它的代码有多近。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值