偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

6個(gè)人如何維護(hù)上千規(guī)模的大數(shù)據(jù)集群?

大數(shù)據(jù)
本文主要介紹餓了么大數(shù)據(jù)團(tuán)隊(duì)如何通過(guò)對(duì)計(jì)算引擎入口的統(tǒng)一,降低用戶接入門檻;如何讓用戶自助分析任務(wù)異常及失敗原因,以及如何從集群產(chǎn)生的任務(wù)數(shù)據(jù)本身監(jiān)控集群計(jì)算/存儲(chǔ)資源消耗,監(jiān)控集群狀況,監(jiān)控異常任務(wù)等。

 本文主要介紹餓了么大數(shù)據(jù)團(tuán)隊(duì)如何通過(guò)對(duì)計(jì)算引擎入口的統(tǒng)一,降低用戶接入門檻;如何讓用戶自助分析任務(wù)異常及失敗原因,以及如何從集群產(chǎn)生的任務(wù)數(shù)據(jù)本身監(jiān)控集群計(jì)算/存儲(chǔ)資源消耗,監(jiān)控集群狀況,監(jiān)控異常任務(wù)等。

餓了么 BDI-大數(shù)據(jù)平臺(tái)研發(fā)團(tuán)隊(duì)目前共有 20 人左右,主要負(fù)責(zé)離線&實(shí)時(shí) Infra 和平臺(tái)工具開發(fā)。

其中 6 人的離線團(tuán)隊(duì)需要維護(hù)大數(shù)據(jù)集群規(guī)模如下:

  • Hadoop 集群規(guī)模 1300+
  • HDFS 存量數(shù)據(jù) 40+PB,Read 3.5 PB+/天,Write 500TB+/天
  • 14W MR Job/天,10W Spark Job/天,25W Presto/天

此外還需要維護(hù) Hadoop、Spark、Hive、Presto 等餓了么內(nèi)部版本組件,解決公司 400+ 大數(shù)據(jù)集群用戶每天面臨的各種問(wèn)題。

引擎入口統(tǒng)一

目前在餓了么對(duì)外提供的查詢引擎主要有 Presto、Hive 和 Spark,其中 Spark 又有 Spark Thrift Server 和 Spark SQL 兩種模式。

并且 Kylin 也在穩(wěn)步試用中,Druid 也正在調(diào)研中。各種計(jì)算引擎都有自身的優(yōu)缺點(diǎn),適用的計(jì)算場(chǎng)景各不相同。

從用戶角度來(lái)說(shuō),普通用戶對(duì)此沒有較強(qiáng)的辨識(shí)能力,學(xué)習(xí)成本會(huì)比較高。

并且當(dāng)用戶可以自主選擇引擎執(zhí)行任務(wù)時(shí),會(huì)優(yōu)先選擇所謂的最快引擎,而這勢(shì)必會(huì)造成引擎阻塞,或者將完全不適合的任務(wù)提交到某引擎,從而降低任務(wù)成功率。

從管理角度來(lái)說(shuō),大數(shù)據(jù)集群的入口太多,將難以實(shí)現(xiàn)統(tǒng)一管理,難以實(shí)現(xiàn)負(fù)載均衡、權(quán)限控制,難以掌控集群整體對(duì)外服務(wù)能力。

并且當(dāng)有新的計(jì)算需求需要接入,我們還需要為其部署對(duì)應(yīng)的客戶端環(huán)境。

用戶使用多種計(jì)算引擎

功能模塊

針對(duì)這種情況,餓了么大數(shù)據(jù)團(tuán)隊(duì)開發(fā)了 Dispatcher,該組件的主要功能如下圖所示:

Dispatcher 功能模塊

用戶所有任務(wù)全部通過(guò) Dispatcher 提交,在 Dispatcher 中我們可以做到統(tǒng)一的鑒權(quán),統(tǒng)一的任務(wù)執(zhí)行情況跟蹤。

還可以做到執(zhí)行引擎的自動(dòng)路由,各執(zhí)行引擎負(fù)載控制,以及通過(guò)引擎降級(jí)提高任務(wù)運(yùn)行成功率。

邏輯架構(gòu)

Dispatcher 的邏輯架構(gòu)如下圖所示:

Dispatcher 系統(tǒng)邏輯架構(gòu)

目前用戶可以通過(guò) JDBC 模式調(diào)用 Dispatcher 服務(wù),或者直接以 Driver 模式運(yùn)行 Dispatcher。

