2019-03-05 SparkSQL集群性能调优 CheatSheet

2019-03-05 SparkSQL集群性能调优 CheatSheet,第1张

0.买高性能机器,增加节点

1.设置磁盘文件预读值大小为16384,使用linux命令:

echo 16384 >/sys/block/{磁盘名}/queue/read_ahead_kb

2. Spark 任务序列化只支持JavaSerializer,数据序列化支持JavaSerializer和 KryoSerializer 。KryoSerializer能达到JavaSerializer的十倍。

3.在spark.driver.extraJavaOptions和spark.executor.extraJavaOptions配置项中添加参数:" -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps ",如果频繁出现Full GC,需要优化GC。把RDD做Cache *** 作,通过日志查看RDD在内存中的大小,如果数据太大,需要改变RDD的存储级别来优化。

4.一般并行度设置为集群CPU总和的2-3倍

5.大表和小表做join *** 作时可以把小表Broadcast到各个节点,从而就可以把join *** 作转变成普通的 *** 作,减少了shuffle *** 作。

6. 合理设计DAG,减少shuffle  //TODO

7.使用 mapPartitions 可以更灵活地 *** 作数据,例如对一个很大的数据求TopN,当N不是很大时,可以先使用mapPartitions对每个partition求TopN,collect结果到本地之后再做排序取TopN。这样相比直接对全量数据做排序取TopN效率要高很多。

8.当之前的 *** 作有很多filter时,使用 coalesce 减少空运行的任务数量

9.当任务数过大时候Shuffle压力太大导致程序挂住不动,或者出现linux资源受限的问题。此时需要对数据重新进行分区,使用 repartition 。

10.配置多个磁盘给 localDir ,shuffle时写入数据速度增快

11. 别collect大数据量,数据会回到driver端,容易OOM。非要collect,请配置 spark.sql.bigdata.thriftServer.useHdfsCollect 为true,会存在hdfs再读

12.尽量用reduceByKey,会在Map端做本地聚合

13. broadcase set/map而不是Iterator, set/map 查询效率O(1) ,iteratorO(n)

14. 数据发生倾斜,repartition大法 ,查出key,salt it

15.使用Hash Shuffle时,通过设置 spark.shuffle.consolidateFiles 为true,来合并shuffle中间文件,减少shuffle文件的数量,减少文件IO *** 作以提升性能

16.Spark SQL 小表join,把小表broadcast出去。配置 spark.sql.autoBroadcastJoinThreshold 和 spark.sql.bigdata.useExecutorBroadcast 。小表在join 右端。

17.SparkSQL数据倾斜,配置 spark.sql.planner.skewJoin 和 spark.sql.planner.skewJoin.threshold

18. SparkSQL 小文件,配置 spark.sql.small.file.combine 和  spark.sql.small.file.split.size

自己觉得比较实用的sublime快捷键:

Ctrl + / ---------------------注释

Ctrl + 滚动 --------------字体变大/缩小

Ctrl + N-------------------新建

软件右下角可以选择文档语法模式

Ctrl + Shift + P ------------------命令模式

命令:

sshtml模糊匹配-----语法切换到html模式,同理所得,ss+相应文件名匹配相应模式,如ssphp、ssjava等

Ctrl+Shift +k -----------删除一行

Alt + . ------------快速闭合标签

Ctrl + P -----------菜单上的解释是gotoanythings,用"#"匹配,

用"@"可以在js文件中匹配相应的类

Ctrl + 回车 -----------添加一行空行

Ctrl + Shift +V --------粘贴过程中保持缩进

Alt + F3 ---------------选中选择的词

Ctrl + W ---------------关闭当前文档

Ctrl + H ---------------替换

Ctrl + D ---------------多行游标选择 可以搭配 Ctrl + K取消选择部分游标

产生游标的另外一种方式,按住Shift + 鼠标右键拖动光标

Ctrl + Shift + D ---------复制这行文本

SHift +Tab --------------去除缩进

Emmet插件快捷方式:

图片:http://www.w3cplus.com/sites/default/files/baiyaimages/CheatSheet.jpg

或:http://docs.emmet.io/cheat-sheet/

常用:

border-top: 1px solid #000 --------bt+

color: #fff --------------------------c#fff

display: inline-block -----------------d:i-b

text-decoration: line-through -------tdl

Sublime自动开启换行:

选择菜单:View->Word Wrap


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/7864596.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-10
下一篇 2023-04-10

发表评论

登录后才能评论

评论列表(0条)

保存