91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Flink在美團的實踐與應用

發布時間:2020-07-20 20:44:12 來源:網絡 閱讀:561 作者:Ververica 欄目:大數據

作者: 劉迪珊

本文整理自8月11日在北京舉行的Flink Meetup,分享嘉賓劉迪珊(2015年加入美團數據平臺。致力于打造高效、易用的實時計算平臺,探索不同場景下實時應用的企業級解決方案及統?化服務)。

美團實時計算平臺現狀和背景

實時平臺架構

Flink在美團的實踐與應用cdn.xitu.io/2019/4/26/16a58710854ff8c5?w=1866&h=996&f=jpeg&s=371026">

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

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

實時平臺現狀

美團實時計算平臺的現狀是作業量現在已經達到了近萬,集群的節點的規模是千級別的,天級消息量已經達到了萬億級,高峰期的消息量能夠達到千萬條每秒。

Flink在美團的實踐與應用

痛點和問題

美團在調研使用Flink之前遇到了一些痛點和問題:

  • 實時計算精確性問題:在調研使用Flink之前美團很大規模的作業是基于Storm去開發的,Storm主要的計算語義是At-Least-Once,這種語義在保證正確性上實際上是有一些問題的,在Trident之前Storm是無狀態的處理。雖然Storm Trident提供了一個維護狀態的精確的開發,但是它是基于串行的Batch提交的,那么遇到問題在處理性能上可能會有一點瓶頸。并且Trident是基于微批的處理,在延遲上沒有達到比較高的要求,所以不能滿足一些對延遲比較高需求的業務。

  • 流處理中的狀態管理問題:基于之前的流處理過程中狀態管理的問題是非常大的一類問題。狀態管理除了會影響到比如說計算狀態的一致性,還會影響到實時計算處理的性能以及故障恢復時候的能力。而Flink最突出的一個優勢就是狀態管理。

  • 實時計算表義能力的局限性:在實時計算之前很多公司大部分的數據開發還是面向離線的場景,近幾年實時的場景也慢慢火熱起來了。那與離線的處理不同的是,實時的場景下,數據處理的表意能力可能有一定的限制,比如說他要進行精確計算以及時間窗口都是需要在此之上去開發很多功能性的東西。

  • 開發調試成本高:近千結點的集群上已經跑了近萬的作業,分布式的處理的引擎,手工寫代碼的方式,給數據開發的同學也帶來了很高開發和調試的成本,再去維護的時候,運維成本也比較高。

Flink探索關注點

在上面這些痛點和問題的背景下,美團從去年開始進行Flink的探索,關注點主要有以下4個方面:

  • ExactlyOnce計算能力

  • 狀態管理能力

  • 窗口/Join/時間處理等等

  • SQL/TableAPI

Flink在美團的實踐

下面帶大家來看一下,美團從去年投入生產過程中都遇到了哪些問題,以及一些解決方案,分為下面三個部分:

穩定性實踐
穩定性實踐-資源隔離

1.資源隔離的考慮:分場景、按業務

  • 高峰期不同,運維時間不同;

  • 可靠性、延遲需求不同;

  • 應用場景,重要性不同;

    2.資源隔離的策略:

  • YARN打標簽,節點物理隔離;

  • 離線DataNode與實時計算節點的隔離;

Flink在美團的實踐與應用

穩定性實踐-智能調度

Flink在美團的實踐與應用

智能調度目的也是為了解決資源不均的問題,現在普通的調度策略就是基于CPU,基于內存去調度的。除此之外,在生產過程中也發現了一些其他的問題,比如說Flink是會依賴本地磁盤,進行依賴本地磁盤做本地的狀態的存儲,所以磁盤IO,還有磁盤的容量,也是一類考慮的問題點,除此之外還包括網卡流量,因為每個業務的流量的狀態是不一樣的,分配進來會導致流量的高峰,把某一個網卡打滿,從而影響其他業務,所以期望的話是說做一些智能調度化的事情。目前暫時能做到的是從cpu和內存兩方面,未來會從其他方面做一些更優的調度策略。