Dispatcher 接收到查詢請(qǐng)求后,將會(huì)統(tǒng)一進(jìn)行鑒權(quán)、引擎路由等操作,將查詢提交到對(duì)應(yīng)引擎。

另外,Dispatcher 還有 SQL 轉(zhuǎn)換模塊,當(dāng)發(fā)生從 Presto 引擎降級(jí)到 Spark/Hive 引擎時(shí),將會(huì)通過(guò)該模塊自動(dòng)將 Presto SQL 轉(zhuǎn)換成 HiveQL。

通過(guò) Dispatcher 對(duì)查詢?nèi)肟诘慕y(tǒng)一,帶來(lái)的好處如下:

  • 用戶接入門檻低,無(wú)需再去學(xué)習(xí)各引擎使用方法和優(yōu)缺點(diǎn),無(wú)需手動(dòng)選擇執(zhí)行引擎。
  • 部署成本低,客戶端可通過(guò) JDBC 方式快速接入。
  • 統(tǒng)一的鑒權(quán)和監(jiān)控。
  • 降級(jí)模塊提高任務(wù)成功率。
  • 各引擎負(fù)載均衡。
  • 引擎可擴(kuò)展。

引擎可擴(kuò)展主要是指當(dāng)后續(xù)接入 Kylin、Druid 或者其他更多查詢引擎時(shí),可以做到用戶無(wú)感知。

由于收集到了提交到集群的所有查詢,針對(duì)每一個(gè)已有查詢計(jì)劃,我們可以獲得熱度數(shù)據(jù),知道在全部查詢中哪些表被使用次數(shù)最多,哪些表經(jīng)常被關(guān)聯(lián)查詢,哪些字段經(jīng)常被聚合查詢等。

當(dāng)后續(xù)接入 Kylin 時(shí),可以通過(guò)這些數(shù)據(jù)快速建立或優(yōu)化 Cube。

SQL 畫像

在 Dispatcher 中最核心的是 SQL 畫像模塊,基本流程如下圖:

SQL 路由模塊

查詢提交后,通過(guò)連接 HiveServer 對(duì)查詢計(jì)劃進(jìn)行解析,可以獲取當(dāng)前查詢的所有元數(shù)據(jù)信息,比如:

  • 讀入數(shù)據(jù)量
  • 讀入表/分區(qū)數(shù)
  • 各類 Join 次數(shù)
  • 關(guān)聯(lián)字段多少
  • 聚合復(fù)雜度
  • 過(guò)濾條件
  • ……

上述元數(shù)據(jù)信息基本上可以對(duì)每一個(gè)查詢進(jìn)行精準(zhǔn)的描述,每一個(gè)查詢可以通過(guò)這些維度的統(tǒng)計(jì)信息調(diào)度到不同引擎中。

Hive 對(duì) SQL 進(jìn)行解析并進(jìn)行邏輯執(zhí)行計(jì)劃優(yōu)化后,將會(huì)得到優(yōu)化后的 Operator Tree,通過(guò) explain 命令可以查看。

SQL 畫像數(shù)據(jù)可以從這個(gè)結(jié)果收集各種不同類型的 Operator 操作,如下圖所示:

SQL 解析示例

從直觀的理解上我們知道,讀入數(shù)據(jù)量對(duì)于引擎的選擇是很重要的。比如當(dāng)讀入少量數(shù)據(jù)時(shí),Presto 執(zhí)行性能***,讀入大量數(shù)據(jù)時(shí) Hive 最穩(wěn)定,而當(dāng)讀入中等數(shù)據(jù)量時(shí),可以由 Spark 來(lái)執(zhí)行。

各類計(jì)算引擎數(shù)據(jù)量-執(zhí)行時(shí)間分布

在初始階段,還可以通過(guò)讀入數(shù)據(jù)量,結(jié)合 Join 復(fù)雜度,聚合復(fù)雜度等因素在各種計(jì)算引擎上進(jìn)行測(cè)試,采用基于規(guī)則的辦法進(jìn)行路由。

執(zhí)行過(guò)程中記錄好每一次查詢的 SQL 畫像數(shù)據(jù),執(zhí)行引擎,降級(jí)鏈路等數(shù)據(jù)。

基于這些畫像數(shù)據(jù),后續(xù)可以采用比如決策樹,Logistic 回歸,SVM 等分類算法實(shí)現(xiàn)引擎的智能路由,目前餓了么大數(shù)據(jù)團(tuán)隊(duì)已經(jīng)開始了這方面的嘗試。

