近兩年,大數(shù)據(jù)分布式架構(gòu)成為金融行業(yè)關(guān)鍵詞匯,圍繞分布式架構(gòu)分布式計(jì)算、分布式存儲(chǔ)、分布式網(wǎng)絡(luò)成為信息科技的主流。金融各個(gè)子行業(yè)包括銀行、保險(xiǎn)、證券、信托行業(yè),紛紛采取分布式架構(gòu)和相關(guān)技術(shù)建設(shè)新系統(tǒng)或重構(gòu)原有系統(tǒng),利用分布式架構(gòu)的高可擴(kuò)展性、高處理效率、強(qiáng)容錯(cuò)能力特點(diǎn),來(lái)提升信息系統(tǒng)的靈活性,降低成本,保障供應(yīng)安全。
中金智匯的大數(shù)據(jù)架構(gòu)經(jīng)歷了三個(gè)主要階段:
a. 使用Gearman基于MapReduce思想實(shí)現(xiàn)自研的分布式處理架構(gòu)。
b. 引入Hadoop解決自研分布式處理架構(gòu)網(wǎng)絡(luò)IO問(wèn)題。
c. 引入Spark解決Hadoop小規(guī)模數(shù)據(jù)集處理性能不足,以及磁盤IO等問(wèn)題。
1.1 Gearman
架構(gòu)
Gearman驅(qū)動(dòng)的應(yīng)用程序由三部分組成:Client(客戶端),Worker(工作者)和JobServer(作業(yè)服務(wù)器)。
· Client負(fù)責(zé)創(chuàng)建要運(yùn)行的作業(yè)并將其發(fā)送到JobServer。
· JobServer將找到一個(gè)合適的工作人員,可以運(yùn)行該作業(yè)并轉(zhuǎn)發(fā)給Worker。
· Worker執(zhí)行Client的工作,并通過(guò)JobServer向Client發(fā)送響應(yīng)。
Gearman提供應(yīng)用程序調(diào)用的Client和Worker API,以與Gearman JobServer(也稱為gearmand)進(jìn)行通信,因此無(wú)需處理網(wǎng)絡(luò)或作業(yè)映射。在內(nèi)部,Gearman Client和Worker API使用TCP協(xié)議與JobServer通信。
優(yōu)點(diǎn)
Gearman實(shí)現(xiàn)了基本的MapReduce思想,Client將一個(gè)大任務(wù)拆分成多個(gè)小任務(wù)后,發(fā)送給多個(gè)Worker并行處理,將處理結(jié)果返回Client。
缺點(diǎn)
Gearman在處理大量數(shù)據(jù)的場(chǎng)景下,由于JobServer不清楚要處理的數(shù)據(jù)存儲(chǔ)到哪個(gè)對(duì)應(yīng)的Worker上,所以導(dǎo)致Worker接到任務(wù)時(shí)首先需要去公共存儲(chǔ)中獲取數(shù)據(jù),導(dǎo)致大量的網(wǎng)絡(luò)IO,從而導(dǎo)致性能不足。
1.2 Hadoop
架構(gòu)
HDFS集群由NameNode管理文件系統(tǒng)命名空間的主服務(wù)器和管理客戶端對(duì)文件的訪問(wèn)組成。此外,還有許多DataNode,通常是群集中每個(gè)節(jié)點(diǎn)一個(gè),用于管理連接到它們運(yùn)行的節(jié)點(diǎn)的存儲(chǔ)。HDFS公開(kāi)文件系統(tǒng)命名空間,并允許用戶數(shù)據(jù)存儲(chǔ)在文件中。在內(nèi)部,文件被分成一個(gè)或多個(gè)塊,這些塊存儲(chǔ)在一組DataNode中。
· NameNode執(zhí)行文件系統(tǒng)命名空間操作,如打開(kāi),關(guān)閉和重命名文件和目錄。它還確定了塊到DataNode的映射。
· DataNode負(fù)責(zé)提供來(lái)自文件系統(tǒng)客戶端的讀寫請(qǐng)求。 DataNode還根據(jù)NameNode的指令執(zhí)行塊創(chuàng)建,刪除和復(fù)制。
Hadoop MapReduce作業(yè)通常將輸入數(shù)據(jù)集拆分為獨(dú)立的塊,這些塊由Map任務(wù)以完全并行的方式處理。Hadoop MapReduce對(duì)Map的輸出進(jìn)行排序,然后輸入到Reduce任務(wù)。通常,作業(yè)的輸入和輸出都存儲(chǔ)在文件系統(tǒng)中。Hadoop MapReduce負(fù)責(zé)調(diào)度任務(wù),監(jiān)視它們并重新執(zhí)行失敗的任務(wù)。
優(yōu)點(diǎn)
Hadoop已經(jīng)完全實(shí)現(xiàn)了MapReduce的分布式處理思想,同時(shí)在其基礎(chǔ)上完成失敗重試等功能。同時(shí)在Hadoop的架構(gòu)設(shè)計(jì)中,由于NameNode已經(jīng)記錄了每個(gè)數(shù)據(jù)塊具體存在哪些個(gè)DataNode上,所以在執(zhí)行Map任務(wù)的分發(fā)時(shí),會(huì)根據(jù)NameNode的存儲(chǔ)記錄表,將需要處理的任務(wù)直接分發(fā)到有該任務(wù)需要的數(shù)據(jù)的DataNode上進(jìn)行處理,解決了之前介紹Gearman的缺點(diǎn),從而導(dǎo)致DataNode處理任務(wù)時(shí),不需要去其他服務(wù)器獲取數(shù)據(jù),解決了網(wǎng)絡(luò)IO瓶頸的問(wèn)題,提高了任務(wù)處理效率。
缺點(diǎn)
由于Hadoop設(shè)計(jì)時(shí)算子單一(只有Map和Reduce)導(dǎo)致如果要完成一個(gè)多步驟任務(wù)時(shí),每一個(gè)步驟都需要寫一個(gè)Map和Reduce,同時(shí)每個(gè)Map和Reduce的執(zhí)行過(guò)程代表數(shù)據(jù)至少會(huì)落地一次,所以導(dǎo)致執(zhí)行整個(gè)任務(wù)中會(huì)出現(xiàn)大量的磁盤IO,從而影響了處理效率。
1.3 Spark
架構(gòu)
· Spark中的Driver即運(yùn)行程序的主函數(shù)并創(chuàng)建SparkContext,創(chuàng)建SparkContext的目的是為了準(zhǔn)備Spark應(yīng)用程序的運(yùn)行環(huán)境,在Spark中有SparkContext負(fù)責(zé)進(jìn)行資源申請(qǐng)、任務(wù)的分配和監(jiān)控等,當(dāng)Executor部分運(yùn)行完畢后,Driver同時(shí)負(fù)責(zé)將SparkContext關(guān)閉,通常用SparkContext代表Driver。
· Executor是某個(gè)Application運(yùn)行在工作節(jié)點(diǎn)上的一個(gè)進(jìn)程, 該進(jìn)程負(fù)責(zé)運(yùn)行計(jì)算任務(wù),并且負(fù)責(zé)將數(shù)據(jù)存到內(nèi)存或磁盤上,每個(gè)程序都有各自獨(dú)立的一批Executor,在Spark on Yarn模式下,其進(jìn)程名稱為CoarseGrainedExecutor Backend。一個(gè)CoarseGrainedExecutor Backend有且僅有一個(gè)Executor對(duì)象, 負(fù)責(zé)將任務(wù)包裝成TaskRunner,并從線程池中抽取一個(gè)空閑線程運(yùn)行Task, 這個(gè)每一個(gè)CoarseGrainedExecutor Backend能并行運(yùn)行Task的數(shù)量取決與分配給它的Cpu個(gè)數(shù)。
優(yōu)點(diǎn)
和Hadoop MapReduce相比Spark通過(guò)使用內(nèi)容代替磁盤作為處理過(guò)程中間數(shù)據(jù)的存儲(chǔ),從而減少了在磁盤IO上的開(kāi)銷,解決了Hadoop的性能問(wèn)題。同時(shí)設(shè)計(jì)了彈性分布式數(shù)據(jù)集(RDD)的數(shù)據(jù)結(jié)構(gòu)作為數(shù)據(jù)處理的基礎(chǔ)單元,配合有向無(wú)環(huán)圖(DAG)、Pipline等技術(shù)減少了運(yùn)算步驟,提高了執(zhí)行效率。
1.4Hadoop+Spark
原理
由于Spark最出色的就是計(jì)算框架,其資源調(diào)度框架(Standalone模式)對(duì)復(fù)雜場(chǎng)景的資源調(diào)度略顯不足。所以和Hadoop的資源調(diào)度框架(Yarn)和底層存儲(chǔ)框架(HDSF)組合使用,這樣做既可以繼承了Spark計(jì)算框架的全部?jī)?yōu)勢(shì),也可以解決了Hadoop MapReduce的問(wèn)題。
廣發(fā)銀行信用卡中心,擁有6000余坐席,約4.2億 通電話/年,每天3.6萬(wàn)小時(shí) 的語(yǔ)音量,最初領(lǐng)導(dǎo)層根據(jù)企業(yè)發(fā)展戰(zhàn)略,預(yù)見(jiàn)了未來(lái)企業(yè)自身和應(yīng)用技術(shù)的發(fā)展趨勢(shì),早在2014年便與原中金數(shù)據(jù)大數(shù)據(jù)事業(yè)部現(xiàn)中金智匯簽訂了合作協(xié)議,運(yùn)用分布式大數(shù)據(jù)底層架構(gòu)開(kāi)展上層業(yè)務(wù)。
中金智匯利用分布式大數(shù)據(jù)技術(shù)架構(gòu),將原來(lái)無(wú)法方便處理、 非結(jié)構(gòu)化的數(shù)據(jù)進(jìn)行解析、分析和挖掘 。將原來(lái)每天必須要人工抽樣的低效模式,變成每天使用機(jī)器全量的高效模式。使得卡中心從原來(lái)一天處理37件,到現(xiàn)在一天可以處理18000件,創(chuàng)造了500%的顛覆性提升 。
中金智匯通過(guò)四年來(lái)語(yǔ)音庫(kù)數(shù)據(jù)的積累,結(jié)合分布式大數(shù)據(jù)技術(shù)架構(gòu)、產(chǎn)品快速創(chuàng)新能力和深入行業(yè)的應(yīng)用經(jīng)驗(yàn)。不斷的對(duì)積累數(shù)據(jù)進(jìn)行分析和挖掘,去尋求和發(fā)現(xiàn)海量數(shù)據(jù)背后的價(jià)值,從而衍生了多種適合卡中心的分析和挖掘的數(shù)據(jù)模型。使得卡中心在客戶投訴率下降10%-20%,客戶滿意度上升10%-20%,員工技能提升5%-15%等等的業(yè)務(wù)價(jià)值增長(zhǎng)。為其改善了風(fēng)險(xiǎn)防控之外的服務(wù)流程優(yōu)化 20 余項(xiàng),陸續(xù)開(kāi)拓了營(yíng)銷效果監(jiān)控及信審合規(guī)等業(yè)務(wù)范圍,為廣發(fā)銀行在智能營(yíng)銷、信用卡分期方面帶來(lái)極大營(yíng)收。
憑借技術(shù)的先進(jìn)性、產(chǎn)品的創(chuàng)新性、方案的有效性,中金智匯積累了金融、政府、互聯(lián)網(wǎng)等多個(gè)行業(yè)大中型客戶的成功應(yīng)用案例,并得到了市場(chǎng)的廣泛認(rèn)同,陸續(xù)服務(wù)包括交通銀行、大地保險(xiǎn)、同程旅游、中國(guó)一汽等在內(nèi)的數(shù)十家大中型企業(yè)客戶,積累了跨銀行、保險(xiǎn)、商旅、車企、物流、BPO等多個(gè)行業(yè)與領(lǐng)域的客戶案例,并與中科院聲學(xué)所、北京郵電大學(xué)、騰訊、第四范式等資深科研機(jī)構(gòu)及領(lǐng)軍行業(yè)企業(yè)建立了廣泛的合作關(guān)系。
大數(shù)據(jù)的未來(lái)就是人工智能,而人工智能需要依靠底層分布式大數(shù)據(jù)架構(gòu)的支撐得以實(shí)現(xiàn)。中金智匯利用底層分布式大數(shù)據(jù)架構(gòu)結(jié)合語(yǔ)音識(shí)別、NLP/NLU、深度學(xué)習(xí)等技術(shù)在聯(lián)絡(luò)中心數(shù)據(jù)分析、實(shí)時(shí)坐席助手 等場(chǎng)景均實(shí)現(xiàn)了可用于生產(chǎn)的智能應(yīng)用產(chǎn)品。當(dāng)然,這還遠(yuǎn)遠(yuǎn)不夠……
“這是一個(gè)最好的時(shí)代”!在未來(lái),中金智匯會(huì)基于大數(shù)據(jù)架構(gòu)體系及完備的應(yīng)用場(chǎng)景結(jié)合產(chǎn)品快速創(chuàng)新能力,為追求高效客戶經(jīng)營(yíng)能力的企業(yè),提供領(lǐng)先、專業(yè)、可靠的智能化應(yīng)用產(chǎn)品和服務(wù),而持續(xù)努力著!