文章目录
1. Spark 比 MR 块的原因?
- Spark 的计算结果可以放入内存,支持基于内存的迭代,MR 不支持。
- Spark 有 DAG 有向无环图,可以实现 pipeline 的计算模式。
- 资源调度模式:Spark 是粗粒度资源调度,MR 是细粒度资源调度。
- 资源复用:Spark 中的 task 可以复用同一批 Executor 的资源。MR 里面每个 map task 对应一个 jvm,不能复用资源。
2. Spark 中主要进程的作用
- Driver进程:负责任务的分发和结果的回收。
- Executor进程:负责具体任务的执行。
- Master进程:Spark 资源管理的主进程,负责资源调度。
- Worker进程:Spark资源管理的从进程,Worker 节点主要运行 Executor
3. Spark 故障解决
3.1 shuffle file cannot find:磁盘小文件找不到
-
connection timeout ---- shuffle file cannot find
提高建立连接的超时时间,或者降低gc,降低gc了那么spark不能对外提供服务的时间就少了,那么超时的可能就会降低。
-
fetch data fail ---- shuffle file cannot find
提高拉取数据的重试次数以及间隔时间。
-
OOM/executor lost ---- shuffle file cannot find
提高堆外内存大小,提高堆内内存大小。
3.2 Reduce OOM
BlockManager拉取的数据量大,reduce task处理的数据量小
解决方法:
- 降低每次拉取的数据量
- 提高shuffle聚合的内存比例
- 提高Executor的内存比例