一文帶你瞭解阿里 、滴滴、字節跳動、美團、攜程的Flink核心技術

前言

Apache Flink 已經被業界公認是最好的流計算引擎。然而 Flink 其實並不是一個僅僅侷限於做流處理的引擎。Apache Flink 的定位是一套兼具流、批、機器學習等多種計算功能的大數據引擎。

在最近的一段時間,Flink 在批處理以及機器學習等諸多大數據場景都有長足的突破。一方面Flink 的批計算在經過阿里的優化後有了數量級的提升。另一方面,Flink 社區在 tableAPI,Python,以及 ML 等諸多領域都在逐步發力,持續提升用戶做 Data science 和 AI 計算的體驗。此外,Flink也在逐步提升和其他開源軟件融合的體驗,包括 Hive,還有 Notebook(Zeppelin, Jupyter)等等。

Flink的學習路線

一文帶你瞭解阿里 、滴滴、字節跳動、美團、攜程的Flink核心技術

 

Flink在阿里、滴滴、字節跳動、美團、唯品會、攜程的發展現狀是什麼樣的?

一文帶你瞭解阿里 、滴滴、字節跳動、美團、攜程的Flink核心技術

 

1.Flink 在阿里的現狀

基於 Apache Flink 在阿里巴巴搭建的平臺於 2016 年正式上線,並從阿里巴巴的搜索和推薦這兩大場景開始實現。目前阿里巴巴所有的業務,包括阿里巴巴所有子公司都採用了基於 Flink 搭建的實時計算平臺。同時 Flink 計算平臺運行在開源的 Hadoop 集羣之上。採用 Hadoop 的 YARN 做爲資源管理調度,以 HDFS 作爲數據存儲。因此,Flink 可以和開源大數據軟件 Hadoop 無縫對接。

一文帶你瞭解阿里 、滴滴、字節跳動、美團、攜程的Flink核心技術

 

目前,這套基於 Flink 搭建的實時計算平臺不僅服務於阿里巴巴集團內部,而且通過阿里雲的雲產品 API 向整個開發者生態提供基於 Flink 的雲產品支持。

2.Apache Flink 在滴滴

在滴滴,所有的數據基本上可以分爲四個大塊:

1、軌跡數據:軌跡數據和訂單數據往往是業務方特別關心的。同時因爲每一個用戶在打車以

後,都必須要實時的看到自己的軌跡,所以這些數據有強烈的實時需求。

2、交易數據:滴滴的交易數據,
3、埋點數據:滴滴各個業務方的埋點數據,包括終端以及後端的所有業務數據,

4、日誌數據:整個的日誌系統都有一些特別強烈的實時需求。

一文帶你瞭解阿里 、滴滴、字節跳動、美團、攜程的Flink核心技術

 

一文帶你瞭解阿里 、滴滴、字節跳動、美團、攜程的Flink核心技術

 

3.字節跳動Jstorm到Apache Flink的遷移實踐
下面這幅圖展示的是字節跳動公司的業務場景

一文帶你瞭解阿里 、滴滴、字節跳動、美團、攜程的Flink核心技術

 

首先,應用層有廣告,AB 測試,推送,數據倉庫等業務;其次中間層針對 python 用戶抽象出來一個模板,用戶只需要在模板裏寫自己的業務代碼,結合一個 yaml 配置將 spout, bolt 組成DAG 圖;最後將其跑在 Jstorm 計算引擎上。

大概在 17 年 7 月份左右,當時 Jstorm 集羣個數大概 20 左右,集羣規模達到 5000 機器。

一文帶你瞭解阿里 、滴滴、字節跳動、美團、攜程的Flink核心技術

 

4.Apache Flink 在美團的實踐與應用
美團實時計算平臺現狀和背景

實時平臺架構

一文帶你瞭解阿里 、滴滴、字節跳動、美團、攜程的Flink核心技術

 

