1.Flink的重啟策略
答案:固定延遲重啟策略(默認(rèn))
失敗率重啟策略
在一定時(shí)間內(nèi)重啟一定次數(shù),超過這個(gè)次數(shù)則重啟失敗。
**代碼設(shè)置:**
ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
// 3為最大失敗次數(shù);5min為測(cè)量的故障時(shí)間;10s為2次間的延遲時(shí)間
env.setRestartStrategy(RestartStrategies.failureRateRestart(3,Time.of(5, TimeUnit.MINUTES),Time.of(10, TimeUnit.SECONDS)));
無重啟策略
無重啟,作業(yè)直接失敗
2.checkpoint過程(Chandy-Lamport,分布式快照)
答案:
1)JobManager端的 CheckPointCoordinator向 所有SourceTask發(fā)送CheckPointTrigger,Source Task會(huì)在數(shù)據(jù)流中安插CheckPoint barrier
2)當(dāng)task收到所有的barrier后,向自己的下游繼續(xù)傳遞barrier,然后自身執(zhí)行快照,并將自己的狀態(tài)異步寫入到持久化存儲(chǔ)中。增量CheckPoint只是把最新的一部分更新寫入到 外部存儲(chǔ);為了下游盡快做CheckPoint,所以會(huì)先發(fā)送barrier到下游,自身再同步進(jìn)行快照
3)當(dāng)task完成備份后,會(huì)將備份數(shù)據(jù)的地址(state handle)通知給JobManager的CheckPointCoordinator;如果CheckPoint的持續(xù)時(shí)長(zhǎng)超過 了CheckPoint設(shè)定的超時(shí)時(shí)間,CheckPointCoordinator 還沒有收集完所有的 State Handle,CheckPointCoordinator就會(huì)認(rèn)為本次CheckPoint失敗,會(huì)把這次CheckPoint產(chǎn)生的所有 狀態(tài)數(shù)據(jù)全部刪除。
4)最后 CheckPoint Coordinator 會(huì)把整個(gè) StateHandle 封裝成 completed CheckPoint Meta,寫入到hdfs。
3.什么是barrier對(duì)齊?
答案:一旦Operator從輸入流接收到CheckPoint barrier n,它就不能處理來自該流的任何數(shù)據(jù)記錄,直到它從其他所有輸入接收到barrier n為止。否則,它會(huì)混合屬于快照n的記錄和屬于快照n + 1的記錄;
接收到barriern的流暫時(shí)被擱置。從這些流接收的記錄不會(huì)被處理,而是放入輸入緩沖區(qū)。
雖然數(shù)字流對(duì)應(yīng)的barrier已經(jīng)到達(dá)了,但是barrier之后的1、2、3這些數(shù)據(jù)只能放到buffer中,等待字母流的barrier到達(dá);
一旦最后所有輸入流都接收到barrier n,CheckPoint barrier n接著往下游發(fā)送,Operator就會(huì)把緩沖區(qū)中pending 的輸出數(shù)據(jù)發(fā)出去
這里還會(huì)對(duì)自身進(jìn)行快照;之后,Operator將繼續(xù)處理來自所有輸入流的記錄,在處理來自流的記錄之前先處理來自輸入緩沖區(qū)的記錄。
更多關(guān)于“大數(shù)據(jù)培訓(xùn)”的問題,歡迎咨詢千鋒教育在線名師。千鋒教育多年辦學(xué),課程大綱緊跟企業(yè)需求,更科學(xué)更嚴(yán)謹(jǐn),每年培養(yǎng)泛IT人才近2萬人。不論你是零基礎(chǔ)還是想提升,都可以找到適合的班型,千鋒教育隨時(shí)歡迎你來試聽。