0. Spark
- 转为大规模数据处理设计的快速通用的计算引擎
- 基于内存,开源,并行计算
- 消除了mapreduce大量IO操作和仅支持批处理的缺陷
- 通过RDD弹性分布式数据集,提供交互式查询功能
- 基于scala面向函数语言编写,便于操作RDD
- 可通过YARN管理分配资源,利用HDFS存储数据
- 使用DAG有向无环图执行引擎,内存/磁盘计算速度均比MR快
- 支持java,python,scala,R和spark shell多种语言编程
- 避免同时维护多个组件
- 丰富API和库,支持SQL MLib,GraphX,Streaming
1. spark性能优化
影响性能的主要因素
- 网络传输开销大
- 硬件资源利用率低
- 同一资源的复用率低
优化的方向
- 设置数据本地化,减少跨节点跨机架的网络传输开销
- 设置合适的存储格式,推荐orc,缩短查询时间
- 设置内存计算的大小和task数量,根据集群内存和磁盘大小调整
- 调整分区数量,提高查询性能
- 减少RDD的重复创建,同时尽可能复用已存在的RDD
- 减少使用shuffle类算子(reduceByKey,join,distinct,repartition)
- 选择可替代的最佳算子,reduceByKey替代groupByKey,mapPartitions替代map
- 避免数据倾斜,如map端Join,对数据深入理解的前提修改key调整reduce端的数据倾斜
- 提高spark最大的瓶颈-内存

本文详细介绍了Spark的设计理念和优势,包括其作为并行计算引擎的高速性能,以及对比MapReduce的改进。文章重点讨论了Spark的性能优化,如减少网络传输开销、优化存储格式和内存管理,以及如何调整参数以提升整体性能。此外,还概述了Spark SQL的DataFrame特性和高效查询性能,以及Spark Streaming的实时处理能力,并提到了Kafka在流数据处理中的作用。
最低0.47元/天 解锁文章
2214

被折叠的 条评论
为什么被折叠?