上圖呈現的是當前美團實時計算平臺的簡要架構。最底層是數據緩存層,可以看到美團測的所有日誌類的數據,都是通過統一的日誌收集系統收集到 Kafka。Kafka 作爲最大的數據中轉層,支撐了美團線上的大量業務,包括離線拉取,以及部分實時處理業務等。在數據緩存層之上,是一個引擎層,這一層的左側是我們目前提供的實時計算引擎,包括 Storm 和 Apache Flink(以下簡稱 Flink)。Storm 在此之前是 standalone 模式的部署方式,Flink 由於其現在運行的環境,美團選擇的是 On YARN 模式,除了計算引擎之外,我們還提供一些實時存儲功能,用於存儲計算的中間狀態、計算的結果、以及維度數據等,目前這一類存儲包含 Hbase、Redis 以及 ES。在計算引擎之上,是趨於五花八門的一層,這一層主要面向數據開發的同學。實時數據開發面臨諸多問題,例如在程序的調試調優方面就要比普通的程序開發困難很多。在數據平臺這一層,美團面向用戶提供的實時計算平臺,不僅可以託管作業,還可以實現調優診斷以及監控報警,此外還有實時數據的檢索以及權限管理等功能。除了提供面向數據開發同學的實時計算平臺,美團現在正在做的事情還包括構建元數據中心。這也是未來我們想做 SQL 的一個前提,元數據中心是承載實時流系統的一個重要環節,我們可以把它理解爲實時系統中的大腦,它可以存儲數據的 Schema,Meta。架構的最頂層就是我們現在實時計算平臺支撐的業務,不僅包含線上業務日誌的實時查詢和檢索,還涵蓋當下十分熱門的實時機器學習。機器學習經常會涉及到搜索和推薦場景,這兩個場景最顯著特點:
一、會產生海量實時數據;
二、流量的 QPS 相當高。此時就需要實時計算平臺承載部分實時特徵的提取工作,實現應用的搜索推薦服務。還有一類是比較常見的場景,包括實時的特徵聚合,斑馬 Watcher(可以認爲是一個監控類的服務),實時數倉等。

以上就是美團目前實時計算平臺的簡要架構。


5.Apache Flink 在唯品會的實踐
本文主要內容主要包括以下幾個方面:

1. 唯品會實時平臺現狀

2. Apache Flink(以下簡稱 Flink)在唯品會的實踐

3. Flink On K8S

4. 後續規劃

一文帶你瞭解阿里 、滴滴、字節跳動、美團、攜程的Flink核心技術

 

6.攜程基於 Apache Flink 的實時特徵平臺

一文帶你瞭解阿里 、滴滴、字節跳動、美團、攜程的Flink核心技術

特徵平臺系統架構

 

現在的架構是標準 lamda 架構,離線部分由 spark sql + dataX 組成。現在使用的是 KV 存儲系統Aerospike,跟 redis 的主要區別是使用 SSD 作爲主存,我們壓測下來大部分場景讀寫性能跟 redis在同一個數據量級。

實時部分:使用 flink 作爲計算引擎,介紹一下用戶的使用方式:

• 註冊數據源:目前支持的實時數據源主要是 Kafka 和 Aerospike,其中 Aerospike 中的數據如果是在平臺上配置的離線或者實時特徵,會進行自動註冊。Kafka 數據源需要上傳對應的schemaSample 文件

• 計算邏輯:通過 SQL 表達

• 定義輸出:定義輸出的 Aerospike 表和可能需要的 Kafka Topic,用於推送 Update 或者 Insert 的數據的 key用戶完成上面的操作後,平臺將所有信息寫入到 json 配置文件。下一步平臺將配置文件和之前準備好的 flinkTemplate.jar(包含所有平臺所需的 flink 功能)提交給 yarn,啓動 flink job。

一文帶你瞭解阿里 、滴滴、字節跳動、美團、攜程的Flink核心技術

 

由於文章內容限制,案例篇的內容我也是做了一個簡單的介紹,技術篇的內容我也不做過多的介紹了,大家需要這份【Flink實踐手冊】技術文檔的話,可以轉發關注小編,私信小編“文檔”來得到獲取方式把~~~~

一文帶你瞭解阿里 、滴滴、字節跳動、美團、攜程的Flink核心技術

 

大家加油好好學習哈,感謝大家支持!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章