999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種Spark輕量級客戶端實現方法研究

2023-09-15 01:33:06盧居輝朱海勇
河南科技 2023年15期
關鍵詞:作業用戶服務

張 鳳 盧居輝 朱海勇 吳 文

(廈門市美亞柏科信息股份有限公司乾坤大數據操作系統研究院,福建 廈門 361001)

0 引言

2022年3月5日,李克強總理在第十三屆全國人民代表大會第五次會議上作《政府工作報告》[1],該報告明確提出“建設數字信息基礎設施,逐步構建全國一體化大數據中心體系”。2022年4月10日,《中共中央國務院關于加快建設全國統一大市場的意見》發布,明確提出要加快培育統一的技術和數據市場[2]。2022年12月19日,《中共中央國務院關于構建數據基礎制度更好發揮數據要素作用的意見》(以下簡稱“數據二十條”)發布,從數據產權、流通交易、收益分配、安全治理等方面出發,為構建數據基礎制度提出20條政策舉措。“數據二十條”的出臺,將充分發揮中國海量數據規模和豐富應用場景的優勢,激活數據要素潛能,做強做優做大數字經濟,增強經濟發展新動能[3]。因此,數據資源大一統將會成為接下來大數據領域研究的熱點和發展的趨勢[4]。

大數據領域的研究往往涉及海量數據,而處理海量數據的技術也是研究的熱點問題。其中,YARN 作為一種統一資源管理機制,因其可運行多套計算框架而備受好評[5]。Spark 作為一種常用的大數據計算框架[6-7],也是一個通用的并行計算框架[8],Spark on YARN 運行模式是基于YARN 彈性資源管理機制,確保用戶在YARN 集群中運行的服務和資源能被完全隔離,從而實現對同時運行在集群中的多個任務進行管理。

在YARN 集群環境中,每個應用實例都有一個Application Master 進程,負責向集群資源管理器請求Container 資源。Spark 運行架構主要由Driver、Executor組成[9],Driver負責作業調度,Executor負責執行具體的計算任務。根據Spark Driver 和Application Master 在運行時所處的相對位置,Spark on YARN 可分為兩種模式,即YARN-Client 模式和YARN-Cluster模式[10]。

在YARN-Client 模式中,Spark Driver 單獨運行在集群邊緣節點服務器上,通過部署在YARN集群上的Application Master 進行通信,在申請Container 資源后,啟動Spark Executor 來執行具體任務,二者分屬集群內外兩個不同的進程。在運行過程中,前端用戶可與Spark Driver 保持在線連接,進行更多交互操作,適合處理交互類型的Spark作業。

在YARN-Cluster 模式中,Spark Driver 運行于YARN 集群的Application Master 中,共享同一個Container進程。在任務提交后,Spark Driver斷開與前端用戶的連接,其生命周期由YARN 控制,不適合運行交互類型的作業。

為滿足與前端用戶的頻繁交互需求,實現對Spark on YARN運行模式下的Spark作業生命周期的自主控制,在集群邊緣服務器上部署YARN-Client模式的Web服務,通過Web API來接收、處理前端用戶發送的Spark作業請求[11]。由于Spark Driver 被集成在Web 服務中,相當于該服務內部提供一個Spark Session 入口,通過該入口將Spark 作業提交到YARN 集群上運行,其作業運行結果也將被同步返回給前端用戶,實現與前端用戶的在線交互需求。但該方案也有不足之處,在YARN-Client 模式下,Spark Driver 運行在集群邊緣節點服務器上,由于Spark 任務要處理的數據量較大且耗時較長,在Spark Executor 數量較多的情況下,Spark Driver 與Spark Executor(s)的交互過程會占用大量的邊緣節點服務器系統資源,造成性能瓶頸,影響邊緣節點服務器上其他業務的正常執行。

在YARN-Cluster 模式下,為避免由前端用戶直接訪問集群內部節點而造成的安全隱患,通常要在邊緣節點服務器上部署一個Web Server,通過保持與集群上Spark Driver 的長連接會話關系,可實現前端用戶與Spark 的在線交互,但該方案仍無法避免集群間的網絡連接消耗。

為解決上述重量級客戶端方案存在的弊端,可以通過輕量級開源應用框架Spring Boot 來構建Web 應用服務[12],在內部集成Spark Driver,以YARN-Cluster 模式將多個無差別的Web 服務部署到YARN 集群中,利用Restful API 來完成Spark 在線交互式作業的提交請求[13]。這些服務進程將長期駐留在集群內部,可避免因頻繁申請Container資源而造成的時間消耗。

