標籤:
1、記憶體
spark.storage.memoryFraction:很明顯,是指spark緩衝的大小,預設比例0.6
spark.shuffle.memoryFraction:管理executor中RDD和運行任務時的用於對象建立記憶體比例,預設0.2
關於這兩個參數的設定,常見的一個情境就是操作關聯式資料庫
spark 可以通過jdbc操作關聯式資料庫,但是若是沒有分散資料的依據,則將所有資料都讀到driver節點上時,這時,強烈建議先看一下表的資料量和叢集中對spark的記憶體設定參數
假設 executor memory 大小設定為2G,也就是說,spark.shuffle.memoryFraction可用記憶體為2G*0.2=400M,假設5W條資料大小為1M,也就是說可以讀取400*50W=2000W條
當你在單節點上讀取資料超過2000W而不能及時處理時,就有極大的可能oom
記憶體設定
spark.shuffle.memoryFraction 0.4 #適當調高
spark.storage.memoryFraction 0.4 #適當調低
2、開啟外排序
spark.sql.planner.externalSort true
3、修改序列化工具
spark.serializer org.apache.spark.serializer.KryoSerializer
4、限制應用申請核心數
spark.cores.max 15
5、並行數
spark.default.parallelism 90
6、加入第三方常用類庫
spark.executor.extraClassPath /opt/spark/current/lib/sqljdbc41.jar:/opt/spark/current/lib/postgresql-9.4-1202-jdbc41.jar:spark-cassandra-connector-full.jar
spark.driver.extraClassPath /opt/spark/current/lib/sqljdbc41.jar:/opt/spark/current/lib/postgresql-9.4-1202-jdbc41.jar:spark-cassandra-connector-full.jar
spark 效能最佳化