我很好奇如何決定如何爲運行在Google Dataflow平臺上的Apache Beam管道提供資源。我已經構建了一個流式管道(Beam Java 2.0.0),它接受一個PubSub JSON字符串,將其轉換爲BQ TableRow,然後將其路由到正確的表。管道內還有兩個變換,一個每分鐘有一個5分鐘的滑動窗口,另一個窗口的固定持續時間爲1分鐘。您如何確定在Google Dataflow流式管道中提供多少資源?
對於某些上下文,每個傳入消息都是大約1KB JSON字符串,並且在極端高峯時,管道將在一秒內收到250,000條消息。在關閉之前,我的滑動時間窗口可能會增長到500萬個/分鐘(最壞的情況,但這就是我們的計劃)。我們典型的峯值流量使用量約爲75k信息/秒。但是,90%的時間我們的流水線只能處理30條消息/秒。
我們在啓用了自動擴展功能的情況下運行數據流,默認情況下,Google爲流式管道提供了4個CPU,15GB和420GB * max_number的工作人員。在設置10個最大工作人員的情況下,我們將每月支付4.2TB的磁盤使用費用。這似乎有點矯枉過正,但我不知道應該看什麼數據來驗證我的理論。
我一直在想的是改用2個CPU和7.5 GB內存,每個工作人員使用20GB的SSD,並將最大工人數設置爲50.在此配置下,我們至少有4個工人。
我的遊戲摘要:
- 您如何確定流式管道所需的CPU,RAM和磁盤空間?
- 您如何確定管道應提供SSD資源而不是標準硬驅動器?
- 我可以通過哪些度量指標來衡量我的管道性能?