天天看點

spark推測執行的坑

1、spark推測執行開啟

設定 spark.speculation=true即可

2、spark開啟推測執行的好處

推測執行是指對于一個Stage裡面運作慢的Task,會在其他節點的Executor上再次啟動這個task,如果其中一個Task執行個體運作成功則将這個最先完成的Task的計算結果作為最終結果,同時會幹掉其他Executor上運作的執行個體,進而加快運作速度

3、問題

我們的spark任務會将計算結果寫入kafka,再有logstash寫入es。

最近由于kafka叢集寫入慢,甚至寫不進去,spark任務直接卡住,為防止卡住的情況發生,加了推測執行,但發現跑出來的資料存在重複的情況。同一條資料寫了2次,排查發現是由于推測執行的問題,像這種講執行結果寫入kafka的場景,不适用推測執行,因為一個task雖然沒有執行完,但是一部分結果已經輸出了,啟動多個task就會造成資料重複,是以具體的配置還是要看應用的場景來做權衡

歡迎關注微信公衆号:大資料從業者

繼續閱讀