本發(fā)明涉及數(shù)據(jù)挖掘技術(shù)領(lǐng)域,尤其涉及一種分布式數(shù)據(jù)挖掘系統(tǒng)及方法。
背景技術(shù):
近年來,以大數(shù)據(jù)、云計算、移動互聯(lián)網(wǎng)等為代表的新一代信息技術(shù)的興起在全球范圍內(nèi)掀起了“第三次IT革命”。隨著大數(shù)據(jù)時代的到來,如何進一步提升數(shù)據(jù)分析能力,深入挖掘數(shù)據(jù)的業(yè)務(wù)價值,近而帶動產(chǎn)品創(chuàng)新、業(yè)務(wù)流程和管理體制的變革,實現(xiàn)真正“以數(shù)據(jù)說話”,成為一項新課題。數(shù)據(jù)挖掘的本質(zhì)是從大量數(shù)據(jù)中挖掘出隱含的、對決策有潛在價值的關(guān)系、模式和趨勢。由于涉及海量數(shù)據(jù)的計算,對實現(xiàn)系統(tǒng)的框架有較高要求。
目前主流的大數(shù)據(jù)挖掘系統(tǒng)是采用分布式的挖掘結(jié)構(gòu),即將一項大數(shù)據(jù)分析任務(wù)進行分解,然后由多臺服務(wù)器并行計算,最后對分項結(jié)果進行匯總。例如以hadoop框架為主要代表的分布式系統(tǒng)基本架構(gòu)被廣泛應(yīng)用。在hadoop框架中,JobTracker服務(wù)器承擔總調(diào)度的重要角色,即接收用戶終端提交的大數(shù)據(jù)分析作業(yè),根據(jù)map/reduce算法實現(xiàn)任務(wù)的分解,然后根據(jù)運算服務(wù)器(TaskTracker)的忙閑程度將任務(wù)分發(fā)到空閑的運算服務(wù)器上。JobTracker服務(wù)器同時監(jiān)控運算服務(wù)器(TaskTracker)上任務(wù)的執(zhí)行情況,若任務(wù)執(zhí)行有異常,則對任務(wù)進行重新分配。此框架存在一個很明顯的缺陷,即單點故障的風險。作為主控節(jié)點的JobTracker服務(wù)器一旦出現(xiàn)故障則將導(dǎo)致整個hadoop框架的任務(wù)調(diào)度體系陷入癱瘓。具體表現(xiàn)為用戶終端因作為服務(wù)入口的主控節(jié)點故障而無法完成任務(wù)的提交;運算服務(wù)器(TaskTracker)的執(zhí)行過程得不到監(jiān)控而造成執(zhí)行失敗任務(wù)得不到重新分配;同時運算服務(wù)器(TaskTracker)因失去了任務(wù)分配者而使資源處于閑置狀態(tài)。
技術(shù)實現(xiàn)要素:
本發(fā)明的實施例提供一種分布式數(shù)據(jù)挖掘系統(tǒng)及方法,以解決當前作為主控節(jié)點的JobTracker服務(wù)器一旦出現(xiàn)故障則將導(dǎo)致整個hadoop框架的任務(wù)調(diào)度體系陷入癱瘓,無法完成任務(wù)調(diào)度和處理的問題。
為達到上述目的,本發(fā)明采用如下技術(shù)方案:
一種分布式數(shù)據(jù)挖掘系統(tǒng),包括:用戶終端組、前置服務(wù)器組、第一控制服務(wù)器、第二控制服務(wù)器以及運算服務(wù)器組;所述用戶終端組包括多個用戶終端;所述前置服務(wù)器組包括多個前置服務(wù)器;所述運算服務(wù)器組包括多個運算服務(wù)器;所述用戶終端組與所述前置服務(wù)器組通信連接;所述前置服務(wù)器組分別與所述第一控制服務(wù)器、第二控制服務(wù)器和所述運算服務(wù)器組通信連接;
所述用戶終端,用于向所述前置服務(wù)器發(fā)送數(shù)據(jù)挖掘任務(wù)請求;
所述前置服務(wù)器,用于解析所述數(shù)據(jù)挖掘任務(wù)請求的域名信息,根據(jù)所述數(shù)據(jù)挖掘任務(wù)請求的域名信息將所述數(shù)據(jù)挖掘任務(wù)請求提交到作為工作節(jié)點的第一控制服務(wù)器;
所述第一控制服務(wù)器,用于將所述數(shù)據(jù)挖掘任務(wù)請求對應(yīng)的數(shù)據(jù)挖掘任務(wù)進行分解,形成多個數(shù)據(jù)挖掘子任務(wù);將所述多個數(shù)據(jù)挖掘子任務(wù)發(fā)送給所述前置服務(wù)器;
所述前置服務(wù)器,還用于將所述多個數(shù)據(jù)挖掘子任務(wù)分配到多個運算服務(wù)器處進行處理,并接收運算服務(wù)器的任務(wù)反饋信息,并將所述任務(wù)反饋信息發(fā)送給所述第一控制服務(wù)器;
所述第一控制服務(wù)器,還用于將所述任務(wù)反饋信息實時同步發(fā)送到第二控制服務(wù)器處;
所述第二控制服務(wù)器,用于實時監(jiān)控所述第一控制服務(wù)器,在確認所述第一控制服務(wù)器發(fā)生故障時,向所述前置服務(wù)器發(fā)送工作節(jié)點更替請求;
所述前置服務(wù)器,還用于根據(jù)所述工作節(jié)點更替請求,更新記錄所述第二控制服務(wù)器的網(wǎng)絡(luò)地址,以使得所述第二控制服務(wù)器作為工作節(jié)點;
所述第二控制服務(wù)器,還用于向各運算服務(wù)器廣播任務(wù)信息收集請求;
所述運算服務(wù)器,還用于在監(jiān)聽到所述廣播任務(wù)信息收集請求時,向所述前置服務(wù)器反饋任務(wù)情況信息;
所述前置服務(wù)器,還用于將所述任務(wù)情況信息發(fā)送給所述第二控制服務(wù)器;
所述第二控制服務(wù)器,還用于對所述任務(wù)情況信息和所述任務(wù)反饋信息進行對比,確定所述任務(wù)情況信息和所述任務(wù)反饋信息的差異信息,并根據(jù)預(yù)先設(shè)置的處理策略,對所述差異信息進行處理。
進一步的,所述前置服務(wù)器,還用于獲取前置服務(wù)器組中的其他前置服務(wù)器的運行狀態(tài)信息;在所述其他前置服務(wù)器的運行狀態(tài)為故障狀態(tài)時,接收與其他前置服務(wù)器連接的用戶終端的連接請求,并建立通信連接。
進一步的,所述前置服務(wù)器,還用于記錄作為工作節(jié)點的第一控制服務(wù)器的網(wǎng)絡(luò)地址或作為工作節(jié)點的第二控制服務(wù)器的網(wǎng)絡(luò)地址。
此外,所述前置服務(wù)器,具體用于接收運算服務(wù)器的心跳信息;所述運算服務(wù)器的心跳信息包括運算服務(wù)器處理數(shù)據(jù)挖掘子任務(wù)的任務(wù)反饋信息和運算服務(wù)器的CPU資源信息;將所述運算服務(wù)器的心跳信息發(fā)送給所述第一控制服務(wù)器。
此外,所述第一控制服務(wù)器,具體用于在將多個數(shù)據(jù)挖掘子任務(wù)發(fā)送給所述前置服務(wù)器時,向第二控制服務(wù)器發(fā)送數(shù)據(jù)同步信息;所述數(shù)據(jù)同步信息包括數(shù)據(jù)挖掘子任務(wù)的任務(wù)編號和各數(shù)據(jù)挖掘子任務(wù)對應(yīng)的運算服務(wù)器的IP地址;
在接收到運算服務(wù)器的心跳信息后,將運算服務(wù)器的心跳信息實時同步發(fā)送到第二控制服務(wù)器處。
此外,所述第二控制服務(wù)器,具體用于以一預(yù)設(shè)時間間隔定時向所述第一控制服務(wù)器發(fā)送心跳請求;若連續(xù)n次向所述第一控制服務(wù)器發(fā)送心跳請求后,均沒有收到第一控制服務(wù)器的心跳應(yīng)答信息,則確定所述第一控制服務(wù)器發(fā)生故障,向所述前置服務(wù)器發(fā)送工作節(jié)點更替請求;其中n為預(yù)先設(shè)置的次數(shù)閾值。
此外,所述第二控制服務(wù)器,具體用于:
根據(jù)所述任務(wù)情況信息和所述任務(wù)反饋信息,生成兩份任務(wù)清單列表;所述任務(wù)清單列表包括運算服務(wù)器的IP地址和運算服務(wù)器的CPU資源信息;
根據(jù)所述兩份任務(wù)清單列表,確定差異信息;
若所述差異信息為第一控制服務(wù)器已分配給運算服務(wù)器后由于第一控制服務(wù)器故障,未同步到第二控制服務(wù)器的任務(wù),根據(jù)所述任務(wù)情況信息更新第二控制服務(wù)器的數(shù)據(jù)同步信息;
若所述差異信息為第一控制服務(wù)器已分配給運算服務(wù)器,且運算服務(wù)器處理任務(wù)失敗后,由于第一控制服務(wù)器故障,未同步到第二控制服務(wù)器的任務(wù),從所述任務(wù)情況信息中獲取任務(wù)失敗信息,并將所述任務(wù)失敗信息對應(yīng)的數(shù)據(jù)挖掘子任務(wù)重新分配;
若所述差異信息為第一控制服務(wù)器尚未分配的數(shù)據(jù)挖掘子任務(wù),將尚未分配的數(shù)據(jù)挖掘子任務(wù)通過前置服務(wù)器分配給運算服務(wù)器處進行處理。
此外,所述第一控制服務(wù)器,具體用于根據(jù)運算服務(wù)器的CPU資源信息,將一數(shù)據(jù)挖掘子任務(wù)分配給各運算服務(wù)器中CPU資源最大的運算服務(wù)器。
一種分布式數(shù)據(jù)挖掘方法,應(yīng)用于上述的分布式數(shù)據(jù)挖掘系統(tǒng),該系統(tǒng)包括:用戶終端組、前置服務(wù)器組、第一控制服務(wù)器、第二控制服務(wù)器以及運算服務(wù)器組;所述用戶終端組包括多個用戶終端;所述前置服務(wù)器組包括多個前置服務(wù)器;所述運算服務(wù)器組包括多個運算服務(wù)器;所述用戶終端組與所述前置服務(wù)器組通信連接;所述前置服務(wù)器組分別與所述第一控制服務(wù)器、第二控制服務(wù)器和所述運算服務(wù)器組通信連接;
所述方法包括:
用戶終端向所述前置服務(wù)器發(fā)送數(shù)據(jù)挖掘任務(wù)請求;
前置服務(wù)器解析所述數(shù)據(jù)挖掘任務(wù)請求的域名信息,根據(jù)所述數(shù)據(jù)挖掘任務(wù)請求的域名信息將所述數(shù)據(jù)挖掘任務(wù)請求提交到作為工作節(jié)點的第一控制服務(wù)器;
第一控制服務(wù)器將所述數(shù)據(jù)挖掘任務(wù)請求對應(yīng)的數(shù)據(jù)挖掘任務(wù)進行分解,形成多個數(shù)據(jù)挖掘子任務(wù),并將所述多個數(shù)據(jù)挖掘子任務(wù)發(fā)送給所述前置服務(wù)器;
所述前置服務(wù)器將所述多個數(shù)據(jù)挖掘子任務(wù)分配到多個運算服務(wù)器處進行處理,并接收運算服務(wù)器的任務(wù)反饋信息,并將所述任務(wù)反饋信息發(fā)送給所述第一控制服務(wù)器;
所述第一控制服務(wù)器將所述任務(wù)反饋信息實時同步發(fā)送到第二控制服務(wù)器處;
所述第二控制服務(wù)器實時監(jiān)控所述第一控制服務(wù)器,在確認所述第一控制服務(wù)器發(fā)生故障時,向所述前置服務(wù)器發(fā)送工作節(jié)點更替請求;
所述前置服務(wù)器根據(jù)所述工作節(jié)點更替請求,更新記錄所述第二控制服務(wù)器的網(wǎng)絡(luò)地址,以使得所述第二控制服務(wù)器作為工作節(jié)點;
所述第二控制服務(wù)器向各運算服務(wù)器廣播任務(wù)信息收集請求;
所述運算服務(wù)器在監(jiān)聽到所述廣播任務(wù)信息收集請求時,向所述前置服務(wù)器反饋任務(wù)情況信息;
所述前置服務(wù)器將所述任務(wù)情況信息發(fā)送給所述第二控制服務(wù)器;
所述第二控制服務(wù)器對所述任務(wù)情況信息和所述任務(wù)反饋信息進行對比,確定所述任務(wù)情況信息和所述任務(wù)反饋信息的差異信息,并根據(jù)預(yù)先設(shè)置的處理策略,對所述差異信息進行處理。
此外,所述的分布式數(shù)據(jù)挖掘方法,還包括:
所述前置服務(wù)器獲取前置服務(wù)器組中的其他前置服務(wù)器的運行狀態(tài)信息;在所述其他前置服務(wù)器的運行狀態(tài)為故障狀態(tài)時,接收與其他前置服務(wù)器連接的用戶終端的連接請求,并建立通信連接。
此外,所述的分布式數(shù)據(jù)挖掘方法,還包括:
所述前置服務(wù)器記錄作為工作節(jié)點的第一控制服務(wù)器的網(wǎng)絡(luò)地址或作為工作節(jié)點的第二控制服務(wù)器的網(wǎng)絡(luò)地址。
具體的,所述前置服務(wù)器將所述多個數(shù)據(jù)挖掘子任務(wù)分配到多個運算服務(wù)器處進行處理,并接收運算服務(wù)器的任務(wù)反饋信息,并將所述任務(wù)反饋信息發(fā)送給所述第一控制服務(wù)器,包括:
所述前置服務(wù)器接收運算服務(wù)器的心跳信息;所述運算服務(wù)器的心跳信息包括運算服務(wù)器處理數(shù)據(jù)挖掘子任務(wù)的任務(wù)反饋信息和運算服務(wù)器的CPU資源信息;
將所述運算服務(wù)器的心跳信息發(fā)送給所述第一控制服務(wù)器。
此外所述的分布式數(shù)據(jù)挖掘方法,還包括:
所述第一控制服務(wù)器在將多個數(shù)據(jù)挖掘子任務(wù)發(fā)送給所述前置服務(wù)器時,向第二控制服務(wù)器發(fā)送數(shù)據(jù)同步信息;所述數(shù)據(jù)同步信息包括數(shù)據(jù)挖掘子任務(wù)的任務(wù)編號和各數(shù)據(jù)挖掘子任務(wù)對應(yīng)的運算服務(wù)器的IP地址;
所述第一控制服務(wù)器將所述任務(wù)反饋信息實時同步發(fā)送到第二控制服務(wù)器處,包括:
所述第一控制服務(wù)器在接收到運算服務(wù)器的心跳信息后,將運算服務(wù)器的心跳信息實時同步發(fā)送到第二控制服務(wù)器處。
具體的,所述第二控制服務(wù)器實時監(jiān)控所述第一控制服務(wù)器,在確認所述第一控制服務(wù)器發(fā)生故障時,向所述前置服務(wù)器發(fā)送工作節(jié)點更替請求,包括:
所述第二控制服務(wù)器以一預(yù)設(shè)時間間隔定時向所述第一控制服務(wù)器發(fā)送心跳請求;
若連續(xù)n次向所述第一控制服務(wù)器發(fā)送心跳請求后,均沒有收到第一控制服務(wù)器的心跳應(yīng)答信息,則確定所述第一控制服務(wù)器發(fā)生故障,向所述前置服務(wù)器發(fā)送工作節(jié)點更替請求;其中n為預(yù)先設(shè)置的次數(shù)閾值。
具體的,所述第二控制服務(wù)器對所述任務(wù)情況信息和所述任務(wù)反饋信息進行對比,確定所述任務(wù)情況信息和所述任務(wù)反饋信息的差異信息,并根據(jù)預(yù)先設(shè)置的處理策略,對所述差異信息進行處理,包括:
所述第二控制服務(wù)器根據(jù)所述任務(wù)情況信息和所述任務(wù)反饋信息,生成兩份任務(wù)清單列表;所述任務(wù)清單列表包括運算服務(wù)器的IP地址和運算服務(wù)器的CPU資源信息;
所述第二控制服務(wù)器根據(jù)所述兩份任務(wù)清單列表,確定差異信息;
若所述差異信息為第一控制服務(wù)器已分配給運算服務(wù)器后由于第一控制服務(wù)器故障,未同步到第二控制服務(wù)器的任務(wù),根據(jù)所述任務(wù)情況信息更新第二控制服務(wù)器的數(shù)據(jù)同步信息;
若所述差異信息為第一控制服務(wù)器已分配給運算服務(wù)器,且運算服務(wù)器處理任務(wù)失敗后,由于第一控制服務(wù)器故障,未同步到第二控制服務(wù)器的任務(wù),從所述任務(wù)情況信息中獲取任務(wù)失敗信息,并將所述任務(wù)失敗信息對應(yīng)的數(shù)據(jù)挖掘子任務(wù)重新分配;
若所述差異信息為第一控制服務(wù)器尚未分配的數(shù)據(jù)挖掘子任務(wù),將尚未分配的數(shù)據(jù)挖掘子任務(wù)通過前置服務(wù)器分配給運算服務(wù)器處進行處理。
進一步的,所述的分布式數(shù)據(jù)挖掘方法,還包括:
所述第一控制服務(wù)器根據(jù)運算服務(wù)器的CPU資源信息,將一數(shù)據(jù)挖掘子任務(wù)分配給各運算服務(wù)器中CPU資源最大的運算服務(wù)器。
本發(fā)明實施例提供的一種分布式數(shù)據(jù)挖掘系統(tǒng)及方法,在作為工作節(jié)點的第一控制服務(wù)器發(fā)生故障時,第二控制服務(wù)器可以更替所述第一控制服務(wù)器成為新的工作節(jié)點,從而在完成工作節(jié)點切換后,恢復(fù)整個分布式數(shù)據(jù)挖掘系統(tǒng)的正常工作。當然,當?shù)诙刂品?wù)器發(fā)生故障時,第一控制服務(wù)器也可以更替所述第二控制服務(wù)器,兩個控制服務(wù)器可以實現(xiàn)主從熱備的格局,避免了當前作為主控節(jié)點的JobTracker服務(wù)器一旦出現(xiàn)故障則將導(dǎo)致整個hadoop框架的任務(wù)調(diào)度體系陷入癱瘓,無法完成任務(wù)調(diào)度和處理的問題。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實施例提供的一種分布式數(shù)據(jù)挖掘系統(tǒng)的結(jié)構(gòu)示意圖一;
圖2為本發(fā)明實施例提供的一種分布式數(shù)據(jù)挖掘方法的流程圖一;
圖3為本發(fā)明實施例提供的一種分布式數(shù)據(jù)挖掘方法的流程圖二。
具體實施方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
如圖1所示,本發(fā)明實施例提供一種分布式數(shù)據(jù)挖掘系統(tǒng)10,包括:用戶終端組11、前置服務(wù)器組12、第一控制服務(wù)器13、第二控制服務(wù)器14以及運算服務(wù)器組15;所述用戶終端組11包括多個用戶終端111;所述前置服務(wù)器組12包括多個前置服務(wù)器121;所述運算服務(wù)器組15包括多個運算服務(wù)器151;所述用戶終端組11與所述前置服務(wù)器組12通信連接;所述前置服務(wù)器組12分別與所述第一控制服務(wù)器13、第二控制服務(wù)器14和所述運算服務(wù)器組15通信連接。
其中,所述用戶終端111,用于向所述前置服務(wù)器121發(fā)送數(shù)據(jù)挖掘任務(wù)請求。
此處,該用戶終端111可以運行有hadoop客戶端或者數(shù)據(jù)挖掘任務(wù)的程序腳本等。
所述前置服務(wù)器121,用于解析所述數(shù)據(jù)挖掘任務(wù)請求的域名信息,根據(jù)所述數(shù)據(jù)挖掘任務(wù)請求的域名信息將所述數(shù)據(jù)挖掘任務(wù)請求提交到作為工作節(jié)點的第一控制服務(wù)器13。
所述第一控制服務(wù)器13,用于將所述數(shù)據(jù)挖掘任務(wù)請求對應(yīng)的數(shù)據(jù)挖掘任務(wù)進行分解,形成多個數(shù)據(jù)挖掘子任務(wù)。將所述多個數(shù)據(jù)挖掘子任務(wù)發(fā)送給所述前置服務(wù)器121。
所述前置服務(wù)器121,還用于將所述多個數(shù)據(jù)挖掘子任務(wù)分配到多個運算服務(wù)器151處進行處理,并接收運算服務(wù)器151的任務(wù)反饋信息,并將所述任務(wù)反饋信息發(fā)送給所述第一控制服務(wù)器13。
所述第一控制服務(wù)器13,還用于將所述任務(wù)反饋信息實時同步發(fā)送到第二控制服務(wù)器14處。
所述第二控制服務(wù)器14,用于實時監(jiān)控所述第一控制服務(wù)器13,在確認所述第一控制服務(wù)器13發(fā)生故障時,向所述前置服務(wù)器121發(fā)送工作節(jié)點更替請求。
所述前置服務(wù)器121,還用于根據(jù)所述工作節(jié)點更替請求,更新記錄所述第二控制服務(wù)器14的網(wǎng)絡(luò)地址,以使得所述第二控制服務(wù)器14作為工作節(jié)點。
所述第二控制服務(wù)器14,還用于向各運算服務(wù)器151廣播任務(wù)信息收集請求。
所述運算服務(wù)器151,還用于在監(jiān)聽到所述廣播任務(wù)信息收集請求時,向所述前置服務(wù)器121反饋任務(wù)情況信息。
所述前置服務(wù)器121,還用于將所述任務(wù)情況信息發(fā)送給所述第二控制服務(wù)器14。
所述第二控制服務(wù)器14,還用于對所述任務(wù)情況信息和所述任務(wù)反饋信息進行對比,確定所述任務(wù)情況信息和所述任務(wù)反饋信息的差異信息,并根據(jù)預(yù)先設(shè)置的處理策略,對所述差異信息進行處理。
進一步的,所述前置服務(wù)器121,還用于獲取前置服務(wù)器121組中的其他前置服務(wù)器121的運行狀態(tài)信息。在所述其他前置服務(wù)器121的運行狀態(tài)為故障狀態(tài)時,接收與其他前置服務(wù)器121連接的用戶終端的連接請求,并建立通信連接。
進一步的,所述前置服務(wù)器121,還用于記錄作為工作節(jié)點的第一控制服務(wù)器13的網(wǎng)絡(luò)地址或作為工作節(jié)點的第二控制服務(wù)器14的網(wǎng)絡(luò)地址。
此外,所述前置服務(wù)器121,具體用于接收運算服務(wù)器151的心跳信息。所述運算服務(wù)器151的心跳信息包括運算服務(wù)器151處理數(shù)據(jù)挖掘子任務(wù)的任務(wù)反饋信息和運算服務(wù)器151的CPU資源信息。將所述運算服務(wù)器151的心跳信息發(fā)送給所述第一控制服務(wù)器13。
此外,所述第一控制服務(wù)器13,具體用于在將多個數(shù)據(jù)挖掘子任務(wù)發(fā)送給所述前置服務(wù)器121時,向第二控制服務(wù)器14發(fā)送數(shù)據(jù)同步信息。所述數(shù)據(jù)同步信息包括數(shù)據(jù)挖掘子任務(wù)的任務(wù)編號和各數(shù)據(jù)挖掘子任務(wù)對應(yīng)的運算服務(wù)器151的IP地址。
在接收到運算服務(wù)器151的心跳信息后,將運算服務(wù)器151的心跳信息實時同步發(fā)送到第二控制服務(wù)器14處。
此外,所述第二控制服務(wù)器14,具體用于以一預(yù)設(shè)時間間隔定時向所述第一控制服務(wù)器13發(fā)送心跳請求。若連續(xù)n次向所述第一控制服務(wù)器13發(fā)送心跳請求后,均沒有收到第一控制服務(wù)器13的心跳應(yīng)答信息,則確定所述第一控制服務(wù)器13發(fā)生故障,向所述前置服務(wù)器121發(fā)送工作節(jié)點更替請求。其中n為預(yù)先設(shè)置的次數(shù)閾值。
此外,所述第二控制服務(wù)器14,具體用于:
根據(jù)所述任務(wù)情況信息和所述任務(wù)反饋信息,生成兩份任務(wù)清單列表。所述任務(wù)清單列表包括運算服務(wù)器151的IP地址和運算服務(wù)器151的CPU資源信息。
根據(jù)所述兩份任務(wù)清單列表,確定差異信息。
若所述差異信息為第一控制服務(wù)器13已分配給運算服務(wù)器151后由于第一控制服務(wù)器13故障,未同步到第二控制服務(wù)器14的任務(wù),根據(jù)所述任務(wù)情況信息更新第二控制服務(wù)器14的數(shù)據(jù)同步信息。
若所述差異信息為第一控制服務(wù)器13已分配給運算服務(wù)器151,且運算服務(wù)器151處理任務(wù)失敗后,由于第一控制服務(wù)器13故障,未同步到第二控制服務(wù)器14的任務(wù),從所述任務(wù)情況信息中獲取任務(wù)失敗信息,并將所述任務(wù)失敗信息對應(yīng)的數(shù)據(jù)挖掘子任務(wù)重新分配。
若所述差異信息為第一控制服務(wù)器13尚未分配的數(shù)據(jù)挖掘子任務(wù),將尚未分配的數(shù)據(jù)挖掘子任務(wù)通過前置服務(wù)器121分配給運算服務(wù)器151處進行處理。
此外,所述第一控制服務(wù)器13,具體用于根據(jù)運算服務(wù)器151的CPU資源信息,將一數(shù)據(jù)挖掘子任務(wù)分配給各運算服務(wù)器151中CPU資源最大的運算服務(wù)器151。
本發(fā)明實施例提供的一種分布式數(shù)據(jù)挖掘系統(tǒng),在作為工作節(jié)點的第一控制服務(wù)器發(fā)生故障時,第二控制服務(wù)器可以更替所述第一控制服務(wù)器成為新的工作節(jié)點,從而在完成工作節(jié)點切換后,恢復(fù)整個分布式數(shù)據(jù)挖掘系統(tǒng)的正常工作。當然,當?shù)诙刂品?wù)器發(fā)生故障時,第一控制服務(wù)器也可以更替所述第二控制服務(wù)器,兩個控制服務(wù)器可以實現(xiàn)主從熱備的格局,避免了當前作為主控節(jié)點的JobTracker服務(wù)器一旦出現(xiàn)故障則將導(dǎo)致整個hadoop框架的任務(wù)調(diào)度體系陷入癱瘓,無法完成任務(wù)調(diào)度和處理的問題。
如圖2所示,本發(fā)明實施例提供一種分布式數(shù)據(jù)挖掘方法,應(yīng)用于上述圖1所示的分布式數(shù)據(jù)挖掘系統(tǒng),所述方法包括:
步驟201、用戶終端向所述前置服務(wù)器發(fā)送數(shù)據(jù)挖掘任務(wù)請求。
步驟202、前置服務(wù)器解析所述數(shù)據(jù)挖掘任務(wù)請求的域名信息,根據(jù)所述數(shù)據(jù)挖掘任務(wù)請求的域名信息將所述數(shù)據(jù)挖掘任務(wù)請求提交到作為工作節(jié)點的第一控制服務(wù)器。
步驟203、第一控制服務(wù)器將所述數(shù)據(jù)挖掘任務(wù)請求對應(yīng)的數(shù)據(jù)挖掘任務(wù)進行分解,形成多個數(shù)據(jù)挖掘子任務(wù),并將所述多個數(shù)據(jù)挖掘子任務(wù)發(fā)送給所述前置服務(wù)器。
步驟204、所述前置服務(wù)器將所述多個數(shù)據(jù)挖掘子任務(wù)分配到多個運算服務(wù)器處進行處理,并接收運算服務(wù)器的任務(wù)反饋信息,并將所述任務(wù)反饋信息發(fā)送給所述第一控制服務(wù)器。
步驟205、所述第一控制服務(wù)器將所述任務(wù)反饋信息實時同步發(fā)送到第二控制服務(wù)器處。
步驟206、所述第二控制服務(wù)器實時監(jiān)控所述第一控制服務(wù)器,在確認所述第一控制服務(wù)器發(fā)生故障時,向所述前置服務(wù)器發(fā)送工作節(jié)點更替請求。
步驟207、所述前置服務(wù)器根據(jù)所述工作節(jié)點更替請求,更新記錄所述第二控制服務(wù)器的網(wǎng)絡(luò)地址,以使得所述第二控制服務(wù)器作為工作節(jié)點。
步驟208、所述第二控制服務(wù)器向各運算服務(wù)器廣播任務(wù)信息收集請求。
步驟209、所述運算服務(wù)器在監(jiān)聽到所述廣播任務(wù)信息收集請求時,向所述前置服務(wù)器反饋任務(wù)情況信息。
步驟210、所述前置服務(wù)器將所述任務(wù)情況信息發(fā)送給所述第二控制服務(wù)器。
步驟211、所述第二控制服務(wù)器對所述任務(wù)情況信息和所述任務(wù)反饋信息進行對比,確定所述任務(wù)情況信息和所述任務(wù)反饋信息的差異信息,并根據(jù)預(yù)先設(shè)置的處理策略,對所述差異信息進行處理。
本發(fā)明實施例提供的一種分布式數(shù)據(jù)挖掘方法,在作為工作節(jié)點的第一控制服務(wù)器發(fā)生故障時,第二控制服務(wù)器可以更替所述第一控制服務(wù)器成為新的工作節(jié)點,從而在完成工作節(jié)點切換后,恢復(fù)整個分布式數(shù)據(jù)挖掘系統(tǒng)的正常工作。當然,當?shù)诙刂品?wù)器發(fā)生故障時,第一控制服務(wù)器也可以更替所述第二控制服務(wù)器,兩個控制服務(wù)器可以實現(xiàn)主從熱備的格局,避免了當前作為主控節(jié)點的JobTracker服務(wù)器一旦出現(xiàn)故障則將導(dǎo)致整個hadoop框架的任務(wù)調(diào)度體系陷入癱瘓,無法完成任務(wù)調(diào)度和處理的問題。
為了使本領(lǐng)域的技術(shù)人員更好的了解本發(fā)明,下面列舉一個更為詳細的實施例,如圖3所示,本發(fā)明實施例提供一種分布式數(shù)據(jù)挖掘方法,包括:
步驟301、用戶終端與一前置服務(wù)器建立通信連接。
步驟302、各前置服務(wù)器獲取前置服務(wù)器組中的其他前置服務(wù)器的運行狀態(tài)信息;在所述其他前置服務(wù)器的運行狀態(tài)為故障狀態(tài)時,接收與其他前置服務(wù)器連接的用戶終端的連接請求,并建立通信連接。
此處,為實現(xiàn)前置服務(wù)器組的負載均衡,本發(fā)明采用ZooKeeper作為分布式應(yīng)用程序協(xié)調(diào)服務(wù),Zookeeper通常由多個節(jié)點(此處為各前置服務(wù)器)組成,每個節(jié)點相互之間通過心跳獲得別人的運行狀態(tài)信息,且每個節(jié)點的內(nèi)存中都保存著全量的數(shù)據(jù),節(jié)點單點故障并不會影響整個集群的服務(wù)能力。在本發(fā)明中,每個前置服務(wù)器作為Zookeeper的一個節(jié)點,當客戶端連接到某個前置服務(wù)器上后,客戶端就會保持著這個連接,并通過這個連接來發(fā)送請求、獲得事件通知,以及發(fā)送心跳,如果被連接的發(fā)生故障,那么客戶端會自動連到另外可用的節(jié)點上,最終組成一個高可用的服務(wù)集群,實現(xiàn)多個分布式并行處理之間的協(xié)同操作。
步驟303、用戶終端向所述前置服務(wù)器發(fā)送數(shù)據(jù)挖掘任務(wù)請求。
步驟304、前置服務(wù)器解析所述數(shù)據(jù)挖掘任務(wù)請求的域名信息,根據(jù)所述數(shù)據(jù)挖掘任務(wù)請求的域名信息將所述數(shù)據(jù)挖掘任務(wù)請求提交到作為工作節(jié)點的第一控制服務(wù)器。
其中,所述前置服務(wù)器記錄有作為工作節(jié)點的第一控制服務(wù)器的網(wǎng)絡(luò)地址。此時,第二控制服務(wù)器作為備用節(jié)點。
步驟305、第一控制服務(wù)器將所述數(shù)據(jù)挖掘任務(wù)請求對應(yīng)的數(shù)據(jù)挖掘任務(wù)進行分解,形成多個數(shù)據(jù)挖掘子任務(wù),并將所述多個數(shù)據(jù)挖掘子任務(wù)發(fā)送給所述前置服務(wù)器。
步驟306、第一控制服務(wù)器在將多個數(shù)據(jù)挖掘子任務(wù)發(fā)送給所述前置服務(wù)器時,向第二控制服務(wù)器發(fā)送數(shù)據(jù)同步信息;所述數(shù)據(jù)同步信息包括數(shù)據(jù)挖掘子任務(wù)的任務(wù)編號和各數(shù)據(jù)挖掘子任務(wù)對應(yīng)的運算服務(wù)器的IP地址。
步驟307、所述前置服務(wù)器將所述多個數(shù)據(jù)挖掘子任務(wù)分配到多個運算服務(wù)器處進行處理。
步驟308、前置服務(wù)器接收運算服務(wù)器的心跳信息,并將所述運算服務(wù)器的心跳信息發(fā)送給所述第一控制服務(wù)器。
其中,所述運算服務(wù)器的心跳信息包括運算服務(wù)器處理數(shù)據(jù)挖掘子任務(wù)的任務(wù)反饋信息和運算服務(wù)器的CPU資源信息。
步驟309、第一控制服務(wù)器可根據(jù)運算服務(wù)器的CPU資源信息,繼續(xù)將一數(shù)據(jù)挖掘子任務(wù)分配給各運算服務(wù)器中CPU資源最大的運算服務(wù)器。
步驟310、第一控制服務(wù)器在接收到運算服務(wù)器的心跳信息后,將運算服務(wù)器的心跳信息實時同步發(fā)送到第二控制服務(wù)器處。
步驟311、第二控制服務(wù)器以一預(yù)設(shè)時間間隔定時向所述第一控制服務(wù)器發(fā)送心跳請求,若連續(xù)n次向所述第一控制服務(wù)器發(fā)送心跳請求后,均沒有收到第一控制服務(wù)器的心跳應(yīng)答信息,則確定所述第一控制服務(wù)器發(fā)生故障,向所述前置服務(wù)器發(fā)送工作節(jié)點更替請求。
其中n為預(yù)先設(shè)置的次數(shù)閾值。
步驟312、所述前置服務(wù)器根據(jù)所述工作節(jié)點更替請求,更新記錄所述第二控制服務(wù)器的網(wǎng)絡(luò)地址,以使得所述第二控制服務(wù)器作為工作節(jié)點。
此時,該前置服務(wù)器需要記錄作為工作節(jié)點的第二控制服務(wù)器的網(wǎng)絡(luò)地址。
步驟313、所述第二控制服務(wù)器向各運算服務(wù)器廣播任務(wù)信息收集請求。
步驟314、所述運算服務(wù)器在監(jiān)聽到所述廣播任務(wù)信息收集請求時,向所述前置服務(wù)器反饋任務(wù)情況信息。
步驟315、所述前置服務(wù)器將所述任務(wù)情況信息發(fā)送給所述第二控制服務(wù)器。
步驟316、所述第二控制服務(wù)器根據(jù)所述任務(wù)情況信息和所述任務(wù)反饋信息,生成兩份任務(wù)清單列表。
所述任務(wù)清單列表包括運算服務(wù)器的IP地址和運算服務(wù)器的CPU資源信息。
步驟317、所述第二控制服務(wù)器根據(jù)所述兩份任務(wù)清單列表,確定差異信息。
在步驟317之后,可以執(zhí)行步驟318、319或者步驟320。
步驟318、若所述差異信息為第一控制服務(wù)器已分配給運算服務(wù)器后由于第一控制服務(wù)器故障,未同步到第二控制服務(wù)器的任務(wù),根據(jù)所述任務(wù)情況信息更新第二控制服務(wù)器的數(shù)據(jù)同步信息。
步驟319、若所述差異信息為第一控制服務(wù)器已分配給運算服務(wù)器,且運算服務(wù)器處理任務(wù)失敗后,由于第一控制服務(wù)器故障,未同步到第二控制服務(wù)器的任務(wù),從所述任務(wù)情況信息中獲取任務(wù)失敗信息,并將所述任務(wù)失敗信息對應(yīng)的數(shù)據(jù)挖掘子任務(wù)重新分配。
步驟320、若所述差異信息為第一控制服務(wù)器尚未分配的數(shù)據(jù)挖掘子任務(wù),將尚未分配的數(shù)據(jù)挖掘子任務(wù)通過前置服務(wù)器分配給運算服務(wù)器處進行處理。
在步驟318、步驟319或者步驟320完成之后,第二控制服務(wù)器作為工作節(jié)點部署完畢,由第二控制服務(wù)器作為工作節(jié)點,返回步驟304繼續(xù)整個流程,此時第二控制服務(wù)器的工作過程與第一控制服務(wù)器相同,后續(xù)的監(jiān)控第二控制服務(wù)器的工作由第一控制服務(wù)器來進行,這樣兩個控制服務(wù)器循環(huán)交替,構(gòu)成了主從熱備的格局。值得說明的是,第一控制服務(wù)器和第二控制服務(wù)器中的“第一”、“第二”僅僅是為了區(qū)別兩個控制服務(wù)器,而兩個控制服務(wù)器的結(jié)構(gòu)和功能基本相同,其中一個作為工作節(jié)點時,另一個作為備用節(jié)點。
本發(fā)明實施例提供的一種分布式數(shù)據(jù)挖掘方法,在作為工作節(jié)點的第一控制服務(wù)器發(fā)生故障時,第二控制服務(wù)器可以更替所述第一控制服務(wù)器成為新的工作節(jié)點,從而在完成工作節(jié)點切換后,恢復(fù)整個分布式數(shù)據(jù)挖掘系統(tǒng)的正常工作。當然,當?shù)诙刂品?wù)器發(fā)生故障時,第一控制服務(wù)器也可以更替所述第二控制服務(wù)器,兩個控制服務(wù)器可以實現(xiàn)主從熱備的格局,避免了當前作為主控節(jié)點的JobTracker服務(wù)器一旦出現(xiàn)故障則將導(dǎo)致整個hadoop框架的任務(wù)調(diào)度體系陷入癱瘓,無法完成任務(wù)調(diào)度和處理的問題。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實施例可提供為方法、系統(tǒng)、或計算機程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器、CD-ROM、光學存儲器等)上實施的計算機程序產(chǎn)品的形式。
本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、設(shè)備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些計算機程序指令也可存儲在能引導(dǎo)計算機或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計算機或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
本發(fā)明中應(yīng)用了具體實施例對本發(fā)明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實施方式及應(yīng)用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。