在餓了么的應(yīng)用中,由 Dispatcher 統(tǒng)一調(diào)度的 Ad Hoc 查詢,由于增加了預(yù)檢查環(huán)節(jié),以及失敗降級(jí)環(huán)節(jié),每天總體成功率為 99.95% 以上,整體 PT90 值為 300 秒左右。

目前 Presto 承擔(dān)了 Ad Hoc 查詢的 50% 流量,SparkServer 模式承擔(dān)了 40% 流量。

充分利用集群本身數(shù)據(jù)

餓了么大數(shù)據(jù)集群每天運(yùn)行的 Spark&MR 任務(wù) 25W+,這些數(shù)據(jù)詳細(xì)記錄了每一個(gè) Mapper/Reducer 或者 Spark 的 Task 的運(yùn)行情況,如果能夠充分利用,將會(huì)產(chǎn)生巨大的價(jià)值。即充分利用集群本身數(shù)據(jù),數(shù)據(jù)驅(qū)動(dòng)集群建設(shè)。

這些數(shù)據(jù)不僅可以有助于集群管理人員監(jiān)控集群本身的計(jì)算資源、存儲(chǔ)資源消耗,任務(wù)性能分析,主機(jī)運(yùn)行狀態(tài)。還可以幫助用戶自助分析任務(wù)運(yùn)行失敗原因,任務(wù)運(yùn)行性能分析等。

餓了么大數(shù)據(jù)團(tuán)隊(duì)開發(fā)的 Grace 項(xiàng)目就是在這方面的一個(gè)示例。

Grace 使用場(chǎng)景

你對(duì)集群任務(wù)運(yùn)行狀況詳細(xì)數(shù)據(jù)沒有明確認(rèn)識(shí)的話,很容易當(dāng)出現(xiàn)問(wèn)題時(shí)陷入困境,從監(jiān)控看到集群異常后將無(wú)法繼續(xù)進(jìn)一步快速定位問(wèn)題。

當(dāng)經(jīng)常有用戶找你說(shuō),我的任務(wù)為什么跑失敗了?我的任務(wù)為什么跑的這么慢?我的任務(wù)能調(diào)一下優(yōu)先級(jí)么?不要跟我說(shuō)看日志,我看不懂。我想大家內(nèi)心都是崩潰的。

當(dāng)監(jiān)控發(fā)出 NameNode 異常抖動(dòng),網(wǎng)絡(luò)飚高,block 創(chuàng)建增加,block 創(chuàng)建延時(shí)增大等告警時(shí),應(yīng)該如何快速定位集群運(yùn)行的異常任務(wù)?

當(dāng)監(jiān)控發(fā)出集群中 Pending 的任務(wù)太多時(shí),用戶反饋任務(wù)大面積延遲時(shí),如何快速找到問(wèn)題根本原因?

當(dāng)用戶申請(qǐng)計(jì)算資源時(shí),到底應(yīng)該給他們分配多少資源?當(dāng)用戶申請(qǐng)?zhí)岣呷蝿?wù)優(yōu)先級(jí)時(shí)如何用數(shù)據(jù)說(shuō)話,明確優(yōu)先級(jí)到底應(yīng)該調(diào)到多少?當(dāng)用戶只管上線不管下線任務(wù)時(shí),我們?nèi)绾味ㄎ荒男┤蝿?wù)是不再需要的?

還有,如何通過(guò)實(shí)時(shí)展示各 BU 計(jì)算資源消耗,指定 BU 中各用戶計(jì)算資源消耗,占 BU 資源比例。

以及如何從歷史數(shù)據(jù)中分析各 BU 任務(wù)數(shù),資源使用比例,BU 內(nèi)部各用戶的資源消耗,各任務(wù)的資源消耗等。

以下示例展示一些 Grace 產(chǎn)出數(shù)據(jù)圖表,有關(guān) BU、用戶、任務(wù)級(jí)別的數(shù)據(jù)不方便展示。

監(jiān)控隊(duì)列

從下圖可以方便的看到各隊(duì)列***最小資源,當(dāng)前已用資源,當(dāng)前運(yùn)行任務(wù)數(shù),Pending 任務(wù)數(shù),以及資源使用比例等,還可以看到這些數(shù)據(jù)的歷史趨勢(shì)。

各隊(duì)列任務(wù)情況

隊(duì)列資源使用趨勢(shì)

任務(wù)監(jiān)控

