




摘要:該研究探討分布式計(jì)算在大數(shù)據(jù)分析中的應(yīng)用。通過構(gòu)建分布式計(jì)算集群,采用Hadoop和Spark框架對(duì)大規(guī)模數(shù)據(jù)進(jìn)行處理,提出基于Spark的并行挖掘算法,并通過實(shí)驗(yàn)驗(yàn)證其正確性和可靠性。結(jié)果表明,該算法在擴(kuò)展性與容錯(cuò)性上表現(xiàn)良好,為數(shù)據(jù)挖掘和機(jī)器學(xué)習(xí)提供了新機(jī)遇。
關(guān)鍵詞:分布式計(jì)算;大數(shù)據(jù)分析;Hadoop平臺(tái);并行挖掘算法;容錯(cuò)性
中圖分類號(hào):TP311" "文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2025)08-0074-03
開放科學(xué)(資源服務(wù)) 標(biāo)識(shí)碼(OSID)
0 引言
在數(shù)字化轉(zhuǎn)型時(shí)代,數(shù)據(jù)的爆炸式增長(zhǎng)給各行業(yè)帶來了前所未有的機(jī)遇與挑戰(zhàn)。大數(shù)據(jù)的概念不僅限于傳統(tǒng)的結(jié)構(gòu)化數(shù)據(jù),更多的非結(jié)構(gòu)化和半結(jié)構(gòu)化數(shù)據(jù)也紛紛涌現(xiàn)。這些數(shù)據(jù)的特征包括體量大、速度快、種類多和真實(shí)性高等,使得傳統(tǒng)的數(shù)據(jù)處理和分析方法面臨巨大挑戰(zhàn)。分布式計(jì)算指的是將計(jì)算任務(wù)分散到多個(gè)計(jì)算節(jié)點(diǎn)上進(jìn)行并行處理[1]。因此,深入研究分布式計(jì)算的機(jī)制與方法,探索其在大數(shù)據(jù)分析中的應(yīng)用,顯得極為必要。
1 分布式計(jì)算分析
在大數(shù)據(jù)分析方面,許多公司和機(jī)構(gòu)已經(jīng)開始使用分布式計(jì)算工具,如Apache Hadoop平臺(tái)和Apache Spark計(jì)算引擎等,這些工具不僅支持在大規(guī)模數(shù)據(jù)集上進(jìn)行復(fù)雜的數(shù)據(jù)處理任務(wù)[2]。在這個(gè)背景下,本節(jié)將對(duì)Hadoop生態(tài)系統(tǒng)和Spark計(jì)算引擎進(jìn)行詳細(xì)介紹。
1.1 Apache Hadoop平臺(tái)
系統(tǒng)作為一種高效的分布式系統(tǒng)計(jì)算平臺(tái),被廣泛應(yīng)用于解決大規(guī)模數(shù)據(jù)存儲(chǔ)和復(fù)雜分析計(jì)算問題[3]。其核心組成部分涵蓋Hadoop分布式文件系統(tǒng)(Hadoop Distributed File System,HDFS) 、MapReduce編程模型以及分布式資源管理框架(Yet Another Resource Negotiator,YARN) [4]。其系統(tǒng)架構(gòu)如圖1所示。
大數(shù)據(jù)分析采用傳統(tǒng)的主從架構(gòu)(master/slave) ,如圖2所示,其中包括一個(gè)主節(jié)點(diǎn)(NameNode) 和多個(gè)從節(jié)點(diǎn)(DataNode) 。這種設(shè)計(jì)旨在實(shí)現(xiàn)高可靠性和可伸縮性,特別適用于大規(guī)模數(shù)據(jù)的存儲(chǔ)和處理。NameNode的主要任務(wù)包括維護(hù)文件系統(tǒng)的目錄樹、跟蹤文件的塊分布情況、處理客戶端的文件系統(tǒng)操作請(qǐng)求以及管理數(shù)據(jù)塊的復(fù)制和故障恢復(fù) [5]。DataNode負(fù)責(zé)存儲(chǔ)實(shí)際的數(shù)據(jù)塊,管理它們所在節(jié)點(diǎn)上的存儲(chǔ)設(shè)備,并根據(jù)主節(jié)點(diǎn)的指示執(zhí)行數(shù)據(jù)的讀取和寫入操作。每個(gè)數(shù)據(jù)節(jié)點(diǎn)負(fù)責(zé)存儲(chǔ)和維護(hù)數(shù)據(jù)塊的多個(gè)副本,以提高容錯(cuò)性和數(shù)據(jù)可靠性。
1.2 Spark計(jì)算引擎
Spark是一個(gè)專為處理大數(shù)據(jù)而設(shè)計(jì)的通用并行計(jì)算架構(gòu),共包含Spark Core、Spark SQL、Spark Streaming、Spark MLlib以及Spark GraphX等多個(gè)模塊。每個(gè)模塊都針對(duì)不同領(lǐng)域的數(shù)據(jù)處理和分析需求。Spark Core作為核心模塊,主要實(shí)現(xiàn)分布式任務(wù)調(diào)度、內(nèi)存管理和錯(cuò)誤修復(fù)等重要功能。Spark的核心組件如圖3所示。
Spark通過使用彈性分布式數(shù)據(jù)集(Resilient Distributed Datasets,RDD) 、廣播變量以及累加器這三種數(shù)據(jù)結(jié)構(gòu)來實(shí)現(xiàn)高并發(fā)和高吞吐的數(shù)據(jù)處理操作。RDD作為Spark的核心數(shù)據(jù)處理模型,具有將數(shù)據(jù)分區(qū)并存儲(chǔ)在集群不同節(jié)點(diǎn)的能力,并且這些數(shù)據(jù)一經(jīng)創(chuàng)建即不可更改。Spark對(duì)RDD的操作主要包括轉(zhuǎn)換和行動(dòng)兩類,這些操作可以通過SparkCore提供的轉(zhuǎn)換算子和行動(dòng)算子實(shí)現(xiàn)。轉(zhuǎn)換操作是根據(jù)數(shù)據(jù)處理邏輯,將舊RDD轉(zhuǎn)換為新RDD,同時(shí)構(gòu)建出清晰的血緣關(guān)系。這一特性在RDD的容錯(cuò)和恢復(fù)機(jī)制中發(fā)揮著重要作用。值得一提的是,RDD的轉(zhuǎn)換操作具有延遲執(zhí)行的特點(diǎn),即只有在執(zhí)行到RDD行動(dòng)算子時(shí),才會(huì)觸發(fā)實(shí)際的計(jì)算過程。
2 基于Spark的大數(shù)據(jù)分布式計(jì)算并行挖掘算法
針對(duì)數(shù)據(jù)庫的大數(shù)據(jù)分析挖掘算法所存在的MapReduce分布式計(jì)算模型較差等問題,提出基于Spark的并行挖掘(SFUPM-SP) 算法。該算法通過構(gòu)建邏輯搜索樹結(jié)構(gòu),高效地遍歷所有項(xiàng)集,避免重復(fù)或遺漏計(jì)算項(xiàng)集,以便實(shí)施剪枝策略。
2.1 邏輯搜索樹
一般來說,在挖掘過程中,傳統(tǒng)的單機(jī)算法多依賴于列表和投影等數(shù)據(jù)結(jié)構(gòu)來遍歷項(xiàng)集。然而,這些傳統(tǒng)的數(shù)據(jù)結(jié)構(gòu)在某些情況下展現(xiàn)出其固有的局限性,具體如下。
1) 內(nèi)存限制:傳統(tǒng)列表和投影結(jié)構(gòu)因需要將數(shù)據(jù)完整加載至內(nèi)存,可能導(dǎo)致內(nèi)存溢出,影響系統(tǒng)性能列表和投影結(jié)構(gòu)。
2) 性能效率限制:列表在進(jìn)行頻繁的元素插入或刪除操作時(shí),效率可能會(huì)受到影響,這主要是由于需要調(diào)整內(nèi)部元素的順序以維護(hù)數(shù)據(jù)結(jié)構(gòu)的一致性,導(dǎo)致操作的時(shí)間復(fù)雜度增加。
3) 分布式處理的限制:在大規(guī)模數(shù)據(jù)處理中,分布式系統(tǒng)變得至關(guān)重要。分布式系統(tǒng)可以將數(shù)據(jù)集分割成小塊并在多個(gè)計(jì)算節(jié)點(diǎn)上并行處理。。
2.2 并行算法SFUPM-SP設(shè)計(jì)
SFUPM-SP算法是一種利用Spark框架實(shí)現(xiàn)的分布式運(yùn)行算法。在算法初始階段,原始數(shù)據(jù)集被劃分為數(shù)據(jù)塊并存儲(chǔ)在HDFS中。隨后,通過Spark Core提供的應(yīng)用程序編程接口(Application Programming Interface,API) 將這些數(shù)據(jù)塊轉(zhuǎn)化為初始RDD。然后,算法利用轉(zhuǎn)換和行動(dòng)兩種算子對(duì)數(shù)據(jù)進(jìn)行處理,同時(shí)執(zhí)行RDD的轉(zhuǎn)換操作,以滿足特定的計(jì)算需求。
1) 輸入部分:SFUPM-SP算法要求輸入一個(gè)存儲(chǔ)于分布式文件系統(tǒng)HDFS中的公開事務(wù)數(shù)據(jù)庫[Dp]以及一個(gè)與之相對(duì)應(yīng)的利潤(rùn)表。
2) 預(yù)處理階段:在該階段,首先使用SparkContext對(duì)象所提供的textFile方法從HDFS路徑中讀取數(shù)據(jù)集,并進(jìn)行分區(qū)存儲(chǔ),創(chuàng)建初始HDFS-RDD。接下來,通過Spark提供的flatMap算子對(duì)每一行進(jìn)行操作,提取出每個(gè)項(xiàng)的名稱、事務(wù)效用和效用,構(gòu)建一個(gè)包含三元組的ListBuffer。隨后,利用reduceByKey算子對(duì)具有相同鍵的元素進(jìn)行歸約,通過累加操作得到相同鍵的總和、數(shù)量和總數(shù)。然后,使用map算子將歸約后的結(jié)果映射為一個(gè)新的RDD,包含項(xiàng)集、頻率和事務(wù)加權(quán)效用三項(xiàng)。
3) 挖掘階段:在本階段,算法要計(jì)算每個(gè)項(xiàng)集的效用、頻率、子樹效用和局部效用,并將結(jié)果輸出到HDFS中。這個(gè)階段涵蓋兩個(gè)剪枝策略的使用。整個(gè)過程是迭代進(jìn)行的,直到不再生成候選集,迭代才會(huì)終止。在每次迭代中,從迭代文件中提取項(xiàng)集并使用數(shù)組進(jìn)行判斷,將符合條件的項(xiàng)集放入潛在的天際線頻繁-效用模式池中。最終,從池中生成頻繁-效用模式。
3 實(shí)驗(yàn)和算法評(píng)估
本節(jié)將通過對(duì)比實(shí)驗(yàn)來驗(yàn)證和分析所提出的SFUPM-SP算法的計(jì)算性能,并將其與SFUI-UF算法以及SFUP-MR算法進(jìn)行對(duì)比。SFUI-UF算法是目前最先進(jìn)的挖掘天際線頻繁-效用模式的單機(jī)算法,它利用效用列表等結(jié)構(gòu)對(duì)天際線模式進(jìn)行挖掘,并從頻率、TWU和效用本身三個(gè)角度對(duì)效用進(jìn)行過濾。SFUP-MR算法是基于MapReduce框架的天際線頻繁-效用模式并行挖掘算法。
3.1 實(shí)驗(yàn)環(huán)境和數(shù)據(jù)集
SFUPM-SP算法是采用Scala語言開發(fā)的,而SFUP-MR算法和SFUI-UF算法則都是使用Java語言編寫的。本實(shí)驗(yàn)構(gòu)建一個(gè)由5臺(tái)主機(jī)組成的集群系統(tǒng),這些機(jī)器通過局域網(wǎng)交換機(jī)實(shí)現(xiàn)互聯(lián)。在集群中,一臺(tái)主機(jī)作為主節(jié)點(diǎn),負(fù)責(zé)監(jiān)控和調(diào)配集群的運(yùn)作;其余四臺(tái)主機(jī)則作為工作節(jié)點(diǎn),協(xié)同合作以處理分布式并行計(jì)算任務(wù)。為了更好地模擬真實(shí)的應(yīng)用環(huán)境,實(shí)驗(yàn)選擇在SparkonYARN中使用yarn-cluster模式進(jìn)行Spark程序的部署。這種部署模式允許Spark與YARN資源管理器進(jìn)行集成,以確保集群高效協(xié)同工作。本實(shí)驗(yàn)共選取真實(shí)數(shù)據(jù)集和合成數(shù)據(jù)集兩種類型的數(shù)據(jù)集。數(shù)據(jù)集的主要特征如表1所示。
3.2 實(shí)驗(yàn)結(jié)果分析
如圖4所示,橫坐標(biāo)選取四個(gè)值(30M、80M、130M、180M) 作為中等規(guī)模數(shù)據(jù)集的大小。實(shí)驗(yàn)結(jié)果表明,在大部分?jǐn)?shù)據(jù)集上,單機(jī)算法的運(yùn)行時(shí)間仍然短于兩個(gè)并行算法。然而,在Mushroom數(shù)據(jù)集的規(guī)模為180M時(shí),單機(jī)算法出現(xiàn)“內(nèi)存溢出”的現(xiàn)象。這主要是因?yàn)楹A繑?shù)據(jù)導(dǎo)致程序試圖分配的內(nèi)存超過系統(tǒng)的可用物理內(nèi)存限制。處理如此大規(guī)模的數(shù)據(jù)集,特別是在資源有限的單機(jī)環(huán)境中,可能會(huì)使系統(tǒng)無法有效地管理和存儲(chǔ)所有的數(shù)據(jù),最終導(dǎo)致內(nèi)存溢出。
4 結(jié)論
本研究通過系統(tǒng)的理論分析和實(shí)證研究,揭示分布式計(jì)算在大數(shù)據(jù)分析中的重要作用及應(yīng)用前景。通過探索不僅為大數(shù)據(jù)分析領(lǐng)域的研究和實(shí)踐提供新思路和方法,也為分布式計(jì)算技術(shù)在實(shí)際應(yīng)用中的推廣和應(yīng)用提供有益的參考和借鑒。
參考文獻(xiàn):
[1] 周佳佳,文英,楊光輝,等.基于分布式計(jì)算總線的計(jì)費(fèi)系統(tǒng)實(shí)踐[J].電信工程技術(shù)與標(biāo)準(zhǔn)化,2024,37(8):74-78.
[2] 秦靜,高月玖.智能邊緣計(jì)算與無線通信融合的關(guān)鍵技術(shù)與應(yīng)用[J].數(shù)字通信世界,2024(7):104-106.
[3] 史超,蔡源浩,陳超,等.基于MPI、MapReduce和OpenMP混合編程的高分三號(hào)數(shù)據(jù)分布式并行轉(zhuǎn)換算法[J].科技資訊,2024,22(13):17-20.
[4] 盛建軍.一種基于分布式計(jì)算的網(wǎng)絡(luò)空間拓?fù)涿枥L方法[J].桂林航天工業(yè)學(xué)院學(xué)報(bào),2024,29(3):433-438,445.
[5] 袁澤文,周國(guó)成,周勝潔,等.分布式存儲(chǔ)與計(jì)算方法在水利地理空間大數(shù)據(jù)中的應(yīng)用[J].測(cè)繪與空間地理信息,2024,47(7):10-13.
【通聯(lián)編輯:梁書】