穩定性實踐-故障容錯

1.節點/網絡故障

  • JobManagerHA

  • 自動拉起

與Storm不同的是,知道Storm在遇到異常的時候是非常簡單粗暴的,比如說有發生了異常,可能用戶沒有在代碼中進行比較規范的異常處理,但是沒有關系,因為worker會重啟作業還會繼續執行,并且他保證的是At-Least-Once這樣的語義,比如說一個網絡超時的異常對他而言影響可能并沒有那么大,但是Flink不同的是他對異常的容忍度是非常的苛刻的,那時候就考慮的是比如說會發生節點或者是網絡的故障,那JobManager單點問題可能就是一個瓶頸,JobManager那個如果掛掉的話,那么可能對整個作業的影響就是不可回復的,所以考慮了做HA,另外一個就是會去考慮一些由于運維的因素而導致的那作業,還有除此之外,可能有一些用戶作業是沒有開啟CheckPoint,但如果是因為節點或者是網絡故障導致掛掉,希望會在平臺內層做一些自動拉起的策略,去保證作業運行的穩定性。

2.上下游容錯

  • FlinkKafka08異常重試

我們的數據源主要是Kafka,讀寫Kafka是一類非常常見的實時流處理避不開的一個內容,而Kafka本身的集群規模是非常比較大的,因此節點的故障出現是一個常態問題,在此基礎上我們對節點故障進行了一些容錯,比如說節點掛掉或者是數據均衡的時候,Leader會切換,那本身Flink的讀寫對Leader的切換容忍度沒有那么高,在此基礎上我們對一些特定場景的,以及一些特有的異常做的一些優化,進行了一些重試。

3.容災

  • 多機房

  • 流熱備

容災可能大家對考慮的并不多,比如說有沒有可能一個機房的所有的節點都掛掉了,或者是無法訪問了,雖然它是一個小概率的事件,但它也是會發生的。所以現在也會考慮做多機房的一些部署,包括還有Kafka的一些熱備。

Flink平臺化

Flink平臺化-作業管理

在實踐過程中,為了解決作業管理的一些問題,減少用戶開發的一些成本,我們做了一些平臺化的工作,下圖是一個作業提交的界面展示,包括作業的配置,作業生命周期的管理,報警的一些配置,延遲的展示,都是集成在實時計算平臺的。
05.jpg

Flink平臺化-監控報警

在監控上我們也做了一些事情,對于實時作業來講,對監控的要求會更高,比如說在作業延遲的時候對業務的影響也比較大,所以做了一些延遲的報警,包括作業狀態的報警,比如說作業存活的狀態,以及作業運行的狀態,還有未來會做一些自定義Metrics的報警。自定義Metrics是未來會考慮基于作業處理本身的內容性,做一些可配置化的一些報警。

Flink平臺化-調優診斷

  • 實時計算引擎提供統一日志和Metrics方案

  • 為業務提供按條件過濾的日志檢索

  • 為業務提供自定義時間跨度的指標查詢

  • 基于日志和指標,為業務提供可配置的報警

另外就是剛剛提到說在開發實時作業的時候,調優和診斷是一個比較難的痛點,就是用戶不是很難去查看分布式的日志,所以也提供了一套統一的解決方案。這套解決方案主要是針對日志和Metrics,會在針對引擎那一層做一些日志和Metrics的上報,那么它會通過統一的日志收集系統,將這些原始的日志,還有Metrics匯集到Kafka那一層。今后Kafka這一層大家可以發現它有兩個下游,一方面是做日志到ES的數據同步,目的的話是說能夠進入日志中心去做一些日志的檢索,另外一方面是通過一些聚合處理流轉到寫入到OpenTSDB把數據做依賴,這份聚合后的數據會做一些查詢,一方面是Metrics的查詢展示,另外一方面就是包括實做的一些相關的報警。

Flink在美團的實踐與應用