可以查看指定隊(duì)列中運(yùn)行中任務(wù)的任務(wù)類型,開始時(shí)間,運(yùn)行時(shí)長(zhǎng),消耗當(dāng)前隊(duì)列資源比例,以及消耗當(dāng)前 BU 資源比例等。

可快速定位計(jì)算資源消耗多并且運(yùn)行時(shí)間長(zhǎng)的任務(wù),快速找到隊(duì)列阻塞原因。

指定隊(duì)列任務(wù)情況

監(jiān)控主機(jī)失敗率

可以監(jiān)控集群所有主機(jī)上的 Task 執(zhí)行失敗率。已有監(jiān)控體系會(huì)對(duì)主機(jī)的 CPU,磁盤,內(nèi)存,網(wǎng)絡(luò)等硬件狀況進(jìn)行監(jiān)控。

這些硬件故障最直觀的表現(xiàn)就是分配在這些有問(wèn)題的主機(jī)上的任務(wù)執(zhí)行緩慢或者執(zhí)行失敗。

運(yùn)行中的任務(wù)是最靈敏的反應(yīng),一旦檢測(cè)到某主機(jī)失敗率過(guò)高,可觸發(fā)快速自動(dòng)下線保障業(yè)務(wù)正常執(zhí)行。后續(xù)可以結(jié)合硬件監(jiān)控定位主機(jī)異常原因。

主機(jī)失敗率監(jiān)控

任務(wù)性能分析

用戶可自助進(jìn)行任務(wù)性能分析,如下圖:

任務(wù)性能分析

并且可以根據(jù)異常項(xiàng)按照以下建議自助調(diào)整,如下圖:

任務(wù)自助優(yōu)化方案

任務(wù)失敗原因分析

對(duì)于失敗的任務(wù),用戶也可以按照以下方法快速?gòu)恼{(diào)度系統(tǒng)查看失敗原因,以及對(duì)應(yīng)的解決辦法,餓了么大數(shù)據(jù)團(tuán)隊(duì)會(huì)定期收集各種典型報(bào)錯(cuò)信息,更新維護(hù)自助分析知識(shí)庫(kù)。

失敗原因自助分析

除此之外,我們還可以實(shí)時(shí)監(jiān)控每個(gè)任務(wù)的計(jì)算資源消耗 GB Hours,總的讀入寫出數(shù)據(jù)量,Shuffle 數(shù)據(jù)量等,以及運(yùn)行中任務(wù)的 HDFS 讀寫數(shù)據(jù)量,HDFS 操作數(shù)等。

當(dāng)出現(xiàn)集群計(jì)算資源不足時(shí),可快速定位消耗計(jì)算資源多的任務(wù)。當(dāng)監(jiān)控出現(xiàn) HDFS 集群抖動(dòng),讀寫超時(shí)等異常狀況時(shí),也可通過(guò)這些數(shù)據(jù)快速定位到異常任務(wù)。

基于這些數(shù)據(jù)還可以根據(jù)各隊(duì)列任務(wù)量,任務(wù)運(yùn)行資源消耗時(shí)間段分布,合理優(yōu)化各隊(duì)列資源分配比例。

根據(jù)這些任務(wù)運(yùn)行狀況數(shù)據(jù)建立任務(wù)畫像,監(jiān)控任務(wù)資源消耗趨勢(shì),定位任務(wù)是否異常。再結(jié)合任務(wù)產(chǎn)出數(shù)據(jù)的訪問(wèn)熱度,還可以反饋給調(diào)度系統(tǒng)動(dòng)態(tài)調(diào)整任務(wù)優(yōu)先級(jí)等。

Grace 架構(gòu)

上述示例中使用到的數(shù)據(jù)都是通過(guò) Grace 收集的。Grace 是餓了么大數(shù)據(jù)團(tuán)隊(duì)開發(fā)的應(yīng)用,主要用于監(jiān)控分析線上 MR/Spark 任務(wù)運(yùn)行數(shù)據(jù),監(jiān)控運(yùn)行中隊(duì)列及任務(wù)明細(xì)及匯總數(shù)據(jù)。

邏輯架構(gòu)如下圖:

Grace 邏輯架構(gòu)

Grace 是通過(guò) Spark Streaming 實(shí)現(xiàn)的,通過(guò)消費(fèi) Kafka 中存儲(chǔ)的已完成 MR 任務(wù)的 jhist 文件或 Spark 任務(wù)的 eventlog 路徑,從 HDFS 對(duì)應(yīng)位置獲取任務(wù)運(yùn)行歷史數(shù)據(jù),解析后得到 MR/Spark 任務(wù)的明細(xì)數(shù)據(jù)。

再根據(jù)這些數(shù)據(jù)進(jìn)行一定的聚合分析,得到任務(wù)級(jí)別,Job 級(jí)別,Stage 級(jí)別的匯總信息。

***通過(guò)定制化的 Dr-Elephant 系統(tǒng)對(duì)任務(wù)明細(xì)數(shù)據(jù)通過(guò)啟發(fā)式算法進(jìn)行分析,從而給用戶一些直觀化的優(yōu)化提示。

對(duì)于 Dr-Elephant,我們也做了定制化的變動(dòng),比如將其作為 Grace 體系的一個(gè)組件打包依賴。

從單機(jī)部署服務(wù)的模式變成了分布式實(shí)時(shí)解析模式。將其數(shù)據(jù)源切換為 Grace 解析到的任務(wù)明細(xì)數(shù)據(jù)。

增加每個(gè)任務(wù)的 ActionId 跟蹤鏈路信息,優(yōu)化 Spark 任務(wù)解析邏輯,增加新的啟發(fā)式算法和新的監(jiān)控指標(biāo)等。

總結(jié)

隨著大數(shù)據(jù)生態(tài)體系越來(lái)越完善,越來(lái)越多背景不同的用戶都將加入該生態(tài)圈,我們?nèi)绾谓档陀脩舻倪M(jìn)入門檻,方便用戶快速便捷地使用大數(shù)據(jù)資源,也是需要考慮的問(wèn)題。

