2015-09-14 79 views
2

在運行任何應用程序邏輯之前,我有一個在啓動階段卡住的Cloud Dataflow作業。我通過在processElement步驟內部添加了一條日誌輸出語句來測試此操作,但它沒有出現在日誌中,因此看起來沒有達到。雲數據流作業在啓動前陷入無盡循環

我可以在日誌中看到的是下面的消息,這裏面似乎每一分鐘:

logger: Starting supervisor: /etc/supervisor/supervisord_watcher.sh: line 36: /proc//oom_score_adj: Permission denied

而且這些每隔幾秒鐘,其循環:

VM is healthy? true.

http: TLS handshake error from 172.17.0.1:38335: EOF

Job is in state JOB_STATE_RUNNING, will check again in 30 seconds.

工作ID是2015-09-14_06_30_22-15275884222662398973,雖然我有兩個額外的工作(2015-09-14_05_59_30-11021392791304643671,2015-09-14_06_08_41-3621035073455045662),我開始上午,並有同樣的問題。

關於可能會導致此問題的任何想法?

+0

預期所有工作人員日誌消息並與正常操作一致。所以他們沒有解釋你的工作爲什麼停滯不前。 –

+0

謝謝傑里米。我懷疑問題在於構建工作本身,它通過一堆數據循環並調用ProcessContext.output()。可能不是編寫它的理想方式。 –

+0

你可以詳細說明你的意思嗎?「通過一堆數據循環並調用output()'?如果數據從輸入到DoFn中,這應該不是問題(因爲它發生在工作人員,在工作完成後);或者數據來自DoFn中的某個字段或以某種方式被序列化到工作人員那裏? –

回答

2

這聽起來像你的管道有一個BigQuery源,然後是DoFn。在運行DoFn(並因此到達您的打印語句)之前,管道將運行BigQuery導出作業以創建GCS中數據的快照。這可確保管道獲取BigQuery表中包含的數據的一致視圖。

看起來您的表的BigQuery導出作業似乎需要很長時間。遺憾的是,出口過程沒有進展指標。如果您再次運行管道並讓其運行更長時間,則應完成導出過程,然後您的DoFn將開始運行。

我們正在研究改進出口工作的用戶體驗,以及弄清爲什麼花費的時間比我們預期的要長。

+0

感謝Ben,這很有道理。其中一次運行花費了兩個多小時,沒有出現任何明顯的表現活動雖然,這看ms對於這個大小的表有點長。 –

+1

您可以通過轉到BigQuery,選擇表格並選擇「導出表格」,選擇「JSON(換行符分隔)」作爲格式,併爲其指定一個雲存儲目錄路徑來測試實現到GCS所需的時間。這應該模仿Dataflow執行的導出作業。 該表是否來自查詢結果?我們已經看到這樣的工作需要花費大約2小時在您描述的大小的桌子上。我們正在研究如何改善表現和發生某些事情的跡象。 –

+0

啊,好的。我今天早些時候在桌上做的一項出口似乎運行了這麼長時間。再次感謝。 –