最近因爲工作需要開始接觸hive和mysql的數據加載,其中hive向mysql存儲數據時,其中有些任務採用了nohup的方式後臺執行。遇到了下面這個問題,因目前難以排查,現做一個記錄。
情況描述
環境:腳本內容爲循環執行
nohup &後臺執行
發現,任務顯示暫停[1]- 2856 Stopped (tty output) nohup ./diaodu.sh
同時查詢mysql中,發現數據並沒有寫入。同時yarn列表爲空
如果此時關閉任務,確認job列表爲空。
但此時mysql中數據開始大量增加,並大量產生日誌。
查詢yarn後臺發現產生任務,同時關閉一個任務,產生一個任務,直到循環結束。所有任務關閉後數據停止產生。
如果長時間運行,會在第二天產生看到任務成功執行,併產生相應日誌和數據。
上面證明是錯誤的,後臺掛掉之後程序會正常執行。
長時間後臺程序在停止狀態會掛掉。
直接運行
正常循環執行則爲逐個產生日誌,mysql數據漸漸增加。
推測
1,後臺執行完畢後一次反饋,但無法解釋yarn列表和mysql表長時間爲空的現象。
2,sqoop需要大量時間進行數據緩存,但爲什麼正常運行時無此操作,而且sqoop應該是沒有如此底層的操作。
3,嘗試從nohup內核角度出發推測原因,待續。