同時,在邊緣節點服務器上部署高性能負載均衡和動態代理組件HAProxy[14]。將Spring Boot服務所在的IP 地址和Restful API 端口通過HAProxy 動態配置接口(HAProxy Data Plane API)實時注冊到HAProxy 后端代理配置中,利用HAProxy 的自動重載機制來實現動態加載后端配置,使前端用戶能在無感知情況下,通過HAProxy 的統一對外接口將Spark 作業無差別地提交到分散運行在集群上的Spring Boot 服務中運行,可避免外部用戶直接訪問集群內部節點,在實現安全隔離的同時,也實現多個Spring Boot服務間的并行調度,且互不干擾。

通過上述方法,邊緣節點服務器與集群節點之間無須保持長連接會話,即可動態實現Spark on Yarn 運行模式下Spark 作業的異步提交及整個Spark作業生命周期的自主控制。

1 系統框架

本研究通過提供一種輕量級客戶端提交Spark作業的實現方法來克服重量級客戶端方案帶來的弊端,系統具體實現框架如圖1所示。

圖1 系統實現框架

輕量級Web應用服務(Spring Boot)內部集成執行引擎Spark Driver,通過Spark on YARN 的Cluster模式在YARN 集群內部運行,由Restful API 來接收處理請求,并在Spring Boot 服務內部直接通過Spark Driver 來調度執行器Spark Executor(s),從而完成Spark作業的執行和其他相關請求操作。該服務長期駐留在YARN 集群內,以在線交互的方式及時處理不同類型的Spark 作業,可避免頻繁啟動Spark容器造成的時間消耗。

HAProxy(可提供高性能負載均衡、基于TCP和HTTP 應用的動態代理)部署在YARN 集群的邊緣服務器節點上,代理前端用戶發送Spark 作業相關操作請求,根據負載均衡策略將其發送到分散在后端YARN 集群上的Spring Boot 服務上進行相應處理。前端用戶只需通過HAProxy 統一訪問接口就可無差別使用后端YARN 集群上的Spring Boot 服務,從而實現前端用戶與YARN集群的安全隔離。

HAProxy Data Plane API 是一種能實現HAP-roxy 配置動態更新的Restful API。在啟動Spring Boot 成功后,將其監聽的IP 地址和端口通過HAP-roxy Data Plane API 動態注冊到HAProxy 代理配置中,HAProxy Data Plane API 會根據配置的變更情況來自動重載HAProxy 服務,使前端用戶能在無感知的情況下訪問所有后端服務。

服務啟動器(Launcher)用于監聽并保證在YARN 集群中始終運行一定數量的Spring Boot 服務。Launcher 會將失效的Spring Boot 服務接口從HAProxy Data Plane API 中動態刪除。當YARN 集群上Spring Boot 服務數量不足時,Launcher 會啟動新的Spring Boot服務,直至滿足數量要求。

Spring Boot 服務在接收到Spark 作業提交請求后,會直接將其寫入輕量級的消息隊列服務中,排隊等待處理,實現前端用戶請求與后端執行引擎的解耦與異步化。

NoSQL 數據庫用于保存和更新Spark 作業的執行進度,并在作業運行完畢后,會保存一定數量的采樣數據或結果數據,用于向前端用戶展示。

2 動態代理服務

使用動態代理服務的好處是其能屏蔽前端用戶與后端YARN 集群間的直接交互訪問,保證內網安全,同時使Spark Driver 分散運行于YARN 集群上,減少集群邊緣節點的運行壓力,從而實現輕客戶端服務的目的,具體處理流程如圖2所示。

圖2 動態代理服務處理流程

動態代理服務管理執行步驟如下。

(1)在YARN 邊緣節點服務器上啟動Launcher服務,啟動并保持一定數量的Spring Boot 服務。Launcher 服務會定期通過HAProxy Data Plane API來獲取HAProxy 當前已配置的Spring Boot 后端服務接口。在Launcher 與Spring Boot 進行服務通信時,檢查所有后端服務的有效性,將當前有效的Spring Boot服務數量N與實際需要啟動的服務數量M進行比較。若N

(2)啟動成功的Spring Boot 服務會將其所在IP和監聽端口通過HAProxy Data Plane API 注冊到HAProxy后端配置中。