大數(shù)據(jù)集群中運(yùn)行的絕大部分任務(wù)都是業(yè)務(wù)相關(guān),但是隨著集群規(guī)模越來(lái)越大,任務(wù)規(guī)模越來(lái)越大,集群本身產(chǎn)生的數(shù)據(jù)也是不容忽視的。

這部分?jǐn)?shù)據(jù)才是真正反映集群使用詳細(xì)情況的,我們需要考慮如何收集使用這部分?jǐn)?shù)據(jù),從數(shù)據(jù)角度來(lái)衡量、觀察我們的集群和任務(wù)。

僅僅關(guān)注于集群整體部署、性能、穩(wěn)定等方面是不夠的,如何提高用戶體驗(yàn),充分挖掘集群本身數(shù)據(jù),用數(shù)據(jù)促進(jìn)大數(shù)據(jù)集群的建設(shè),是本次分享的主題。

作者:陳凱明

簡(jiǎn)介:具有多年從事大數(shù)據(jù)基礎(chǔ)架構(gòu)工作經(jīng)驗(yàn)。目前擔(dān)任餓了么數(shù)據(jù)平臺(tái)研發(fā)團(tuán)隊(duì)資深數(shù)據(jù)工程師,主要負(fù)責(zé)餓了么離線平臺(tái)及底層工具開發(fā)。

責(zé)任編輯:武曉燕 來(lái)源: DBAplus社群
相關(guān)推薦

2015-04-15 10:53:40

大數(shù)據(jù)京東千人千面

2021-10-11 14:52:38

大數(shù)據(jù)網(wǎng)絡(luò)技術(shù)

2020-11-13 10:25:41

人臉數(shù)據(jù)

2017-10-16 09:19:41

CTO創(chuàng)業(yè)公司大數(shù)據(jù)

2018-06-08 14:25:18

大數(shù)據(jù)生活可視化

2018-04-04 13:44:59

數(shù)據(jù)庫(kù)MySQL延遲

2015-09-24 14:12:34

醫(yī)療大數(shù)據(jù)數(shù)據(jù)化

2014-07-23 10:03:20

2020-06-15 11:00:52

大數(shù)據(jù)大數(shù)據(jù)技術(shù)數(shù)據(jù)

2025-01-24 07:47:32

2014-05-14 09:45:16

SAP

2019-06-10 16:17:37

2020-07-27 08:23:15

HadoopPrometheusZabbix

2015-06-02 11:29:50

信息安全數(shù)據(jù)安全

2023-07-28 07:45:44

2021-06-09 14:37:10

大數(shù)據(jù)互聯(lián)網(wǎng)大數(shù)據(jù)應(yīng)用

2016-11-10 09:26:18

2024-04-02 09:48:32

2013-04-18 10:00:40

大數(shù)據(jù)大數(shù)據(jù)全球技術(shù)峰會(huì)

2013-11-20 10:15:03

大數(shù)據(jù)營(yíng)銷 互聯(lián)網(wǎng)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)