日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

日均处理万亿数据!Flink在快手的应用实践与技术演进之路

發(fā)布時(shí)間:2024/8/23 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 日均处理万亿数据!Flink在快手的应用实践与技术演进之路 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

董亭亭,快手大數(shù)據(jù)架構(gòu)實(shí)時(shí)計(jì)算引擎團(tuán)隊(duì)負(fù)責(zé)人。目前負(fù)責(zé) Flink 引擎在快手內(nèi)的研發(fā)、應(yīng)用以及周邊子系統(tǒng)建設(shè)。2013 年畢業(yè)于大連理工大學(xué),曾就職于奇虎 360、58 集團(tuán)。主要研究領(lǐng)域包括:分布式計(jì)算、調(diào)度系統(tǒng)、分布式存儲(chǔ)等系統(tǒng)。

本次的分享包括以下三個(gè)部分:

  • 介紹 Flink 在快手的應(yīng)用場(chǎng)景以及目前規(guī)模;
  • 介紹 Flink 在落地過(guò)程的技術(shù)演進(jìn)過(guò)程;
  • 討論 Flink 在快手的未來(lái)計(jì)劃。
  • 一.Flink 在快手應(yīng)用場(chǎng)景與規(guī)模

    1. Flink 在快手應(yīng)用場(chǎng)景

    快手計(jì)算鏈路是從 DB/Binlog 以及 WebService Log 實(shí)時(shí)入到 Kafka 中,然后接入 Flink 做實(shí)時(shí)計(jì)算,其中包括實(shí)時(shí) ETL、實(shí)時(shí)分析、Interval Join 以及實(shí)時(shí)訓(xùn)練,最后的結(jié)果存到 Druid、ES 或者 HBase 里面,后面接入一些數(shù)據(jù)應(yīng)用產(chǎn)品;同時(shí)這一份 Kafka 數(shù)據(jù)實(shí)時(shí) Dump 一份到 Hadoop 集群,然后接入離線計(jì)算。

    Flink 在快手應(yīng)用的類別主要分為三大類:

    • 80% 統(tǒng)計(jì)監(jiān)控:實(shí)時(shí)統(tǒng)計(jì),包括各項(xiàng)數(shù)據(jù)的指標(biāo),監(jiān)控項(xiàng)報(bào)警,用于輔助業(yè)務(wù)進(jìn)行實(shí)時(shí)分析和監(jiān)控;
    • 15% 數(shù)據(jù)處理:對(duì)數(shù)據(jù)的清洗、拆分、Join 等邏輯處理,例如大 Topic 的數(shù)據(jù)拆分、清洗;
    • 5% 數(shù)據(jù)處理:實(shí)時(shí)業(yè)務(wù)處理,針對(duì)特定業(yè)務(wù)邏輯的實(shí)時(shí)處理,例如實(shí)時(shí)調(diào)度。

    Flink 在快手應(yīng)用的典型場(chǎng)景包括:

    • 快手是分享短視頻跟直播的平臺(tái),快手短視頻、直播的質(zhì)量監(jiān)控是通過(guò) Flink 進(jìn)行實(shí)時(shí)統(tǒng)計(jì),比如直播觀眾端、主播端的播放量、卡頓率、開播失敗率等跟直播質(zhì)量相關(guān)的多種監(jiān)控指標(biāo);
    • 用戶增長(zhǎng)分析,實(shí)時(shí)統(tǒng)計(jì)各投放渠道拉新情況,根據(jù)效果實(shí)時(shí)調(diào)整各渠道的投放量;
    • 實(shí)時(shí)數(shù)據(jù)處理,廣告展現(xiàn)流、點(diǎn)擊流實(shí)時(shí) Join,客戶端日志的拆分等;
    • 直播 CDN 調(diào)度,實(shí)時(shí)監(jiān)控各 CDN 廠商質(zhì)量,通過(guò) Flink 實(shí)時(shí)訓(xùn)練調(diào)整各個(gè)CDN廠商流量配比。

    2.Flink 集群規(guī)模

    快手目前集群規(guī)模有 1500 臺(tái)左右,作業(yè)數(shù)量大約是 500 左右,日處理?xiàng)l目數(shù)總共有 1.7 萬(wàn)億,峰值處理?xiàng)l目數(shù)大約是 3.7 千萬(wàn)。集群部署都是 On Yarn 模式,分為離線集群和實(shí)時(shí)集群兩類集群,其中離線集群混合部署,機(jī)器通過(guò)標(biāo)簽進(jìn)行物理隔離,實(shí)時(shí)集群是 Flink 專用集群,針對(duì)隔離性、穩(wěn)定性要求極高的業(yè)務(wù)部署。

    二.快手 Flink 技術(shù)演進(jìn)

    快手 Flink 技術(shù)演進(jìn)主要分為三部分:

  • 基于特定場(chǎng)景優(yōu)化,包括 Interval Join 場(chǎng)景優(yōu)化;
  • 穩(wěn)定性改進(jìn),包括數(shù)據(jù)源控速,JobManager 穩(wěn)定性,作業(yè)頻繁失敗;
  • 平臺(tái)建設(shè)。
  • 1.場(chǎng)景優(yōu)化

    1.1 Interval Join 應(yīng)用場(chǎng)景

    Interval Join 在快手的一個(gè)應(yīng)用場(chǎng)景是廣告展現(xiàn)點(diǎn)擊流實(shí)時(shí) Join 場(chǎng)景:打開快手 App 可能會(huì)收到廣告服務(wù)推薦的廣告視頻,用戶有時(shí)會(huì)點(diǎn)擊展現(xiàn)的廣告視頻。這樣在后端形成兩份數(shù)據(jù)流,一份是廣告展現(xiàn)日志,一份是客戶端點(diǎn)擊日志。這兩份數(shù)據(jù)需進(jìn)行實(shí)時(shí) Join,將 Join 結(jié)果作為樣本數(shù)據(jù)用于模型訓(xùn)練,訓(xùn)練出的模型會(huì)被推送到線上的廣告服務(wù)。該場(chǎng)景下展現(xiàn)以后 20 分鐘的點(diǎn)擊被認(rèn)為是有效點(diǎn)擊,實(shí)時(shí) Join 邏輯則是點(diǎn)擊數(shù)據(jù) Join 過(guò)去 20 分鐘展現(xiàn)。其中,展現(xiàn)流的數(shù)據(jù)量相對(duì)比較大,20 分鐘數(shù)據(jù)在 1 TB 以上。最初實(shí)時(shí) Join 過(guò)程是業(yè)務(wù)自己實(shí)現(xiàn),通過(guò) Redis 緩存廣告展現(xiàn)日志,Kafka 延遲消費(fèi)客戶端點(diǎn)擊日志實(shí)現(xiàn) Join 邏輯,該方式缺點(diǎn)是實(shí)時(shí)性不高,并且隨著業(yè)務(wù)增長(zhǎng)需要堆積更多機(jī)器,運(yùn)維成本非常高。基于 Flink 使用 Interval Join 完美契合此場(chǎng)景,并且實(shí)時(shí)性高,能夠?qū)崟r(shí)輸出 Join 后的結(jié)果數(shù)據(jù),對(duì)業(yè)務(wù)來(lái)說(shuō)維護(hù)成本非常低,只需要維護(hù)一個(gè) Flink 作業(yè)即可。

    1.2 Interval Join 場(chǎng)景優(yōu)化

    1.2.1 Interval Join 原理:

    Flink 實(shí)現(xiàn) Interval join 的原理:兩條流數(shù)據(jù)緩存在內(nèi)部 State 中,任意一數(shù)據(jù)到達(dá),獲取對(duì)面流相應(yīng)時(shí)間范圍數(shù)據(jù),執(zhí)行 joinFunction 進(jìn)行 Join。隨著時(shí)間的推進(jìn),State 中兩條流相應(yīng)時(shí)間范圍的數(shù)據(jù)會(huì)被清理。

    在前面提到的廣告應(yīng)用場(chǎng)景 Join 過(guò)去 20 分鐘數(shù)據(jù),假設(shè)兩個(gè)流的數(shù)據(jù)完全有序到達(dá),Stream A 作為展現(xiàn)流緩存過(guò)去 20 分鐘數(shù)據(jù),Stream B 作為點(diǎn)擊流每來(lái)一條數(shù)據(jù)到對(duì)面 Join 過(guò)去 20 分鐘數(shù)據(jù)即可。

    Flink 實(shí)現(xiàn) Interval Join:

    KeyedStreamA.intervalJoin(KeyedStreamB).between(Time.minutes(0),Time.minutes(20)).process(joinFunction)

    1.2.2 狀態(tài)存儲(chǔ)策略選擇

    關(guān)于狀態(tài)存儲(chǔ)策略選擇,生產(chǎn)環(huán)境狀態(tài)存儲(chǔ) Backend 有兩種方式:

  • FsStateBackend:State 存儲(chǔ)在內(nèi)存,Checkpoint 時(shí)持久化到 HDFS;
  • RocksDBStateBackend:State 存儲(chǔ)在 RocksDB 實(shí)例,可增量 Checkpoint,適合超大 State。在廣告場(chǎng)景下展現(xiàn)流 20 分鐘數(shù)據(jù)有 1 TB 以上,從節(jié)省內(nèi)存等方面綜合考慮,快手最終選擇的是 RocksDBStateBackend。
  • 在 Interval join 場(chǎng)景下,RocksDB 狀態(tài)存儲(chǔ)方式是將兩個(gè)流的數(shù)據(jù)存在兩個(gè) Column Family 里,RowKey 根據(jù) keyGroupId+joinKey+ts 方式組織。

    1.2.3 RocksDB 訪問(wèn)性能問(wèn)題

    Flink 作業(yè)上線遇到的第一個(gè)問(wèn)題是 RocksDB 訪問(wèn)性能問(wèn)題,表現(xiàn)為:

    • 作業(yè)在運(yùn)行一段時(shí)間之后出現(xiàn)反壓,吞吐下降。
    • 通過(guò) Jstack 發(fā)現(xiàn)程序邏輯頻繁處于 RocksDB get 請(qǐng)求處。
    • 通過(guò) Top 發(fā)現(xiàn)存在單線程 CPU 持續(xù)被打滿。

    進(jìn)一步對(duì)問(wèn)題分析,發(fā)現(xiàn):該場(chǎng)景下,Flink 內(nèi)部基于 RocksDB State 狀態(tài)存儲(chǔ)時(shí),獲取某個(gè) Join key 值某段范圍的數(shù)據(jù),是通過(guò)前綴掃描的方式獲取某個(gè) Join key 前綴的 entries 集合,然后再判斷哪些數(shù)據(jù)在相應(yīng)的時(shí)間范圍內(nèi)。前綴掃描的方式會(huì)導(dǎo)致掃描大量的無(wú)效數(shù)據(jù),掃描的數(shù)據(jù)大多緩存在 PageCache 中,在 Decode 數(shù)據(jù)判斷數(shù)據(jù)是否為 Delete 時(shí),消耗大量 CPU。

    以上圖場(chǎng)景為例,藍(lán)色部分為目標(biāo)數(shù)據(jù),紅色部分為上下邊界之外的數(shù)據(jù),前綴掃描時(shí)會(huì)過(guò)多掃描紅色部分無(wú)用數(shù)據(jù),在對(duì)該大量無(wú)效數(shù)據(jù)做處理時(shí),將單線程 CPU 消耗盡。

    1.2.4 針對(duì) RocksDB 訪問(wèn)性能優(yōu)化

    快手在 Interval join 該場(chǎng)景下對(duì) RocksDB 的訪問(wèn)方式做了以下優(yōu)化:

    • 在 Interval join 場(chǎng)景下,是可以精確的確定需訪問(wèn)的數(shù)據(jù)邊界范圍。所以用全 Key 范圍掃描代替前綴掃描,精確拼出查詢上下邊界 Full Key 即 keyGroupId+joinKey+ts[lower,upper]。
    • 范圍查詢 RocksDB ,可以更加精確 Seek 到上下邊界,避免無(wú)效數(shù)據(jù)掃描和校驗(yàn)。

    優(yōu)化后的效果:P99 查詢時(shí)延性能提升 10 倍,即 nextKey 獲取 RocksDB 一條數(shù)據(jù), P99 時(shí)延由 1000 毫秒到 100 毫秒以內(nèi)。 作業(yè)吞吐反壓?jiǎn)栴}進(jìn)而得到解決。

    1.2.5 RocksDB 磁盤壓力問(wèn)題

    Flink 作業(yè)上線遇到的第二個(gè)問(wèn)題是隨著業(yè)務(wù)的增長(zhǎng), RocksDB 所在磁盤壓力即將達(dá)到上限,高峰時(shí)磁盤 util 達(dá)到 90%,寫吞吐在 150 MB/s。詳細(xì)分析發(fā)現(xiàn),該問(wèn)題是由以下幾個(gè)原因疊加導(dǎo)致:

    • Flink 機(jī)器選型為計(jì)算型,大內(nèi)存、單塊 HDD 盤,在集群規(guī)模不是很大的情況下,單個(gè)機(jī)器會(huì)有 4-5 個(gè)該作業(yè) Container,同時(shí)使用一塊 HDD 盤。
    • RocksDB 后臺(tái)會(huì)頻繁進(jìn)行 Compaction 有寫放大情況,同時(shí) Checkpoint 也在寫磁盤。

    針對(duì) RocksDB 磁盤壓力,快手內(nèi)部做了以下優(yōu)化:

    • 針對(duì) RocksDB 參數(shù)進(jìn)行調(diào)優(yōu),目的是減少 Compaction IO 量。優(yōu)化后 IO 總量有一半左右的下降。
    • 為更加方便的調(diào)整 RocksDB 參數(shù),在 Flink 框架層新增 Large State RocksDB 配置套餐。同時(shí)支持 RocksDBStateBackend 自定義配置各種 RocksDB 參數(shù)。
    • 未來(lái)計(jì)劃,考慮將 State 用共享存儲(chǔ)的方式存儲(chǔ),進(jìn)一步做到減少 IO 總量,并且快速Checkpoint 和恢復(fù)。

    2.穩(wěn)定性改進(jìn)

    首先介紹下視頻質(zhì)量監(jiān)控調(diào)度應(yīng)用背景,有多個(gè) Kafka Topic 存儲(chǔ)短視頻、直播相關(guān)質(zhì)量日志,包括短視頻上傳/下載、直播觀眾端日志,主播端上報(bào)日志等。Flink Job 讀取相應(yīng) Topic 數(shù)據(jù)實(shí)時(shí)統(tǒng)計(jì)各類指標(biāo),包括播放量、卡頓率、黑屏率以及開播失敗率等。指標(biāo)數(shù)據(jù)會(huì)存到 Druid 提供后續(xù)相應(yīng)的報(bào)警監(jiān)控以及多維度的指標(biāo)分析。同時(shí)還有一條流是進(jìn)行直播 CDN 調(diào)度,也是通過(guò) Flink Job 實(shí)時(shí)訓(xùn)練、調(diào)整各 CDN 廠商的流量配比。以上 Kafka Topic 數(shù)據(jù)會(huì)同時(shí)落一份到 Hadoop 集群,用于離線補(bǔ)償數(shù)據(jù)。實(shí)時(shí)計(jì)算跟離線補(bǔ)數(shù)據(jù)的過(guò)程共用同一份 Flink 代碼,針對(duì)不同的數(shù)據(jù)源,分別讀取 Kafka 數(shù)據(jù)或 HDFS 數(shù)據(jù)。

    2.1 數(shù)據(jù)源控速

    視頻應(yīng)用場(chǎng)景下遇到的問(wèn)題是:作業(yè) DAG 比較復(fù)雜,同時(shí)從多個(gè) Topic 讀取數(shù)據(jù)。一旦作業(yè)異常,作業(yè)失敗從較早狀態(tài)恢復(fù),需要讀取部分歷史數(shù)據(jù)。此時(shí),不同 Source 并發(fā)讀取數(shù)據(jù)速度不可控,會(huì)導(dǎo)致 Window 類算子 State 堆積、作業(yè)性能變差,最終導(dǎo)致作業(yè)恢復(fù)失敗。 另外,離線補(bǔ)數(shù)據(jù),從不同 HDFS 文件讀數(shù)據(jù)同樣會(huì)遇到讀取數(shù)據(jù)不可控問(wèn)題。在此之前,實(shí)時(shí)場(chǎng)景下臨時(shí)解決辦法是重置 GroupID 丟棄歷史數(shù)據(jù),使得從最新位置開始消費(fèi)。

    針對(duì)該問(wèn)題我們希望從源頭控制多個(gè) Source 并發(fā)讀取速度,所以設(shè)計(jì)了從 Source 源控速的策略。

    Source 控速策略

    Source 控速策略是 :

    • SourceTask 共享速度狀態(tài)提供給 JobManager。
    • JobManager 引入 SourceCoordinator,該 Coordinator 擁有全局速度視角,制定相應(yīng)的策略,并將限速策略下發(fā)給 SourceTask。
    • SourceTask 根據(jù) JobManager 下發(fā)的速度調(diào)節(jié)信息執(zhí)行相應(yīng)控速邏輯。
    • 一個(gè)小細(xì)節(jié)是 DAG 圖有子圖的話, 不同子圖 Source 源之間互相不影響。

    Source 控速策略詳細(xì)細(xì)節(jié)

    SourceTask 共享狀態(tài)

    • SourceTask 定期匯報(bào)狀態(tài)給 JobManager,默認(rèn) 10 s 間隔。
    • 匯報(bào)內(nèi)容為。

    協(xié)調(diào)中心 SourceCoordinator

    • 限速閾值:最快并發(fā) Watermark - 最慢并發(fā) Watermark > ?t(默認(rèn) 5 分鐘)。只要在達(dá)到限速閾值情況下,才進(jìn)行限速策略制定。
    • 全局預(yù)測(cè):各并發(fā) targetWatermark=base+speed*time;Coordinator 先進(jìn)行全局預(yù)測(cè),預(yù)測(cè)各并發(fā)接下來(lái)時(shí)間間隔能運(yùn)行到的 Watermark 位置。
    • 全局決策:targetWatermark = 預(yù)測(cè)最慢 Watermark+?t/2;Coordinator 根據(jù)全局預(yù)測(cè)結(jié)果,取預(yù)測(cè)最慢并發(fā)的 Watermark 值再浮動(dòng)一個(gè)范圍作為下個(gè)周期全局限速?zèng)Q策的目標(biāo)值。
    • 限速信息下發(fā):。將全局決策的信息下發(fā)給所有的 Source task,限速信息包括下一個(gè)目標(biāo)的時(shí)間和目標(biāo)的 Watermark 位置。

    以上圖為例,A 時(shí)刻,4 個(gè)并發(fā)分別到達(dá)如圖所示位置,為 A+interval 的時(shí)刻做預(yù)測(cè),圖中藍(lán)色虛線為預(yù)測(cè)各并發(fā)能夠到達(dá)的位置,選擇最慢的并發(fā)的 Watermark 位置,浮動(dòng)范圍值為 Watermark + ?t/2 的時(shí)間,圖中鮮紅色虛線部分為限速的目標(biāo) Watermark,以此作為全局決策發(fā)給下游 Task。

    SourceTask 限速控制

    • SourceTask 獲取到限速信息后,進(jìn)行限速控制。
    • 以 KafkaSource 為例,KafkaFetcher 獲取數(shù)據(jù)時(shí),根據(jù)限速信息 Check 當(dāng)前進(jìn)度,確定是否需要限速等待。

    該方案中,還有一些其他考慮,例如:

    • 時(shí)間屬性:只針對(duì) EventTime 情況下進(jìn)行限速執(zhí)行。
    • 開關(guān)控制:支持作業(yè)開關(guān)控制是否開啟 Source 限速策略。
    • DAG 子圖 Source 源之間互相不影響。
    • 是否會(huì)影響 CheckPoint Barrier 下發(fā)。
    • 數(shù)據(jù)源發(fā)送速度不恒定,Watermark 突變情況。

    Source 控速結(jié)果

    拿線上作業(yè),使用 Kafka 從最早位置(2 days ago)開始消費(fèi)。如上圖,不限速情況下State 持續(xù)增大,最終作業(yè)掛掉。使用限速策略后,最開始 State 有緩慢上升,但是 State 大小可控,最終能平穩(wěn)追上最新數(shù)據(jù),并 State 持續(xù)在 40 G 左右。

    2.2 JobManager 穩(wěn)定性

    關(guān)于 JobManager 穩(wěn)定性,遇到了兩類 Case,表現(xiàn)均為:JobManager 在大并發(fā)作業(yè)場(chǎng)景 WebUI 卡頓明顯,作業(yè)調(diào)度會(huì)超時(shí)。進(jìn)一步分析了兩種場(chǎng)景下的問(wèn)題原因。

    場(chǎng)景一,JobManager 內(nèi)存壓力大問(wèn)題。JobManager 需要控制刪除已完成的 Checkpoint 在 HDFS 上的路徑。在 NameNode 壓力大時(shí),Completed CheckPoint 路徑刪除慢,導(dǎo)致CheckPoint Path 在內(nèi)存中堆積。 原來(lái)刪除某一次 Checkpoint 路徑策略為:每刪除目錄下一個(gè)文件,需 List 該目錄判斷是否為空,如為空將目錄刪除。在大的 Checkpoint 路徑下, List 目錄操作為代價(jià)較大的操作。針對(duì)該邏輯進(jìn)行優(yōu)化,刪除文件時(shí)直接調(diào)用 HDFS delete(path,false) 操作,語(yǔ)義保持一致,并且開銷小。

    場(chǎng)景二,該 Case 發(fā)生在 Yarn Cgroup 功能上線之后,JobManager G1 GC 過(guò)程變慢導(dǎo)致阻塞應(yīng)用線程。AppMaster 申請(qǐng) CPU 個(gè)數(shù)硬編碼為1,在上線 Cgroup 之后可用的 CPU 資源受到限制。解決該問(wèn)題的方法為,支持 AppMaster 申請(qǐng) CPU 個(gè)數(shù)參數(shù)化配置。

    2.3 作業(yè)頻繁失敗

    機(jī)器故障造成作業(yè)頻繁失敗,具體的場(chǎng)景也有兩種:

    場(chǎng)景一:磁盤問(wèn)題導(dǎo)致作業(yè)持續(xù)調(diào)度失敗。磁盤出問(wèn)題導(dǎo)致一些 Buffer 文件找不到。又因?yàn)?TaskManager 不感知磁盤健康狀況,會(huì)頻繁調(diào)度作業(yè)到該 TaskManager,作業(yè)頻繁失敗。

    場(chǎng)景二:某臺(tái)機(jī)器有問(wèn)題導(dǎo)致 TaskManager 在某臺(tái)機(jī)器上頻繁出 Core,陸續(xù)分配新的 TaskManager 到這臺(tái)機(jī)器上,導(dǎo)致作業(yè)頻繁失敗。

    針對(duì)機(jī)器故障問(wèn)題解決方法:

    • 針對(duì)磁盤問(wèn)題,TaskManager 增加 DiskChecker 磁盤健康檢查,發(fā)現(xiàn)磁盤有問(wèn)題 TaskManager 自動(dòng)退出;
    • 針對(duì)有些機(jī)器頻繁出現(xiàn) TaskManager 出現(xiàn)問(wèn)題,根據(jù)一定的策略將有問(wèn)題機(jī)器加到黑名單中,然后通過(guò)軟黑名單機(jī)制,告知 Yarn 盡量不要調(diào)度 Container 到該機(jī)器。

    3.平臺(tái)化建設(shè)

    3.1 平臺(tái)建設(shè):

    快手的平臺(tái)化建設(shè)主要體現(xiàn)在青藤作業(yè)托管平臺(tái)。通過(guò)該平臺(tái)可進(jìn)行作業(yè)操作、作業(yè)管理以及作業(yè)詳情查看等。作業(yè)操作包括提交、停止作業(yè)。作業(yè)管理包括管理作業(yè)存活、性能報(bào)警,自動(dòng)拉起配置等;詳情查看,包括查看作業(yè)的各類 Metric 等。

    上圖為青藤作業(yè)托管平臺(tái)的一些操作界面。

    3.2 問(wèn)題定位流程優(yōu)化:

    我們也經(jīng)常需要給業(yè)務(wù)分析作業(yè)性能問(wèn)題,幫助業(yè)務(wù) debug 一些問(wèn)題,過(guò)程相對(duì)繁瑣。所以該部分我們也做了很多工作,盡量提供更多的信息給業(yè)務(wù),方便業(yè)務(wù)自主分析定位問(wèn)題。首先,我們將所有 Metric 入 Druid,通過(guò) Superset 可從各個(gè)維度分析作業(yè)各項(xiàng)指標(biāo)。第二,針對(duì) Flink 的 WebUI 做了一些完善,支持 Web 實(shí)時(shí)打印 jstack,Web DAG 為各 Vertex 增加序號(hào),Subtask 信息中增加各并發(fā) SubtaskId。第三,豐富異常信息提示,針對(duì)機(jī)器宕機(jī)等特定場(chǎng)景信息進(jìn)行明確提示。第四,新增各種 Metric。

    三.未來(lái)計(jì)劃

    快手的未來(lái)規(guī)劃主要分為兩個(gè)部分:

    第一,目前在建設(shè)的 Flink SQL 相關(guān)工作。因?yàn)?SQL 能夠減少用戶開發(fā)的成本,包括我們現(xiàn)在也在對(duì)接實(shí)時(shí)數(shù)倉(cāng)的需求,所以 Flink SQL 是我們未來(lái)計(jì)劃的重要部分之一。
    第二,我們希望進(jìn)行一些資源上的優(yōu)化。目前業(yè)務(wù)在提作業(yè)時(shí)存在需求資源及并發(fā)預(yù)估不準(zhǔn)確的情況,可能會(huì)過(guò)多申請(qǐng)資源導(dǎo)致資源浪費(fèi)。另外如何提升整體集群資源的利用率問(wèn)題,也是接下來(lái)需要探索的問(wèn)題。


    原文鏈接
    本文為云棲社區(qū)原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。

    總結(jié)

    以上是生活随笔為你收集整理的日均处理万亿数据!Flink在快手的应用实践与技术演进之路的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。