李爽 張飛 王穎卓
摘 ?要:本方案涉及大數(shù)據(jù)技術(shù)領(lǐng)域一種流式數(shù)據(jù)計(jì)算引擎的實(shí)現(xiàn)方法和裝置,包括:接收用戶編輯請(qǐng)求,所述編輯請(qǐng)求中包括算子及其配置信息;根據(jù)所述算子及其配置信息提交給編譯引擎,編譯引擎通過(guò)編譯識(shí)別所述算子及其配置信息,對(duì)所述的算子及其配置分配運(yùn)行空間及監(jiān)控設(shè)備,提交編譯后的算子及其配置信息到計(jì)算引擎進(jìn)行數(shù)值計(jì)算,并通過(guò)推送引擎將計(jì)算結(jié)果通知到最終用戶。
關(guān)鍵詞:流式數(shù)據(jù)計(jì)算引擎;流式計(jì)算算子;算子運(yùn)行空間
中圖分類號(hào):TP274 ? ? 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2096-4706(2019)13-0100-03
Assemblable Big Data Flow Computing Engine
LI Shuang,ZHANG Fei,WANG Yingzhuo
(Technology Division of China UnionPay,Shanghai ?201201,China)
Abstract:This project involves the implementation method and device of a flow data computing engine in the field of big data technology,including:receiving user edit request,which includes operator and configuration information;described according to the operator and its configuration information to compile the engine,engine operator described by compiling recognition and its configuration,its configuration information to described by the operator operating space distribution and monitoring equipment,and its configuration information to submit the compiled operator calculation engine,numerical calculation,and the results to the end user via the push engine.
Keywords:flow data computing engine;flow calculation operator;operator operating space
0 ?引 ?言
大數(shù)據(jù)的實(shí)時(shí)計(jì)算一直都是大數(shù)據(jù)領(lǐng)域一個(gè)比較熱門的方向,現(xiàn)有的大數(shù)據(jù)實(shí)時(shí)計(jì)算框架豐富多樣,比較有影響的有Flink、SparkSream、Storm等,以及各個(gè)公司根據(jù)自己的產(chǎn)品特點(diǎn)自行研究的一些大數(shù)據(jù)實(shí)時(shí)計(jì)算框架。
實(shí)時(shí)計(jì)算框架的多源性雖然豐富了開(kāi)發(fā)人員、終端使用人員的選擇,但是也給開(kāi)發(fā)人員和終端人員的使用帶來(lái)困擾,而且在很大程度上影響了開(kāi)發(fā)人員和終端人員之間在不同實(shí)時(shí)計(jì)算框架之間的協(xié)同工作。在多種技術(shù)并行的情況下極大地影響了開(kāi)發(fā)人員和終端使用人員的入門門檻。
1 ?技術(shù)背景
現(xiàn)有業(yè)界的相關(guān)產(chǎn)品以阿里巴巴網(wǎng)絡(luò)技術(shù)有限公司的實(shí)時(shí)計(jì)算調(diào)度裝置為典型代表,其由數(shù)據(jù)源管理裝置、內(nèi)部數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換裝置、算法表達(dá)翻譯及執(zhí)行引擎等裝置外加一組相關(guān)的裝置管理裝置構(gòu)成。
目前業(yè)界的相關(guān)產(chǎn)品在通用化、易用化方面的開(kāi)發(fā)實(shí)施成本都非常高,試分析如下。
數(shù)據(jù)源管理:現(xiàn)有的數(shù)據(jù)源管理裝置要么要求數(shù)據(jù)源實(shí)現(xiàn)統(tǒng)一的數(shù)據(jù)源訪問(wèn)接口(例如JDBC、ODBC、BDE等),要么由平臺(tái)進(jìn)行自適配數(shù)據(jù)源工作。導(dǎo)致增加數(shù)據(jù)源非常困難,尤其是非結(jié)構(gòu)化數(shù)據(jù)源的引入基本不存在一個(gè)統(tǒng)一的數(shù)據(jù)源訪問(wèn)接口,而且數(shù)據(jù)提取規(guī)則形式多樣,同一份文件甚至有數(shù)十種不同的解讀方式,導(dǎo)致自行適配基本不可能完成。
內(nèi)部數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換:現(xiàn)有的數(shù)據(jù)源轉(zhuǎn)換要求對(duì)具體的業(yè)務(wù)流程和抽象都有非常明確的認(rèn)知和了解,否則抽象出來(lái)的內(nèi)部數(shù)據(jù)結(jié)構(gòu)會(huì)存在各種偏差。終端使用人員基本無(wú)法參與,需要額外引入相關(guān)建模人員。
算法表達(dá)翻譯及執(zhí)行:現(xiàn)有的方式不可避免地會(huì)引入新的約定或者語(yǔ)法規(guī)則,會(huì)給開(kāi)發(fā)、終端使用人員帶來(lái)額外的學(xué)習(xí)成本。
相關(guān)的管理系統(tǒng):現(xiàn)有的相關(guān)管理裝置至少會(huì)包含用戶管理、數(shù)據(jù)源管理管理、內(nèi)部數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換管理、算法表達(dá)翻譯及執(zhí)行引擎管理等管理系統(tǒng)。管理關(guān)系復(fù)雜,部署維護(hù)成本高。
2 ?實(shí)現(xiàn)方式
2.1 ?流式計(jì)算引擎整體流程
一個(gè)典型的裝置結(jié)構(gòu)如圖1所示,其中用戶交互部分涵蓋了推送引擎和編輯引擎兩個(gè)功能裝置。用戶通過(guò)編輯引擎輸入算子描述,編寫業(yè)務(wù)邏輯。編輯引擎會(huì)根據(jù)該算子的配置規(guī)則,進(jìn)行編輯校驗(yàn),包括語(yǔ)法助手、文法檢查等。并對(duì)所編輯的任務(wù)進(jìn)行調(diào)度顯示以及完整的任務(wù)管理。編輯引擎通過(guò)輪詢數(shù)據(jù)庫(kù)的方式對(duì)用戶編輯的任務(wù)進(jìn)行觸發(fā)條件檢測(cè),當(dāng)滿足觸發(fā)條件時(shí)則通過(guò)RESTful接口推送業(yè)務(wù)算子及對(duì)應(yīng)的描述信息到編譯引擎。
2.2 ?編譯引擎建立
編譯引擎識(shí)別并編譯用戶定義的業(yè)務(wù)邏輯,選擇對(duì)應(yīng)的算子。編譯引擎至少要完成以下功能:
(1)通過(guò)用戶給定的配置參數(shù)編譯成一個(gè)獨(dú)立的具備輸入輸出的能完成獨(dú)立功能的特定程序代碼算子。
(2)根據(jù)創(chuàng)建出的算子發(fā)現(xiàn)對(duì)應(yīng)的流數(shù)據(jù)處理平臺(tái),并能夠創(chuàng)建一個(gè)使之運(yùn)行、銷毀的運(yùn)行空間,該空間可以但不僅限于使用計(jì)算機(jī)操作系統(tǒng)所提供的線程或者進(jìn)程來(lái)實(shí)現(xiàn)。
(3)一個(gè)能監(jiān)視提交算子的運(yùn)行狀態(tài)的任務(wù)審計(jì)子功能,在必要的時(shí)候?qū)λ阕拥倪\(yùn)行狀態(tài)進(jìn)行告警處理。用來(lái)發(fā)現(xiàn)、創(chuàng)建、執(zhí)行、銷毀具體算子的特定程序代碼。
整個(gè)裝置的數(shù)據(jù)流如圖2所示,其中接口調(diào)用方式以RESTful為優(yōu)先考慮的接口暴露方式,在具體實(shí)現(xiàn)中可以使用其他方式進(jìn)行替換。
編譯引擎:作為整個(gè)提案的核心,該編譯引擎定義并實(shí)現(xiàn)了對(duì)外的算子調(diào)用接口(優(yōu)先的RESTful接口)、算子管理、算子空間管理、算子審計(jì)管理等。
算子空間:作為算子執(zhí)行的核心,該裝置定義并實(shí)現(xiàn)了算子的實(shí)現(xiàn)發(fā)現(xiàn)、創(chuàng)建,及運(yùn)行、銷毀等管理動(dòng)作。
通用算子模型:約定、發(fā)布、管理、審核所有算子的實(shí)現(xiàn)是否符合算子開(kāi)發(fā)規(guī)范及慣例接口。
算子審計(jì):針對(duì)算子的運(yùn)行狀態(tài)提供相應(yīng)的審計(jì)報(bào)。
2.3 ?計(jì)算引擎建立
計(jì)算引擎實(shí)現(xiàn)具體的數(shù)值計(jì)算。包括窗口聚合、累計(jì)、TOP、ABTest、CEP等具體算子的任務(wù)分發(fā)。分發(fā)系統(tǒng)包括但不僅限于Flink、SparkStream、Storm,或者任何其他流數(shù)據(jù)計(jì)算平臺(tái)。計(jì)算引擎處于整個(gè)流式數(shù)據(jù)計(jì)算引擎的計(jì)算核心,還可通過(guò)圖3所示的方法流程對(duì)計(jì)算引擎進(jìn)行補(bǔ)充。
如圖3所示,該方法流程可包括:
本方案采用算子通過(guò)選擇特定的實(shí)時(shí)計(jì)算框架對(duì)數(shù)據(jù)源直接進(jìn)行操作,對(duì)數(shù)據(jù)源不進(jìn)行任何管理,對(duì)應(yīng)的傳統(tǒng)技術(shù)的數(shù)據(jù)源管理裝置,在本提案中沒(méi)有該裝置的存在,相應(yīng)的也不需要引入傳統(tǒng)技術(shù)中該裝置的各種弊端。
本方案采用算子對(duì)源數(shù)據(jù)進(jìn)行直接解析,對(duì)數(shù)據(jù)結(jié)構(gòu)不做任何二次抽象化操作,對(duì)應(yīng)的傳統(tǒng)技術(shù)的內(nèi)部數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換裝置,在本提案中沒(méi)有該裝置的存在,相應(yīng)地也不需要引入傳統(tǒng)技術(shù)中該裝置的各種弊端。
只發(fā)布具體執(zhí)行算子,不引入任何約定或者語(yǔ)法規(guī)定(算子的配置參數(shù)約定例外),對(duì)應(yīng)的傳統(tǒng)技術(shù)的算法表達(dá)翻譯及執(zhí)行引擎裝置,但在本提案中對(duì)其進(jìn)行了顛覆性定義。所以不具備可比性。
構(gòu)建簡(jiǎn)單,編輯引擎裝置、推送引擎裝置、編譯引擎裝置,計(jì)算引擎裝置四類及相應(yīng)的管理裝置(其中編輯引擎裝置、推送引擎裝置均屬于用戶交互管理),不需要對(duì)數(shù)據(jù)源、數(shù)據(jù)進(jìn)行二次抽象、算法表達(dá)及管理等系統(tǒng)管理。
2.4 ?實(shí)現(xiàn)包確定
基于上述的技術(shù)構(gòu)思,本案提的實(shí)現(xiàn)結(jié)構(gòu)如圖4所示。
本方案中的裝置管理系統(tǒng)采用前后端分離方式,其中GUI管理頁(yè)面采用成熟的商業(yè)化GUI構(gòu)建軟件EXTJS實(shí)現(xiàn),但僅限于內(nèi)部使用,不作為對(duì)外提供的用戶界面,同時(shí)也提供了基于HTTP的RESTful接口和內(nèi)部RPC調(diào)用接口進(jìn)行直接管理,為減少部署資源的使用及部署復(fù)雜度,同樣地也可以使用對(duì)應(yīng)的管理流程制度,作為一個(gè)輔助的可選裝置存在。在整個(gè)提案中可以通過(guò)各種表現(xiàn)形式進(jìn)行替換。
本方案中的編輯引擎具有多樣化的實(shí)現(xiàn)方式,不限于GUI、CUI等輸入方式,但是核心必然是對(duì)發(fā)布算子進(jìn)行選擇,對(duì)選擇確定的算子進(jìn)行運(yùn)行時(shí)的參數(shù)配置,以及任務(wù)的提交,提交方式也不限于HTTP RESTful,也可采用其他RPC提交方式。
本方案中的編譯引擎具有多樣化的實(shí)現(xiàn)方式,不限于具體的實(shí)現(xiàn)語(yǔ)言。但優(yōu)選的具有反射功能的類似java語(yǔ)言或者其他語(yǔ)言實(shí)現(xiàn)。
本方案中計(jì)算引擎不限于提供對(duì)Flink、SparkStream、Storm等實(shí)時(shí)計(jì)算引擎的審計(jì)接口封裝,封裝形式優(yōu)先以RESTful接口進(jìn)行提供,但不僅限于此。
推送引擎將計(jì)算好的結(jié)果推送給用戶。并具有多樣化的通知方式,不限于RESTful、Kafaka、數(shù)據(jù)庫(kù)、短信或者其他數(shù)據(jù)推送通知方式。
該案例可采用的最簡(jiǎn)化實(shí)施可能會(huì)非常簡(jiǎn)易,但以算子為基本調(diào)度運(yùn)行的典型特征不會(huì)發(fā)生改變,所以可選的開(kāi)始流程可以從任務(wù)調(diào)度直接開(kāi)始,同時(shí)顯示服務(wù)和通知服務(wù)作為可選的步驟也可以不出現(xiàn)在整個(gè)流程中。
3 ?結(jié) ?論
該案例可采用的最簡(jiǎn)化實(shí)施可能會(huì)非常簡(jiǎn)易,但以算子為基本調(diào)度運(yùn)行的典型特征不會(huì)發(fā)生改變,所以可選的開(kāi)始流程可以從任務(wù)調(diào)度直接開(kāi)始,同時(shí)顯示服務(wù)和通知服務(wù)作為可選的步驟也可以不出現(xiàn)在整個(gè)流程中。
參考文獻(xiàn):
[1] 孫大為.大數(shù)據(jù)流式計(jì)算:應(yīng)用特征和技術(shù)挑戰(zhàn) [J].大數(shù)據(jù),2015,1(3):99-105.
[2] 靳永超,吳懷谷.基于Storm和Hadoop的大數(shù)據(jù)處理架構(gòu)的研究 [J].現(xiàn)代計(jì)算機(jī)(專業(yè)版),2015(4):9-12.
[3] 張華,王東輝,吳烜.流式計(jì)算的分布式框架的應(yīng)用 [J].信息與電腦(理論版),2014(10):142-143.
[4] 劉子英,唐宏建,肖嘉耀,等.基于流式計(jì)算的Web實(shí)時(shí)故障診斷分析與設(shè)計(jì) [J].華東交通大學(xué)學(xué)報(bào),2014,31(1):119-123.
[5] 朱月琴,譚永杰,張建通,等.基于Hadoop的地質(zhì)大數(shù)據(jù)融合與挖掘技術(shù)框架 [J].測(cè)繪學(xué)報(bào),2015,44(S1):152-159.
[6] 李國(guó)杰,程學(xué)旗.大數(shù)據(jù)研究:未來(lái)科技及經(jīng)濟(jì)社會(huì)發(fā)展的重大戰(zhàn)略領(lǐng)域——大數(shù)據(jù)的研究現(xiàn)狀與科學(xué)思考 [J].中國(guó)科學(xué)院院刊,2012,27(6):647-657.
作者簡(jiǎn)介:李爽(1986.04-),男,漢族,遼寧鞍山人,中級(jí)
職稱,本科,研究方向:大數(shù)據(jù)開(kāi)發(fā);通訊作者:張飛(1981.05-),男,漢族,陜西西安人,中級(jí)工程師,本科,研究方向:大數(shù)據(jù)開(kāi)發(fā);王穎卓(1978.05-),男,漢族,江西贛州人,架構(gòu)師,碩士,研究方向:大數(shù)據(jù)開(kāi)發(fā)。