容器化flume以后则奥,在縮減的flume 容器的時候考润,出現(xiàn)數(shù)據(jù)無法讀取,錯誤提示數(shù)據(jù)不完整读处。
根據(jù)flume sink事務機制定位糊治,flume沒有正常關閉,k8s 強制kill flume容器導致罚舱。
再深入排查井辜,測試發(fā)現(xiàn)。手動kill 容器內flume可以正常關閉管闷。k8s 日志中也有發(fā)送kill 信號粥脚。
由此分析,是因為flume容器鏡像是由start.sh 啟動flume進程包个。所以start.sh 為父進程刷允。
當k8s發(fā)送kill信號時,start.sh 沒有捕獲信號機制,所有沒有任何反應树灶,動作纤怒。
直到觸發(fā) k8s 中 terminationGracePeriodSeconds: 30 參數(shù),k8s 強行關閉flume 容器天通。導致flume sink事務沒有完整操作泊窘,所以hdfs 數(shù)據(jù)不完整 。