下圖是當前某一個作業的一個可支持跨天維度的Metrics的一個查詢的頁面。可以看到說如果是能夠通過縱向的對比,可以發現除了作業在某一個時間點是因為什么情況導致的?比如說延遲啊這樣容易幫用戶判斷一些他的做作業的一些問題。除了作業的運行狀態之外,也會先就是采集一些節點的基本信息作為橫向的對比

Flink在美團的實踐與應用

下圖是當前的日志的一些查詢,它記錄了,因為作業在掛掉之后,每一個ApplicationID可能會變化,那么基于作業唯一的唯一的主鍵作業名去搜集了所有的作業,從創建之初到當前運行的日志,那么可以允許用戶的跨Application的日志查詢。

Flink在美團的實踐與應用

生態建設

為了適配這兩類MQ做了不同的事情,對于線上的MQ,期望去做一次同步多次消費,目的是避免對線上的業務造成影響,對于的生產類的Kafka就是線下的Kafka,做了一些地址的地址的屏蔽,還有基礎基礎的一些配置,包括一些權限的管理,還有指標的采集。

Flink在美團的應用

下面會給大家講兩個Flink在美團的真實使用的案例。第一個是Petra,Petra其實是一個實時指標的一個聚合的系統,它其實是面向公司的一個統一化的解決方案。它主要面向的業務場景就是基于業務的時間去統計,還有計算一些實時的指標,要求的話是低時延,他還有一個就是說,因為它是面向的是通用的業務,由于業務可能是各自會有各自不同的維度,每一個業務可能包含了包括應用通道機房,還有其他的各自應用各個業務特有的一些維度,而且這些維度可能涉及到比較多,另外一個就是說它可能是就是業務需要去做一些復合的指標的計算,比如說最常見的交易成功率,他可能需要去計算支付的成功數,還有和下單數的比例。另外一個就是說統一化的指標聚合可能面向的還是一個系統,比如說是一些B端或者是R段的一些監控類的系統,那么系統對于指標系統的訴求,就是說我希望指標聚合能夠最真最實時最精確的能夠產生一些結果,數據保證說它的下游系統能夠真實的監控到當前的信息。右邊圖是我當一個Metrics展示的一個事例。可以看到其他其實跟剛剛講也是比較類似的,就是說包含了業務的不同維度的一些指標匯聚的結果。

Petra實時指標聚合

1.業務場景:

  • 基于業務時間(事件時間)

  • 多業務維度:如應用、通道、機房等

  • 復合指標計算:如交易成功率=支付成功數/下單數

  • 低延遲:秒級結果輸出

Flink在美團的實踐與應用

2.Exactlyonce的精確性保障

  • Flinkcheckpoint機制

3.維度計算中數據傾斜

  • 熱點key散列

4.對晚到數據的容忍能力

  • 窗口的設置與資源的權衡

Flink在美團的實踐與應用

在用Flink去做實時指標復核的系統的時候,著重從這幾方面去考慮了。第一個方面是說精確的計算,包括使用了FLink和CheckPoint的機制去保證說我能做到不丟不重的計算,第一個首先是由統一化的Metrics流入到一個預聚合的模塊,預聚合的模塊主要去做一些初始化的一些聚合,其中的為什么會分預聚合和全量聚合主要的解決一類問題,包括就剛剛那位同學問的一個問題,就是數據傾斜的問題,比如說在熱點K發生的時候,當前的解決方案也是通過預聚合的方式去做一些緩沖,讓盡量把K去打散,再聚合全量聚合模塊去做匯聚。那其實也是只能解決一部分問題,所以后面也考慮說在性能的優化上包括去探索狀態存儲的性能。下面的話還是包含晚到數據的容忍能力,因為指標匯聚可能剛剛也提到說要包含一些復合的指標,那么符合的指標所依賴的數據可能來自于不同的流,即便來自于同一個流,可能每一個數據上報的時候,可能也會有晚到的情況發生,那時候需要去對數據關聯做晚到的容忍,容忍的一方面是說可以設置晚到的Lateness的延遲,另一方面是可以設置窗口的長度,但是其實在現實的應用場景上,其實還有一方面考慮就是說除了去盡量的去拉長時間,還要考慮真正的計算成本,所以在這方面也做了一些權衡,那么指標基本就是經過全量聚合之后,聚合結果會回寫Kafka,經過數據同步的模塊寫到OpenTSDB去做,最后去grafana那做指標的展示,另一方面可能去應用到通過Facebook包同步的模塊去同步到報警的系統里面去做一些指標,基于指標的報警。

