【多选题】
A 机器内存不足,不合理的资源参数设置等,导致无法承载大量数据的存储和运算,提高内存和资源参数设置,如num-executors、executor-memory、executor-cores、driver-memory等
B 大量频繁磁盘读写性能消耗太大,可以尽可能减少重复的资源读写,优化程序设计,热数据处理部分硬盘使用SSD提高IO性能
C 执行器数据倾斜,导致某个相同key被partition到一个分区,造成浪费大量资源和时间,而某些执行器数据量小很快执行完毕,可以采用ETL预处理、过滤少数导致倾斜的key 提高shuffle的并行度等操作,适当场景可使用md5化的id获得较高的散列分布,以达到相对平衡的数据分布
D Rdd处理不当或重复不合理的算法导致资源消耗太大,可以优化代码和合理复用RDD进行缓存、RDD持久化,如避免创建重复的RDD,避免使用shuffle类算子,广播大变量 设计计算过程尽量整理算子,相同算子做“merge”优化,若有多个连续map/filter RDD等尽量在同一算子完成 使用Spark源生Parquet数据源格式,获得较高的处理性能
E 不必要或不合理的jar包分发,可以将jar包上传至hdfs上进行处理
查看更多