一:task效能優化
1,慢任務(資料傾斜或機器故障)的效能優化:可以考慮減少每個partition處理的資料量,同時建議開啟spark.speculation;
2,儘量減少shuffle,例如我們要減少groupbykey的操作,因為groupbykey會要求通過網路拷貝(shuffle)所有的資料,有限考慮使用reducebykey,因為會首先reduce locally;再例如在進行join操作的時候,形如(k1,v1)和(k1,v2)=> (k1,v3)此時就可以進行pipeline,但是(o1)join(o2)=>o3,此時就會產生shuffle操作;
3,repatition:增加task數量的時候可以考慮使用,從而更加充分使用計算資源;coalesce整理partition碎片;當partition分片數量由大變小要用coalesce(其中shuffle=false),而repartition是無論如何都進行shuffle;
二:資料傾斜:一般發生在shuffle
1,定義更加合理的key(或者說自定義partitioner)。
2,可以考慮使用bytebuffer來儲存block,最大的儲存資料為2g,如果超過這個大小會報異常;
三:網路效能優化
1,可以考慮shuffle的資料放在tachyon中帶來更好的資料本地性,減少網路的shuffle;
2,優先採用netty的方式進行網路通訊;
3,廣播:例如進行join操作的時候採用broadcast可以達到完全的資料本地性的情況下進行join操作;
5,最優先考慮是process_local(spark預設情況下也是這樣做的),所以你更應該考慮使用tachyon;
6,如果要訪問hbase或canssandra,務必保證資料處理傳送在資料所在的機器上;可以參考華為的astro的專案中的task本地化的實現。
Java 基礎(第二季)
public class helloworld public class helloworld int num1 int num2 初始化塊 static public static void main string args 結果如下 通過靜態初始化塊為靜態變數num3賦值 通過初始化塊為變數nu...
X A B (第二季水)
description give you two numbers a and b,if a is equal to b,you should print yes or print no input each test case contains two numbers a and b.output ...
遷移填坑第二季
之前說到,配置了遷移環境碰到了各種坑,然後終於解決掉了,終於能夠nova live migration kobe compute5了。然後就開始批量生產遷移環境,然後。之前是只用了compute3和compute5,然後把compute6和compute7也配置好nfs和libvirt,然後嘗試把k...