1、spark推測執行開啟
設定 spark.speculation=true即可
額外設定
1. spark.speculation
.interval
100:檢測週期,單位毫秒;
2. spark.speculation
.quantile
0.75:完成task的百分比時啟動推測;
3. spark.speculation
.multiplier
1.5:比其他的慢多少倍時啟動推測。
2、spark開啟推測執行的好處
推測執行是指對於乙個stage裡面執行慢的task,會在其他節點的executor上再次啟動這個task,如果其中乙個task例項執行成功則將這個最先完成的task的計算結果作為最終結果,同時會乾掉其他executor上執行的例項,從而加快執行速度
3、問題
我們的spark任務會將計算結果寫入kafka,再有logstash寫入es。
最近由於kafka集群寫入慢,甚至寫不進去,spark任務直接卡住,為防止卡住的情況發生,加了推測執行,但發現跑出來的資料存在重複的情況。同一條資料寫了2次,排查發現是由於推測執行的問題,像這種講執行結果寫入kafka的場景,不適用推測執行,因為乙個task雖然沒有執行完,但是一部分結果已經輸出了,啟動多個task就會造成資料重複,所以具體的配置還是要看應用的場景來做權衡
Spark優化 推測執行機制
spark job中,乙個stage什麼時候完成,取決於stage下最後乙個task的完成時間。task的完成時間也被很多因素影響,比如partition的分配,executor的資源使用情況,host的執行狀態,集群網路等等。很多情況下因為執行環境導致的task跑的過慢,或者直接卡死,讓task可...
Hive 推測執行
在分布式集群環境下,因為程式bug 包括hadoop本身的bug 負載不均衡或者資源分布不均等原因,會造成同乙個作業的多個任務之間執行速度不一致,有些任務的執行速度可能明顯慢於其他任務 比如乙個作業的某個任務進度只有50 而其他所有任務已經執行完畢 則這些任務會拖慢作業的整體執行進度。為了避免這種情...
MySQL坑與填坑
錯誤 1064 錯誤 1215 原因 資料型別不同 錯誤 1630 去掉函式名和 間的空格 check 關鍵字無效 使用列舉或觸發器 特定字串約束 使用列舉 課程性質 char 10 constraint c5 check 課程性質in 公共基礎 專業基礎 專業選修 任意選修 課程性質 enum 公...