天天看點

看雲栖說雲栖 —— 大資料生态

人不能兩次踏進同一條河流

—— 赫拉克利特

本文内容取自2019杭州雲栖大會《大資料生态專場》。

大資料生态專場的主角其實是開源的流計算引擎Flink,Flink是一個用于實時流式大資料計算的開源項目,為什麼大資料處理要做成實時的流式處理?我覺得這個想法可以追溯到雲原生12要素的第11條:

XI日志:把日志當作事件流。

過去,日志都是被當作檔案來看待和處理,為了處理這些“檔案”自然誕生出了一衆面向檔案的批處理大資料項目,當越來越多的開發人員都将日志看作事件“流”之後,像Flink這樣面向實時“流”處理的大資料引擎自然就變得更加重要了。

第一個分享來自pulsar,pulsar是Apache軟體基金會的一個孵化器項目,功能上和kafka高度相似,簡言之就是用來傳遞消息的,pulsar設計上采用服務和資料分離的架構,支援多租戶,有着資産和命名空間的概念。

Pulsar 提供了對 Schema 的原生支援,在與Flink內建後即可提供對資料的結構化通路,使用Flink SQL 在 Pulsar 中查詢資料。借助于Pulsar提供了中繼資料服務,租戶和命名空間被影射為資料庫、Topic影射為表,Topic Schema影射為Table Schema,實時的流資料變成了一張實時變化的表。

通過整合Pulsar和Flink可以得到一個實時流數倉:

  • 頂層是Flink結構化流處理引擎
  • 中層是Pulsar來提供流資料的結構化轉換
  • 最底層是Flume提供實時日志流輸入

下一個和Flink相關的分享是有關K8S的,kubernetes被VMWare 的CEO Pat Gelsinger (前Intel CTO,開發486的功臣)稱為是繼Java、虛拟機、和雲之後最重要的技術。對于這樣的技術,阿裡自然是堅決的擁抱,阿裡雲已經在全球的19個地域開通了Kubernetes服務,越來越多的工作負載已經可以運作在阿裡雲的Kubernetes服務叢集之上,Flink自然也不例外。

通過Kubernetes的Helm Chart包管理工具,通過Deployment部署Flink可以實作更高的安全隔離、更好的資源使用率、更便捷的部署。Flink的K8s Operator可以管理多個Flink叢集、實作任務的生命周期管理和便捷的彈性伸縮。Flink與K8s結合的案例包括微網誌機器學習推薦、阿裡雲資料湖分析、阿裡集團業務上雲等。

最後一個和Flink相關的分享是有關利用Apache Flink分析多源異構資料的,這裡首先澄清了一下有關資料湖的定義,相對于傳統的資料倉庫,這裡講的實時資料湖主要的特點包括:

  • 資料組成、來自IoT裝置、網站、移動應用程式、社交媒體的非關系和關系資料。
  • 資料品質、要面對未加工資料。
  • 主要使用者、資料科學家、資料開發人員和業務分析師。
  • 分析任務、機器學習、預測分析、資料發現和分析。

一套典型的基于Flink的實時資料湖架構包括以下元件:

  • 存儲、由消息隊列、關系型資料庫、結構化或半結構化檔案
  • 管控、原始資料注冊、資料準備和轉儲、資料Catalog、安全和權限控制
  • 執行、資料分析、實時ETL、機器學習

在實際SQL性能上,對比另一個大資料處理引擎Spark,阿裡基于Flink優化定制的Blink大概有1-3倍的性能優勢。

除了Flink,對于希望使用Hadoop全家桶的使用者,阿裡雲還有一個被稱為E-MapReduce的服務,可以提供包括Hive、Spark、Flink、Presto、TensorFlow等計算服務,并且能夠可以阿裡雲的MaxCompute、DataV、QuickBI、DataWorks等大資料服務進行良好整合。

為了能夠降低雲上大資料的存儲成本,阿裡雲提供了一個名為JindoFS的服務,可以讓阿裡雲上的Hadoop叢集以更高的性能實作對OSS的存取,并自動實作冷熱資料的分離以降低存儲成本。

最後一個登場的是阿裡雲自研的大資料計算平台MaxCompute有關“生态”的介紹。

在工具層面,阿裡雲已經獲得了全球探索式BI的領頭羊Tableau的官方支援,在Tableau 2019.4版本中已經可以使用原生的MaxCompute連接配接插件了。在Python生态方面,通過開源的MARS程式庫,打通了MaxCompute和pyTorch等基于Python的AI引擎。

在資料連接配接層面,過去MaxCompute隻能聯合OSS、OTS等自研的資料産品作聯合計算,今天已經可以支援包括MangoDB、MySQL、HBase、Redis等廣泛的開源生态産品,實作資料不動,計算和排程的下推。

在引擎層面,MaxCompute 目前已經能夠支援包括Spark、Flink等主流的開源大資料引擎,Spark2.4/Flink 1.9官方Jar包可以直接在MaxCompute上使用,不用開通E-MapReduce也能直接在MaxCompute上使用Spark。