轉發自:http://suanfazu.com/t/fen-bu-shi-ji-suan-kuang-jia-google-cloud-dataflow/257
Google Cloud Dataflow是一種構建、管理和優化複雜數據處理流水線的方法,集成了許多內部技術,如用於數據高效並行化處理的Flume和具有良好容錯機制流處理的MillWheel。Dataflow當前的API還只有Java版本(其實Flume本身是提供Java/C++/Python多種接口的,MillWheel也提供Java/C++的API)。
相比原生的map-reduce模型,Dataflow有幾個優點:
-
可以構建複雜的pipeline,在這不妨引用Google雲平臺的產品營銷總監Brian Goldfarb的話
Cloud Dataflow可以用於處理批量數據和流數據兩種。在一個世界性事件(比如演講當中的世界盃事件)中,實時分析上百萬twitter數據。在流水線的一個部階段責讀取tweet,下一個階段負責抽取標籤。另一個階段對tweet分類(基於情感,正面負面或者其他方面)。下一個階段過濾關鍵詞等等。相比之下,Map/Reduce這個用來處理大數據的較早模型,處理這種實時數據已經力不從心,而且也很難應用到這種很長很複雜的數據流水線上。
-
不需手工配置和管理MapReduce集羣。自動進行代碼優化和資源調度,使得開發者的主要精力可以放在業務邏輯本身
-
支持從Batch到Streaming模式的無縫切換:
假設我們要根據用戶在twitter上產生的內容,來實現一個hashtags自動補全的功能Example: Auto completing hashtags Prefix Suggestions ar #argentina, #arugularocks, #argylesocks arg #argentina, #argylesocks, #argonauts arge #argentina, #argentum, #argentine
-
Dashboard:
還可以在developer console中瞭解流水線中每個環節執行的情況,每個流程框基本對應着一行代碼 -
生態系統:
BigQuery作爲存儲系統是Dataflow的一個補充,經過Dataflow清洗和處理過的數據,可以在BigQuery中存下來,同時Dataflow也可以讀取BigQuery以進行表連接等操作。如果想在Dataflow上使用一些開源資源(比如說Spark中的機器學習庫),也是很方便的
爲了配合Dataflow,Google Cloud Platform還爲開發者提供了一系列工具,包括雲保存,雲調試,雲追蹤和雲監控。
比較
- Cascading/Twitter Scalding:
-
Twitter Summingbird:
而將批處理和流處理無縫連接的思想又聽起來很像把Scalding和Strom無縫連接起來的twittersummingbird(Scala). -
Spark:
- Spark也有可以構建複雜的pipeline做一代碼優化和任務調度的好處,但目前還需要程序員來配置資源分配。
- Spark在設計分佈式數據集API時,模擬了Scala集合的操作API,使得額外的語法學習成本比Dataflow要低。
- 不過Dataflow似乎並沒有提內存計算的事兒,而這一點可以說是Spark最本質的特徵。不過它支持將Spark作爲Open Source工具,連入Cloud框架作爲補充。
- 分佈式計算中除了Batch和Streaming,Graph也是一個重要的問題,Spark在這方面有GraphX,Dataflow在未來也會將處理Graph處理(Pregel)這塊整合進去。
資源
- Sneak peek: Google Cloud Dataflow, a Cloud-native data processing service
- Google I/O 2014 - The dawn of "Fast Data"1 (國內用戶下載)
- Google Cloud Dataflow 簡單理解1
- Cloud Dataflow :雲計算時代的新計算模式1
- Google Announces Cloud Dataflow Beta at Google I/O
- Google Launches Cloud Dataflow, A Managed Data Processing Service1
- Mapreduce successor google cloud dataflow is a game changer for hadoop thunder
- FlumeJava: Easy, Efficient Data-Parallel Pipelines,PLDI,2010
- MillWheel: Fault-Tolerant Stream Processing at Internet Scale,Very Large Data Bases (2013), pp. 734-746