(3)HAProxy Data Plane API 會根據最新配置動態重載HAProxy,并對外提供統一代理服務,將Spark 相關請求轉發到分散在YARN 集群中的Spring Boot服務上進行處理。

3 提交作業

通過動態代理HAProxy 提供的統一訪問接口,前端用戶Client將Spark作業Job提交到后端YARN集群的Spring Boot 服務上執行,并異步獲取作業的執行進度和處理結果。提交作業處理流程如圖3所示。

圖3 提交作業流程

提交作業具體執行步驟如下。

(1)Client 向HAProxy 統一訪問接口發送Job 處理請求。

(2)HAProxy 在接收到Job 處理請求后,根據負載均衡策略選擇一個后端服務(如Spring Boot 1)來處理當前請求。

(3)Spring Boot 1服務會直接將Job處理請求信息寫入到消息隊列中,通知前端用戶該Job 已提交成功,進入調度隊列等待后續處理。

(4)YARN 集群中其他空閑的后端服務(如Spring Boot 2)從消息隊列中獲取Job 處理請求信息。

(5)利用Spring Boot 2 服務內部集成的Spark Driver 調用集群中的Spark Executor(s)對Job 進行調度執行。

(6)Spring Boot 可定時將Job 處理進度寫入到NoSQL 數據庫,并將Job 的最終處理結果和采樣數據寫入NoSQL數據庫。

(7)Client 從步驟(3)接收到Job 提交成功的信息后,向HAProxy 統一訪問接口發送獲取Job 實時進度和處理結果的請求信息。

(8)對獲取到的Job 進度和結果請求信息,HAProxy 按照負載均衡策略選擇一個后端服務(如Spring Boot 3)進行處理。

(9)Spring Boot 3 在接收到請求信息后,從NoSQL 數據庫中獲取Job 實時進度和處理結果,并經HAProxy 返回給前端用戶,完成此次作業的提交過程。

4 取消作業

Spark 作業Job 在被提交到集群上的Spring Boot 服務后,因某種原因,前端用戶要提前終止作業執行。此時,可通過HAProxy 提供的統一訪問接口來及時撤銷Spark 作業。取消作業流程如圖4 所示。

圖4 取消作業流程

取消作業具體執行步驟如下。

(1)前端用戶向HAProxy 統一訪問接口提交取消Job的請求。

(2)HAProxy 按照負載均衡策略將請求分發到后端服務(如Spring Boot 2)上執行。

(3)Spring Boot 2從NoSQL數據庫中獲取Job執行進度和Job 當前運行時所在的Spring Boot 服務信息。

(4)Spring Boot 2 根據Job 的進度狀態來執行不同的取消操作。①若Job 執行進度不存在,則說明該Job 未執行,Job 信息仍在消息隊列中,直接刪除消息隊列中的Job 信息,標記Job 已取消,繼續執行步驟(5);②若Job 執行進度為已完成狀態(如成功、失敗、取消等終結狀態),則說明該Job 已執行完畢,無須處理,直接標記Job 已取消,繼續執行步驟(5);③若Job 執行進度為未完成狀態,則說明該Job 正在執行。將取消Job 的請求信息轉發到Job 運行時所在的后端服務(如Spring Boot 1)中進行處理,繼續執行步驟④;④利用Spring Boot 1 內部集成的Spark Driver 來向集群提交Job 取消指令,完成后將NoSQL 數據庫中的Job執行進度更改為取消狀態,標記Job 已取消,并將取消結果反饋給Spring Boot 2。

(5)Spring Boot 2 將Job 取消結果通過HAProxy反饋給前端用戶,結束操作。

5 結語

基于輕量級Web 應用框架集成的Spark Driver 功能,采用YARN-Cluster 模式將多個無差別的Web 服務部署到資源充足的YARN 集群上,能分散運行,并行調度,減輕邊緣節點服務器的資源使用負擔,降低故障發生頻率。

通過代理組件來實現動態配置更新與自動重載機制,代理后端多個無差別Web 服務,對外提供統一的服務訪問接口,能在用戶對后端無感知的情況下,接收和分發Spark 作業的交互式提交請求,從而完成對Spark 作業生命周期的管理。

代理組件僅提供Spark請求信息和結果數據的高性能代理和轉發功能,無須在邊緣節點服務器與集群之間保持長連接會話,具體請求由后端Web服務之間自動協作完成,能實現輕客戶端的高效交互效果。

