這篇文章將為大家詳細講解有關MapReduce+HDFS海量數(shù)據(jù)去重的策略有哪些,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
成都創(chuàng)新互聯(lián)長期為1000+客戶提供的網(wǎng)站建設服務,團隊從業(yè)經(jīng)驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為科爾沁企業(yè)提供專業(yè)的網(wǎng)站設計制作、做網(wǎng)站,科爾沁網(wǎng)站改版等技術服務。擁有10余年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
隨著存儲數(shù)據(jù)信息量的飛速增長,越來越多的人開始關注存儲數(shù)據(jù)的縮減方法。數(shù)據(jù)壓縮、單實例存儲和重復數(shù)據(jù)刪除等都是經(jīng)常使用的存儲數(shù)據(jù)縮減技術。
重復數(shù)據(jù)刪除往往是指消除冗余子文件。不同于壓縮,重復數(shù)據(jù)刪除對于數(shù)據(jù)本身并沒有改變,只是消除了相同的數(shù)據(jù)占用的存儲容量。重復數(shù)據(jù)刪除在減少存儲、降低網(wǎng)絡帶寬方面有著顯著的優(yōu)勢,并對擴展性有所幫助。
舉個簡單的例子:在專門為電信運營商定制的呼叫詳單去重應用程序中,我們就可以看到刪除重復數(shù)據(jù)的影子。同樣的,對于包含相同數(shù)據(jù)包的通信網(wǎng)絡,我們可以使用這種技術來進行優(yōu)化。
在存儲架構中,刪除重復數(shù)據(jù)的一些常用的方法包括:哈希、二進制比較和增量差分。在HadoopSphere這篇文章中,將專注于如何利用MapReduce和HDFS來消除重復的數(shù)據(jù)。(下面列出的方法中包括一些學者的實驗方法,因此把術語定義為策略比較合適)。
策略1:只使用HDFS和MapReduce
Owen O’Malley在一個論壇的帖子中建議使用以下方法:
讓你的歷史數(shù)據(jù)按照MD5值進行排序。 運行一個MapReduce的作業(yè),將你的新數(shù)據(jù)按照MD5進行排序。需要注意的是:你要做所有數(shù)據(jù)的整體排序,但因為MD5是在整個密鑰空間中是均勻分布的,排序就變得很容易。
基本上,你挑選一個reduce作業(yè)的數(shù)量(如256),然后取MD5值的前N位數(shù)據(jù)來進行你的reduce作業(yè)。由于這項作業(yè)只處理你的新數(shù)據(jù),這是非??斓摹? 接下來你需要進行一個map-side join,每一個合并的輸入分塊都包含一個MD5值的范圍。RecordReader讀取歷史的和新的數(shù)據(jù)集,并將它們按照一定方式合并。(你可以使用map-side join庫)。你的map將新數(shù)據(jù)和舊數(shù)據(jù)合并。這里僅僅是一個map作業(yè),所以這也非???。
當然,如果新的數(shù)據(jù)足夠小,你可以在每一個map作業(yè)中將其讀入,并且保持新記錄(在RAM中做了排序)在合適的數(shù)量范圍內,這樣就可以在RAM中執(zhí)行合并。這可以讓你避免為新數(shù)據(jù)進行排序的步驟。類似于這種合并的優(yōu)化,正是Pig和Hive中對開發(fā)人員隱藏的大量細節(jié)部分。
策略2:使用HDFS和Hbase
在一篇名為“工程云系統(tǒng)中一種新穎的刪除重復數(shù)據(jù)技術”的論文中,Zhe Sun, Jun Shen, Jianming Young共同提出了一種使用HDFS和Hbase的方法,內容如下:
使用MD5和SHA-1哈希函數(shù)計算文件的哈希值,然后將值傳遞給Hbase
將新的哈希值與現(xiàn)有的值域比較,如果新值已經(jīng)存在于Hbase去重復表中,HDFS會檢查鏈接的數(shù)量,如果數(shù)量不為零時,哈希值對應的計數(shù)器將增加1。如果數(shù)量是零或哈希值在之前的去重復表中不存在,HDFS會要求客戶端上傳文件并更新文件的邏輯路徑。
HDFS將存儲由用戶上傳的源文件,以及相應的鏈接文件,這些鏈接文件是自動生成的。鏈接文件中記錄了源文件的哈希值和源文件的邏輯路徑。
要注意使用這種方法中的一些關鍵點:
文件級的重復數(shù)據(jù)刪除需要保持索引數(shù)量盡可能小,這樣可以有高效的查找效率。
MD5和SHA-1需要結合使用從而避免偶發(fā)性的碰撞。
策略3:使用HDFS,MapReduce和存儲控制器
由Netapp的工程師AshishKathpal、GauravMakkar以及Mathew John三人聯(lián)合,在一篇名為“在后期處理重復數(shù)據(jù)刪除的分布式重復檢測方式”的文章中,提出通過使用HadoopMapReduce的重復檢測機制來替代Netapp原有的重復檢測環(huán)節(jié),文中提到的基于重復檢測的Hadoop工作流包含如下幾個環(huán)節(jié):
將數(shù)據(jù)指紋(Fingerprint)由存儲控制器遷移到HDFS
生成數(shù)據(jù)指紋數(shù)據(jù)庫,并在HDFS上***存儲該數(shù)據(jù)庫
使用MapReduce從數(shù)據(jù)指紋記錄集中篩選出重復記錄,并將去重復后的數(shù)據(jù)指紋表保存回存儲控制器。
數(shù)據(jù)指紋是指存儲系統(tǒng)中文件塊經(jīng)過計算后的哈希索引,通常來說數(shù)據(jù)指紋要比它代表的數(shù)據(jù)塊體積小的多,這樣就可以減少分布式檢測時網(wǎng)絡中的數(shù)據(jù)傳輸量。
策略4:使用Streaming,HDFS,MapReduce
對于Hadoop和Streaming的應用集成,基本上包含兩種可能的場景。以IBM Infosphere Streams和BigInsights集成為例,場景應該是:
1. Streams到Hadoop的流程:通過控制流程,將Hadoop MapReduce模塊作為數(shù)據(jù)流分析的一部分,對于Streams的操作需要對更新的數(shù)據(jù)進行檢查并去重,并可以驗證MapReduce模型的正確性。
眾所周知,在數(shù)據(jù)攝入的時候對數(shù)據(jù)進行去重復是最有效的,因此在Infosphere Streams中對于某個特定時間段或者數(shù)量的記錄會進行去重復,或者識別出記錄的增量部分。接著,經(jīng)過去重的數(shù)據(jù)將會發(fā)送給Hadoop BigInsights用于新模型的建立。
2. Hadoop到Streams的流程:在這種方式中,Hadoop MapReduce用于移除歷史數(shù)據(jù)中的重復數(shù)據(jù),之后MapReduce模型將會更新。MapReduce模型作為Streams中的一部分被集成,針對mid-stream配置一個操作符(operator),從而對傳入的數(shù)據(jù)進行處理。
策略5:結合塊技術使用MapReduce
在萊比錫大學開發(fā)的一個原型工具Dedoop(Deduplication with Hadoop)中,MapReduce應用于大數(shù)據(jù)中的實體解析處理,到目前為止,這個工具囊括了MapReduce在重復數(shù)據(jù)刪除技術中最為成熟的應用方式。
基于實體匹配的分塊是指將輸入數(shù)據(jù)按照類似的數(shù)據(jù)進行語義分塊,并且對于相同塊的實體進行限定。
實體解析處理分成兩個MapReduce作業(yè):分析作業(yè)主要用于統(tǒng)計記錄出現(xiàn)頻率,匹配作業(yè)用于處理負載均衡以及近似度計算。另外,匹配作業(yè)采用“貪婪模式”的負載均衡調控,也就是說匹配任務按照任務處理數(shù)據(jù)大小的降序排列,并做出最小負載的Reduce作業(yè)分配。
Dedoop還采用了有效的技術來避免多余的配對比較。它要求MR程序必須明確定義出哪個Reduce任務在處理哪個配對比較,這樣就無需在多個節(jié)點上進行相同的配對比較。
關于“MapReduce+HDFS海量數(shù)據(jù)去重的策略有哪些”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
網(wǎng)頁名稱:MapReduce+HDFS海量數(shù)據(jù)去重的策略有哪些
URL鏈接:http://www.2m8n56k.cn/article12/johpgc.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導航、定制開發(fā)、網(wǎng)站策劃、虛擬主機、服務器托管、商城網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)