Google Cloud Dataflow對比原生的MapReduce

轉發自: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有幾個優點:

  1. 可以構建複雜的pipeline,在這不妨引用Google雲平臺的產品營銷總監Brian Goldfarb的話

    Cloud Dataflow可以用於處理批量數據和流數據兩種。在一個世界性事件(比如演講當中的世界盃事件)中,實時分析上百萬twitter數據。在流水線的一個部階段責讀取tweet,下一個階段負責抽取標籤。另一個階段對tweet分類(基於情感,正面負面或者其他方面)。下一個階段過濾關鍵詞等等。相比之下,Map/Reduce這個用來處理大數據的較早模型,處理這種實時數據已經力不從心,而且也很難應用到這種很長很複雜的數據流水線上。

  2. 不需手工配置和管理MapReduce集羣。自動進行代碼優化和資源調度,使得開發者的主要精力可以放在業務邏輯本身

  3. 支持從Batch到Streaming模式的無縫切換:
    假設我們要根據用戶在twitter上產生的內容,來實現一個hashtags自動補全的功能

    Example: Auto completing hashtags
    Prefix	Suggestions
    ar	#argentina, #arugularocks, #argylesocks
    arg	#argentina, #argylesocks, #argonauts
    arge	#argentina, #argentum, #argentine
  4. Dashboard:
    還可以在developer console中瞭解流水線中每個環節執行的情況,每個流程框基本對應着一行代碼

  5. 生態系統:
    BigQuery作爲存儲系統是Dataflow的一個補充,經過Dataflow清洗和處理過的數據,可以在BigQuery中存下來,同時Dataflow也可以讀取BigQuery以進行表連接等操作。如果想在Dataflow上使用一些開源資源(比如說Spark中的機器學習庫),也是很方便的

    爲了配合Dataflow,Google Cloud Platform還爲開發者提供了一系列工具,包括雲保存,雲調試,雲追蹤和雲監控。

比較

  1. Cascading/Twitter Scalding
    • 傳統Map-reduce只能處理單一的流,而Dataflow可以構建整個pipeline,自動優化和調度,Dataflow乍一聽感覺非常像Hadoop上的Cascading(Java)/Scalding(Scala)。
    • 它們的編程模型很像,Dataflow也可以很方便做本地測試,可以傳一個模擬集合,在上面去迭代計算結果,這一點是傳統Map-reduce望塵莫及的。
  2. Twitter Summingbird
    而將批處理和流處理無縫連接的思想又聽起來很像把Scalding和Strom無縫連接起來的twittersummingbird(Scala).

  3. Spark

    • Spark也有可以構建複雜的pipeline做一代碼優化和任務調度的好處,但目前還需要程序員來配置資源分配。
    • Spark在設計分佈式數據集API時,模擬了Scala集合的操作API,使得額外的語法學習成本比Dataflow要低。
    • 不過Dataflow似乎並沒有提內存計算的事兒,而這一點可以說是Spark最本質的特徵。不過它支持將Spark作爲Open Source工具,連入Cloud框架作爲補充。
    • 分佈式計算中除了Batch和Streaming,Graph也是一個重要的問題,Spark在這方面有GraphX,Dataflow在未來也會將處理Graph處理(Pregel)這塊整合進去。

資源


發佈了5 篇原創文章 · 獲贊 11 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章