本發(fā)明屬于數(shù)據(jù)挖掘技術(shù)領(lǐng)域,具體涉及一種基于拓撲的數(shù)據(jù)挖掘系統(tǒng)。
背景技術(shù):
互聯(lián)網(wǎng)數(shù)據(jù)經(jīng)過數(shù)據(jù)采集后,每條采集的數(shù)據(jù)都要進行數(shù)據(jù)挖掘,對數(shù)據(jù)進行特定的挖掘分析后,才能體現(xiàn)其價值。往往多數(shù)信息需要在剛剛發(fā)布在互聯(lián)網(wǎng)上之后,就需要立刻被挖掘分析,并將分析結(jié)果及時推送給客戶瀏覽。目前的數(shù)據(jù)挖掘系統(tǒng),每當(dāng)采集到一條新數(shù)據(jù)后,就進行數(shù)據(jù)挖掘,但由于要進行的挖掘動作過多,不同業(yè)務(wù)所需要的挖掘過程往往不同,且采集數(shù)據(jù)量巨大,每天幾千萬的數(shù)據(jù)進行不同業(yè)務(wù)流程的流式處理。
盡管目前業(yè)內(nèi)常見的并行處理框架,如HADOOP,Groovy,對于數(shù)據(jù)的處理進行了優(yōu)化,加快了數(shù)據(jù)挖掘進程,但其異步隊列技術(shù)往往只解決了數(shù)據(jù)分發(fā)給多個處理節(jié)點的問題,但對于流式的實時數(shù)據(jù)的處理,并沒有考慮到當(dāng)每個挖掘處理業(yè)務(wù)復(fù)雜度過高是,以及如何縱向橫向拆分,用最小的系統(tǒng)資源代價解決多種業(yè)務(wù)的問題。
另外現(xiàn)有數(shù)據(jù)挖掘系統(tǒng)在新業(yè)務(wù)開發(fā)成本及維護成本上相對較高,因此設(shè)計一種可支持多業(yè)務(wù)的高適應(yīng)性的系統(tǒng)框架,對數(shù)據(jù)挖掘業(yè)務(wù)進行優(yōu)化,很有必要。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的在于解決上述的技術(shù)問題而提供一種基于拓撲的數(shù)據(jù)挖掘系統(tǒng),其是一種基于分布式計算集群技術(shù)的可自由調(diào)配的高適用性的可支持多業(yè)務(wù)共存管理的數(shù)據(jù)挖掘系統(tǒng)。
為實現(xiàn)上述目的,本發(fā)明采用如下技術(shù)方案:
一種基于拓撲的數(shù)據(jù)挖掘系統(tǒng),包括:
多個業(yè)務(wù)處理拓撲,用于不同的數(shù)據(jù)挖掘處理工作,每個所述業(yè)務(wù)處理拓撲包括多個可以按預(yù)分的一項數(shù)據(jù)處理業(yè)務(wù)的步驟進行配置并共同完成一項數(shù)據(jù)處理的數(shù)據(jù)處理模塊;
每個所述數(shù)據(jù)處理模塊包括有多個并行設(shè)置的用于并行運算處理每個數(shù)據(jù)處理模塊要處理的數(shù)據(jù)的計算單元以及與所述計算單元連接的用于實現(xiàn)所述計算單元處理后的數(shù)據(jù)在多個數(shù)據(jù)處理模塊之間進行傳遞的數(shù)據(jù)處理中心;所述計算單元根據(jù)每個步驟中橫向劃分的用于并行處理數(shù)據(jù)的組來設(shè)置;
集群共用看板,與所述業(yè)務(wù)處理拓撲連接,記錄所述業(yè)務(wù)處理拓撲的拓撲信息、所述數(shù)據(jù)處理模塊的數(shù)據(jù)處理屬性信息以及每項數(shù)據(jù)處理業(yè)務(wù)的業(yè)務(wù)處理步驟信息,對所述數(shù)據(jù)處理模塊以及計算單元的處理信息進行配置,由所述數(shù)據(jù)處理模塊及計算單元根據(jù)配置信息進行數(shù)據(jù)處理。
多個所述數(shù)據(jù)處理模塊與一項數(shù)據(jù)處理業(yè)務(wù)的多個數(shù)據(jù)處理步驟一一對應(yīng),分別完成每個數(shù)據(jù)處理步驟的數(shù)據(jù)處理工作。
每個所述數(shù)據(jù)處理模塊包括一套數(shù)據(jù)處理子單元,多套所述數(shù)據(jù)處理子單元可實現(xiàn)一個完整的數(shù)據(jù)處理流程。
所述計算單元可根據(jù)集群共用看板記錄的配置信息,在不同業(yè)務(wù)處理拓撲中進行處理數(shù)據(jù)。
所述數(shù)據(jù)處理中心使用密鑰進行中間數(shù)據(jù)流的存儲。
所述計算單元在數(shù)據(jù)處理后,輸出處理結(jié)果以及標識至相應(yīng)的數(shù)據(jù)交換中心,所述標識用于指示下一數(shù)據(jù)處理步驟的數(shù)據(jù)交換中心的數(shù)據(jù)流名稱,供后續(xù)計算單元讀取處理相關(guān)的數(shù)據(jù)。
本發(fā)明首先利用集群共用看板,將業(yè)務(wù)拓撲以及步驟信息寫入,所有計算節(jié)點或計算單元(worker)都可根據(jù)拓撲信息自行找到工作崗位,并且可以在新拓撲新增時自動感知并進行自我協(xié)調(diào),新拓展業(yè)務(wù)不需運維重新部署一套系統(tǒng),而只需修改配置,拓撲業(yè)務(wù)流就能自動生成,運維部署計算節(jié)點或計算單元(worker)無需再關(guān)心業(yè)務(wù)流上下級配置,只需部署相同程序內(nèi)容的計算節(jié)點或計算單元(worker)即可,大大降低了拓展新業(yè)務(wù)時開發(fā)和運維投入的時間成本。
附圖說明
圖1出示了本發(fā)明基于拓撲的數(shù)據(jù)挖掘系統(tǒng)的拓撲圖;
圖2出示了本發(fā)明業(yè)務(wù)處理拓撲內(nèi)的數(shù)據(jù)處理步驟的示意圖;
圖3出示了本發(fā)明數(shù)據(jù)處理步驟內(nèi)各組的橫向劃分示意圖;
圖4-8出示了本發(fā)明的基于拓撲的數(shù)據(jù)挖掘系統(tǒng)可實現(xiàn)的五種數(shù)據(jù)處理步驟的執(zhí)行流程圖;
圖9-12出示了本發(fā)明的基于拓撲的數(shù)據(jù)挖掘系統(tǒng)利用數(shù)據(jù)交換中心處理相應(yīng)數(shù)據(jù)處理步驟的流程圖。
具體實施方式
下面,結(jié)合實例對本發(fā)明的實質(zhì)性特點和優(yōu)勢作進一步的說明,但本發(fā)明并不局限于所列的實施例。
本發(fā)明是通過將數(shù)據(jù)挖掘業(yè)務(wù)流程進行分析和梳理,針對不同性質(zhì)的數(shù)據(jù)挖掘業(yè)務(wù)進行數(shù)據(jù)處理步驟的拆分,相同性質(zhì)的進行合并,并對數(shù)據(jù)流路線規(guī)劃并通過配置實現(xiàn)不同數(shù)據(jù)處理模塊的調(diào)用而形成的。
參見圖1-3所示,一種基于拓撲的數(shù)據(jù)挖掘系統(tǒng),包括:
多個業(yè)務(wù)處理拓撲,用于不同的數(shù)據(jù)挖掘處理工作,每個所述業(yè)務(wù)處理拓撲包括多個可以按預(yù)分的一項數(shù)據(jù)處理業(yè)務(wù)的步驟(step)進行配置并共同完成一項數(shù)據(jù)處理的數(shù)據(jù)處理模塊;
其中,每個數(shù)據(jù)處理模塊處理預(yù)分的一個處理步驟待處理的數(shù)據(jù)工作;一項業(yè)務(wù)的數(shù)據(jù)處理步驟按其數(shù)據(jù)流串接起來,由對應(yīng)的數(shù)據(jù)處理模塊依次按數(shù)據(jù)流依次進行數(shù)據(jù)處理工作;
每個所述數(shù)據(jù)處理模塊包括有多個并行設(shè)置的、用于并行運算處理每個數(shù)據(jù)處理模塊要處理的數(shù)據(jù)的計算單元以及與所述計算單元連接的用于實現(xiàn)所述計算單元處理后的數(shù)據(jù)在多個數(shù)據(jù)處理模塊之間進行傳遞的數(shù)據(jù)處理中心(redis);
所述計算單元根據(jù)每個步驟中橫向劃分的用于并行處理數(shù)據(jù)的組(group)來設(shè)置;每個計算單元(或計算節(jié)點)形成一個數(shù)據(jù)處理組(group);
集群共用看板(Zookeeper),與所述業(yè)務(wù)處理拓撲連接,記錄所述業(yè)務(wù)處理拓撲的拓撲信息、所述數(shù)據(jù)處理模塊的數(shù)據(jù)處理屬性信息以及每項數(shù)據(jù)處理業(yè)務(wù)的業(yè)務(wù)處理步驟信息,對所述數(shù)據(jù)處理模塊以及計算單元的處理信息進行配置,由所述數(shù)據(jù)處理模塊及計算單元根據(jù)配置信息進行數(shù)據(jù)處理。
所述集群共用看板(Zookeeper)起一個系統(tǒng)的業(yè)務(wù)處理配置、管理的功能,通過其中記錄的信息,對業(yè)務(wù)處理拓撲進行配置,從而可以實現(xiàn)控制相應(yīng)的業(yè)務(wù)處理拓撲按一項業(yè)務(wù)的數(shù)據(jù)處理步驟進行數(shù)據(jù)處理,傳送,而且可以實現(xiàn)對不同的業(yè)務(wù)處理拓撲間的數(shù)據(jù)處理步驟的交互配置,相互組合使用,也即實現(xiàn)控制不同的數(shù)據(jù)處理模塊或計算單元在閑置時根據(jù)其相應(yīng)的數(shù)據(jù)處理屬性,按一項數(shù)據(jù)處理業(yè)務(wù)的數(shù)據(jù)處理步驟進行組合配置,從而形成一個新的數(shù)據(jù)處理流程,而實現(xiàn)新的數(shù)據(jù)處理挖掘工作。
本發(fā)明中,所述多個業(yè)務(wù)處理拓撲,用于不同的數(shù)據(jù)挖掘處理工作,數(shù)據(jù)處理模塊根據(jù)不同數(shù)據(jù)處理的步驟,分別實現(xiàn)不同步驟的數(shù)據(jù)處理工作,從而實現(xiàn)共同完成一項數(shù)據(jù)處理工作。
也就是說,本發(fā)明中,多個所述數(shù)據(jù)處理模塊與一項數(shù)據(jù)處理業(yè)務(wù)的多個數(shù)據(jù)處理步驟一一對應(yīng),分別完成每個數(shù)據(jù)處理步驟的數(shù)據(jù)處理工作。
進一步的,本發(fā)明中,每個處理步驟對應(yīng)的數(shù)據(jù)處理模塊都可根據(jù)配置信息在不同的業(yè)務(wù)處理拓撲中共用,可以使新數(shù)據(jù)處理業(yè)務(wù)像搭積木一般簡單的串接實現(xiàn),大大降低新業(yè)務(wù)從設(shè)計到上線所需的時間。
其中,本發(fā)明中,每個所述數(shù)據(jù)處理模塊包括一套數(shù)據(jù)處理子單元,多套所述數(shù)據(jù)處理子單元可實現(xiàn)一個完整的數(shù)據(jù)處理流程。
具體在處理數(shù)據(jù)時,根據(jù)集群共用看板的業(yè)務(wù)拓撲記錄信息以及配置信息,每個數(shù)據(jù)處理模塊可以實現(xiàn)在不同業(yè)務(wù)處理拓撲中進行相應(yīng)的數(shù)據(jù)挖掘處理工作。
具體的,本發(fā)明中,即所述計算單元可根據(jù)集群共用看板記錄的配置信息,在不同業(yè)務(wù)處理拓撲中進行處理數(shù)據(jù),所述計算單元采用并行分布式計算的方式進行數(shù)據(jù)處理,可以提升某些運算量龐大的數(shù)據(jù)處理步驟的總體效率。且在系統(tǒng)內(nèi)的每個計算單元worker,可通過讀取不同的配置,自由成為任意數(shù)據(jù)處理步驟step中的計算節(jié)點,且各業(yè)務(wù)處理拓撲間使用的計算資源相互獨立,可保證各業(yè)務(wù)流不會互相影響。
本發(fā)明中,所述數(shù)據(jù)處理中心主要用于在計算單元之間進行中間數(shù)據(jù)流的傳遞工作,即接收相應(yīng)的前方的計算單元傳來的數(shù)據(jù),然而由后續(xù)的計算進行讀取進行后續(xù)的處理工作,其中,所述數(shù)據(jù)處理中心使用密鑰進行中間數(shù)據(jù)流的存儲。
本發(fā)明中,進一步的,為了方便后續(xù)的計算單元的數(shù)據(jù)讀取,所述計算單元在數(shù)據(jù)處理后,輸出相應(yīng)的處理結(jié)果以及預(yù)設(shè)的標識至相應(yīng)的數(shù)據(jù)交換中心,所述標識用于指示下一數(shù)據(jù)處理步驟的數(shù)據(jù)交換中心的數(shù)據(jù)流名稱,供后續(xù)計算單元讀取處理相關(guān)的數(shù)據(jù)。通過設(shè)有標識,可以方便后續(xù)的計算單元進行數(shù)據(jù)的讀取操作及數(shù)據(jù)的處理。
具體實施時,可以通過設(shè)置唯一的集群共用看板(Zookeeper),將業(yè)務(wù)拓撲、數(shù)據(jù)處理步驟、組的分配信息記錄在上面,供系統(tǒng)內(nèi)數(shù)據(jù)處理模塊或計算單元查看;
設(shè)置數(shù)據(jù)交換中心(Redis),使步驟間數(shù)據(jù)流轉(zhuǎn)都依賴于數(shù)據(jù)交換中心redis進行中間信息的保存和交換;
投入多個計算節(jié)點或計算單元(worker),計算節(jié)點會先根據(jù)集群共用看板(zookeeper)中的信息,自動的找到自己的位置,并從集群共用看板zookeeper中得到本組的業(yè)務(wù)工作內(nèi)容及所需的配置信息和數(shù)據(jù)知識等,完成加載并準備開始工作;
當(dāng)一條數(shù)據(jù)進入業(yè)務(wù)處理拓撲的開始節(jié)點時,會被一個步驟內(nèi)的計算節(jié)點或計算單元(worker)處理,并通過數(shù)據(jù)交換中心(Redis)傳輸?shù)较乱患壊襟E,最終傳輸?shù)捷敵龉?jié)點中。
本發(fā)明還可以實現(xiàn)對新增業(yè)務(wù)拓撲進行自適應(yīng)處理,當(dāng)需要在系統(tǒng)中拓展新業(yè)務(wù)時,將對新數(shù)據(jù)處理業(yè)務(wù)進行步驟整理和拆分,分成不同步驟,在每個步驟設(shè)置不同的數(shù)據(jù)處理模塊,并根據(jù)需要在每個數(shù)據(jù)處理模塊設(shè)置多個并行的計算單元或計算節(jié)點;然后將新數(shù)據(jù)處理業(yè)務(wù)的信息寫入集群共用看板Zookeeper,之后系統(tǒng)中計算節(jié)點或計算單元worker就會根據(jù)寫入的相關(guān)信息自動感知到新拓撲的加入,自動推選出有冗余資源的計算節(jié)點或計算單元worker,加入新拓撲進行處理。
若系統(tǒng)中沒有冗余資源,則系統(tǒng)新拓撲將無計算節(jié)點或計算單元worker進入,此時外部需要增加計算節(jié)點或計算單元worker,新節(jié)點將自動補充無計算節(jié)點或計算單元worker的拓撲的工作。
本發(fā)明可以根據(jù)數(shù)據(jù)流和步驟間的交互,組成各種不同的業(yè)務(wù)流程拓撲,由于拓撲內(nèi)的步驟和流都是獨立分配的,相互間不會互相干擾,系統(tǒng)中可同時存在多套業(yè)務(wù)拓撲,形成了一套多業(yè)務(wù)流程的高度自適應(yīng)化的擴展性極強的流式數(shù)據(jù)處理系統(tǒng)。
本發(fā)明數(shù)據(jù)挖掘系統(tǒng)的拓撲,可以實現(xiàn)了如下幾種步驟執(zhí)行流程:
1)串行處理:數(shù)據(jù)系列(serial)經(jīng)過步驟A后,直接進入步驟B,是最基本的串行處理流程,參見圖4所示。
2)同時處理:步驟A的處理結(jié)果,同時發(fā)送給步驟B和步驟C,步驟B和步驟C將同時開始進行工作,進行同時處理(batch);參見圖5所示。
3)選擇分支處理:步驟A處理完成后,由其決定下一步工作由步驟B還是步驟C來處理;通過選擇(select)來選擇分支處理,參見圖6所示。
4)匯總(waitall)后處理:步驟A和步驟B,各自處理完成后,將結(jié)果匯總(waitall)為一份,一起發(fā)送給步驟C;參見圖7所示。
5)不匯總(waitone)處理:步驟A和步驟B,各自處理完成后,直接將自己的結(jié)果發(fā)給步驟C,適用于兩個相互獨立的步驟,各自結(jié)果都可直接輸出的類型;參見圖8所示。
對應(yīng)上述幾中步驟間處理關(guān)系,本發(fā)明使用數(shù)據(jù)交換中心redis作為中間數(shù)據(jù)的傳遞者,實現(xiàn)了數(shù)據(jù)傳遞,本發(fā)明中,將數(shù)據(jù)交換中心redis形成的中間數(shù)據(jù)傳輸空間,命名為“數(shù)據(jù)流”:
1)匯總(waitall)處理流:步驟A和步驟B需要匯總輸出的情況下,兩者在數(shù)據(jù)交換中心redis中使用同一密鑰key存儲中間信息,先完成者將數(shù)據(jù)寫入數(shù)據(jù)交換中心redis流中,后完成工作者將自身數(shù)據(jù)和數(shù)據(jù)交換中心redis流中的數(shù)據(jù)合并,寫入數(shù)據(jù)交換中心redis流中,并設(shè)置流內(nèi)數(shù)據(jù)完整的標識,參見圖9所示。
2)不匯總(waitone):步驟A和步驟B不需匯總時,兩者在數(shù)據(jù)交換中心redis數(shù)據(jù)流中使用不同的密鑰key存儲中間信息,各自直接寫入數(shù)據(jù)交換中心redis數(shù)據(jù)流中,參見圖10所示;
3)流的讀?。好總€數(shù)據(jù)交換中心redis數(shù)據(jù)流都允許多個數(shù)據(jù)處理步驟同時讀取,即支持同時多個數(shù)據(jù)處理步驟訂閱;參見圖11所示。
4)流的選擇發(fā)送:步驟A可以根據(jù)處理結(jié)果內(nèi)的下一步信息,由計算節(jié)點或計算單元選擇下一個數(shù)據(jù)流,自動將結(jié)果發(fā)送到指定的數(shù)據(jù)交換中心redis數(shù)據(jù)流中;參見圖12所示。
本發(fā)明系統(tǒng)在工作時,對應(yīng)每一個數(shù)據(jù)處理步驟的計算單元或計算節(jié)點worker,只需要知道如下信息即可開始工作:
輸入:要讀取的數(shù)據(jù)交換中心reids數(shù)據(jù)流信息,知道自己需要從那里讀取數(shù)據(jù)進行自己份內(nèi)的挖掘處理。
輸出:挖掘處理后,除處理結(jié)果,還會輸出一標識,指示下一步驟的數(shù)據(jù)交換中心redis數(shù)據(jù)流的名稱,計算單元或計算節(jié)點worker會根據(jù)輸出邏輯自行將處理結(jié)果發(fā)送到下一個“數(shù)據(jù)流”內(nèi),供后續(xù)的步驟讀取。
以上所述僅是本發(fā)明的優(yōu)選實施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應(yīng)視為本發(fā)明的保護范圍。