綜上所述,本研究通過在邊緣節點服務器上部署高性能負載均衡和動態代理組件HAP-roxy,提供一種輕量級客戶端方式來提交Spark作業的實現方法,實現對Spark 作業進行動態調度與全生命周期的管理。通過Spark on YARN模式將多個具有相同功能但相互之間獨立運行的Rest 服務部署到YARN 集群上,利用HAProxy的自動重載機制來動態更新和加載后端服務配置,使前端用戶能在對后端變動無感知的情況下;通過HAProxy 的統一對外接口,將Spark 作業提交到分散運行在YARN 集群上無差別的Rest服務中執行。該方法無須在邊緣節點服務器與集群節點服務器之間保持長連接會話,通過HAProxy 能有效避免外部用戶直接訪問集群內部節點,達到集群內外安全隔離的效果,同時實現Spark on YARN 運行模式下Spark 作業的交互式提交與異步調度,完成對Spark 作業全生命周期的自主控制。該方法在解決傳統重客戶端與Spark 應用服務保持長連接會話弊端的同時,也能滿足前端用戶的頻繁交互需求。

猜你喜歡
作業用戶服務
快來寫作業
服務在身邊 健康每一天
今日農業(2019年12期)2019-08-15 00:56:32
服務在身邊 健康每一天
今日農業(2019年10期)2019-01-04 04:28:15
服務在身邊 健康每一天
今日農業(2019年16期)2019-01-03 11:39:20
招行30年:從“滿意服務”到“感動服務”
商周刊(2017年9期)2017-08-22 02:57:56
關注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
作業
故事大王(2016年7期)2016-09-22 17:30:08
關注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
關注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
如何獲取一億海外用戶
創業家(2015年5期)2015-02-27 07:53:25
主站蜘蛛池模板: 国产一级特黄aa级特黄裸毛片| 99热精品久久| 免费国产高清视频| 国产美女在线观看| 日韩中文精品亚洲第三区| 亚国产欧美在线人成| 四虎成人在线视频| 一区二区三区国产精品视频| 日本不卡在线播放| 婷婷午夜天| 久久精品aⅴ无码中文字幕 | 成人一级免费视频| 国产va免费精品| 欧美精品v日韩精品v国产精品| 亚洲av片在线免费观看| 无遮挡一级毛片呦女视频| 成人精品亚洲| 国产精品99久久久久久董美香| 精品国产污污免费网站| 亚洲码一区二区三区| 欧美成人精品高清在线下载| 亚洲αv毛片| 午夜无码一区二区三区| Jizz国产色系免费| 国产成人1024精品| 91久久青青草原精品国产| 欧美啪啪视频免码| 欧美不卡视频在线观看| 欧美黄网在线| 国产精品13页| 日本三级精品| 日韩欧美视频第一区在线观看| 在线观看亚洲精品福利片| 亚洲国模精品一区| 日韩成人在线网站| 国产成人a毛片在线| 久久伊人操| 在线观看国产精品日本不卡网| 国产成人精品高清不卡在线| 亚洲天堂网在线观看视频| 91小视频在线| 老色鬼久久亚洲AV综合| 农村乱人伦一区二区| 久热中文字幕在线| 福利在线一区| 欧美国产日本高清不卡| 国产成人亚洲精品色欲AV| 国产导航在线| 亚洲三级电影在线播放| 午夜人性色福利无码视频在线观看 | 精品国产免费观看一区| 成人福利在线看| 国产精品专区第1页| 欧美成人精品一级在线观看| 亚洲国产精品无码久久一线| 国产麻豆福利av在线播放| 亚洲一级无毛片无码在线免费视频| 国产乱人免费视频| 91九色最新地址| 国产精品嫩草影院视频| 亚洲自偷自拍另类小说| 996免费视频国产在线播放| 91破解版在线亚洲| 无码丝袜人妻| 亚洲精品国产自在现线最新| 久久精品无码一区二区国产区| 久久网欧美| 欧美国产成人在线| 91福利在线观看视频| 欧美一道本| 在线看片中文字幕| 国产精品成人第一区| 国产中文一区二区苍井空| 国产综合网站| 国产精品视频3p| 亚洲综合狠狠| 91网红精品在线观看| 99人妻碰碰碰久久久久禁片| 欧美色丁香| 91视频精品| 国产激情无码一区二区免费| 免费国产小视频在线观看|