下圖是現在提供的產品化的Petra的一個展示的機示意圖,可以看到目前的話就是定義了某一些常用的算子,以及維度的配置,允許用戶進行配置話的處理,直接去能夠獲取到他期望要的指標的一個展示和匯聚的結果。目前還在探索說為Petra基于Sql做一些事情,因為很多用戶也比較就是在就是習慣上也可以傾向于說我要去寫Sql去完成這樣的統計,所以也會基于此說依賴Flink的本身的對SQl還有TableAPI的支持,也會在Sql的場景上進行一些探索。

Flink在美團的實踐與應用

11.jpg

MLX機器學習平臺

第二類應用就是機器學習的一個場景,機器學習的場景可能會依賴離線的特征數據以及實時的特征數據。一個是基于現有的離線場景下的特征提取,經過了批處理,流轉到了離線的集群。另外一個就是近線模式,近線模式出的數據就是現有的從日志收集系統流轉過來的統一的日志,經過Flink的處理,就是包括流的關聯以及特征的提取,再做模型的訓練,流轉到最終的訓練的集群,訓練的集群會產出P的特征,還有都是Delta的特征,最終將這些特征影響到線上的線上的特征的一個訓練的一個服務上。這是一個比較常見的,比如說比較就是通用的也是比較通用的一個場景,目前的話主要應用的方可能包含了搜索還有推薦,以及一些其他的業務。

Flink在美團的實踐與應用

未來展望

未來的話可能也是通過也是期望在這三方面進行做一些更多的事情,剛剛也提到了包括狀態的管理,第一個是狀態的統一的,比如說Sql化的統一的管理,希望有統一的配置,幫用戶去選擇一些期望的回滾點。另外一個就是大狀態的性能優化,因為比如說像做一些流量數據的雙流的關聯的時候,現在也遇到了一些性能瓶頸的問題,對于說啊基于內存型的狀態,基于內存型的數據的處理,以及基于RocksDB的狀態的處理,做過性能的比較,發現其實性能的差異還是有一些大的,所以希望說在基于RocksDBBackend的上面能夠去盡量去更多的做一些優化,從而提升作業處理的性能。第二方面就是Sql,Sql的話應該是每一個位就是當前可能各個公司都在做的一個方向,因為之前也有對Sql做一些探索,包括提供了基于Storm的一些Sql的表示,但是可能對于之前的話對于與語義的表達可能會有一些欠缺,所以希望說在基于Flink可去解決這些方面的事情,以及包括Sql的并發度的一些配置的優化,包括Sql的查詢的一些優化,都希望說在Flink未來能夠去優化更多的東西,去真正能使Sql應用到生產的環境。

另外一方面的話就是會進行新的場景的也在做新的場景的一些探索,期望是比如說包括剛剛也提到說除了流式的處理,也期望說把離線的場景下的數據進行一些合并,通過統一的Sql的API去提供給業務做更多的服務,包括流處理,還有批處理的結合。

更多資訊請訪問 Apache Flink 中文社區網站

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

长海县| 遂溪县| 东乌| 漳州市| 翼城县| 镇宁| 井陉县| 赤水市| 龙江县| 德江县| 淮南市| 昭通市| 西安市| 绥滨县| 余江县| 永顺县| 修水县| 扶绥县| 遵义市| 谢通门县| 延边| 琼海市| 灵台县| 易门县| 百色市| 东阳市| 都安| 清流县| 奉化市| 兰坪| 宝应县| 额尔古纳市| 西畴县| 多伦县| 汨罗市| 台中市| 穆棱市| 石门县| 凤山县| 苍溪县| 蕲春县|