導航:首頁 > 源碼編譯 > 相似文件演算法

相似文件演算法

發布時間:2022-06-21 00:54:21

Ⅰ 如何用演算法找出兩個文件中是否具有雷同內容

我覺得應該會有一個集合,保存一下每次遍歷的字元串,如果有超過重復5個字以上的,就記錄下來,然後接著進行搜索,如果隔了幾個字還有重復的,就接著寫,沒寫過這樣的演算法.

Ⅱ 什麼是最快的哈希演算法來檢查兩個文件是一樣的嗎

該哈希演算法為一個文件生成一個小的二進制「指紋」,從統計學的角度來看,不同的文件不可能生成相同的哈希碼
要生成一個哈希碼,必須首先創建一個HashAlgorithm對象,通過HashAlgorithm.Create方法來完成。然後調用
HashAlgorithm.ComputeHash方法,它會返回一個存儲哈希碼的位元組數組,再使用BitConverter.Tostring()將其
裝換為字元串進行比較。
源碼如下:復制代碼代碼如下:public static bool isValidFileContent(string filePath1, string filePath2){//創建一個哈希演算法對象
using (HashAlgorithm hash = HashAlgorithm.Create()){using (FileStream file1 = new FileStream(filePath1, FileMode.Open),file2=new FileStream(filePath2,FileMode.Open)){byte[] hashByte1 = hash.ComputeHash(file1);//哈希演算法根據文本得到哈希碼的位元組數組
byte[] hashByte2 = hash.ComputeHash(file2);
string str1 = BitConverter.ToString(hashByte1);//將位元組數組裝換為字元串
string str2 = BitConverter.ToString(hashByte2);
return (str1==str2);//比較哈希碼}}}使用該函數的主函數復制代碼代碼如下:static void Main(string[] args){string filePath1 = @"f:/1.txt";
string filePath2 = @"f:/2.txt";
bool valid=isValidFileContent(filePath1, filePath2);

Ⅲ 輸入文件名,統計文件相似度

我有程序 但是與你這個只能是接近。我的沒有保存目錄中 可以讀取文件名 使用的是餘弦演算法計算相似度。中間涉及去除停用詞 文本特徵選擇 加權 。代碼比較長 給你一些基本的。我的郵箱[email protected]
void main()
{
string line,li,word;
set<string> stop; //定義容器 存放停用詞表內容
ifstream open("哈工大停用詞表.txt");//打開文件 哈工大停用詞表
//int j=0;

while(getline(open,line)) //獲取每行的停用詞
{
//cout<<j++<<endl;
stop.insert(line);//向 stop中插入line
這個是去除停用詞部分代碼
餘弦演算法如下
void main()
{
ofstream write("餘弦相似度結果.txt");
string line;
ifstream open("加權後的文本.txt");
int n=0;
int m=0;
string word;
map<int, double> length;//每行長度 用於餘弦計算
map<int,map<int,double> >dp;//倒排索引
while(getline(open,line))
{

n++;//行
istringstream pp(line);
double cd_word_count=0;
while(pp >> word)
{

string tenum1=word.substr(0,word.find(":"));//獲取
string weight1=word.substr(word.find(":")+1);
int tenum=atoi(tenum1.c_str());//定義為int
double weight=atof(weight1.c_str());
dp[tenum][n]=weight;//插入倒排索引容器

double cd_word=0; //計算行長度
cd_word=weight*weight;
cd_word_count=cd_word_count+cd_word;
}

double line_length=sqrt(cd_word_count);
length[n]=line_length;//行長結果

}
open.close();
部分代碼 看你的加分了
中間特徵選擇 加權 沒有給你 另外 我這還有其他演算法計算的相似度 (BM25) 使用的方法是C++。也可以是C語言

Ⅳ 2個超大文件利用什麼演算法能很快的找出他們相同的行

字元串hash+排序
將每一行hash成一個數字,然後排序,相同行排序後會在一起,檢測是否屬於兩個不同文件

Ⅳ 怎樣刪除電腦中的重復文件

1.DoubleKiller(重復文件的剋星) v1.6.exe
2.你可以使用搜索功能 直接搜索你要刪除的文件名
打開我的電腦 ,然後按F3 輸入你要搜索的文件名
然後把搜索到的全部刪除就可以了
3.下載Toolbox工具。自動掃描全盤的重復文件,空文件, 自定義刪除。

4.30秒清除電腦系統垃圾
在Windows在安裝和使用過程中都會產生相當多的LJ文件,包括臨時文件(如:*.tmp、*._mp)日誌文件(*.log)、臨時幫助文件(*.gid)、磁碟檢查文件(*.chk)、臨時備份文件(如:*.old、*.bak)以及其他臨時文件。特別是IE的臨時文件「Temporary Internet Files」,其中的緩存文件有時會佔用上百MB的磁碟空間。這些LJ文件不僅僅浪費了磁碟空間,還會使系統運行慢如蝸牛。方法如下:

新建一個「記事本」,把下面的字復制進去,點「另存為」,把文件名定為「清除系統LJ.bat」就完成,後綴名一定要是.bat,好,LJ清除器就製作了!然後雙擊它就能很快地清理LJ文件。

內容如下:

@echo off
echo 正在清除系統LJ文件,請稍等......
del /f /s /q %systemdrive%\*.tmp
del /f /s /q %systemdrive%\*._mp
del /f /s /q %systemdrive%\*.log
del /f /s /q %systemdrive%\*.gid
del /f /s /q %systemdrive%\*.chk
del /f /s /q %systemdrive%\*.old
del /f /s /q %systemdrive%\recycled\*.*
del /f /s /q %windir%\*.bak
del /f /s /q %windir%\prefetch\*.*
rd /s /q %windir%\temp & md %windir%\temp
del /f /q %userprofile%\cookies\*.*
del /f /q %userprofile%\recent\*.*
del /f /s /q "%userprofile%\Local Settings\Temporary Internet Files\*.*"
del /f /s /q "%userprofile%\Local Settings\Temp\*.*"
del /f /s /q "%userprofile%\recent\*.*"
echo 清除系統LJ完成!
echo. & pause

操作辦法:以後只要雙擊運行該文件,當屏幕提示「清除系統LJ完成!就是清楚完畢(呵呵,LJ就是垃圾)

我建議用第四個,很好用,

Ⅵ 音頻比較相似度,將兩個PCM文件通過傅里葉變化處理好得到的兩組數據。如何比較相似度比較靠譜

相似度有多種:

1. 在BIT級比較兩個數字文件的數碼是否一致。這個一般用於比較兩個文件是否是同樣一個文件,除此之外意義不大。

2. 檢測一個文件是否是另外一個文件在時間上的延遲,允許兩個文件的音量不同。這個相似度測量可用歸一化的互相關函數來檢測,其峰值越接近1,越相似。注意此法很大程度上是檢測時域波形的相似度,而非頻域和時頻域的相似度,更非聽感的相似度。因為人耳對相位不敏感,很多波形很不相似的聲音聽起來卻是相似的。

另外,互相關函數與相干函數是不同的,相干函數用於檢測輸出信號是否是輸入信號經過一個線性時不變系統後得到的。這個線性時不變系統的噪音越大,非線性失真越大,相干函數值越小於1,但經過一個含嚴重的線性失真的線性時不變系統後,即使沒有雜訊和非線性失真,輸出信號也可能與輸入信號極不相似。因此用相干函數檢測相似度不靠譜。

3. 聽感上的相似度需要做時頻分析,並結合心理聲學知識。可對比二者在MFCC特徵向量上的差距,進而算得相似度。可參考免費軟體Sound-Similar Free的做法。

java比較2個文件是否是相同的文件,是一個一個位元組比較還是計算MD5比較好啊

不同內容得出相同MD5值,雖然概率低,但總是不放心。如果在已知文件編碼范圍的條件下,找到MD5絕對區分長度范圍(即:該范圍內取樣內容的MD5相同的,內容保證相同;絕不存在不同內容得出相同MD5值的現象),那麼,可按合理的長度分片、按一定順序遍歷整個文件(屬性信息、頭部、尾部、同步隨機點、其他),比較MD5,一旦有異立即判定文件不同,終止比較。這種分片取樣比較MD5的思路可能快於逐位元組比較也絕對可信

要確保 100%正確就必須校驗全文,通過以上思路來比較,即是。
(註:

其他據說相對於MD5來講不易碰撞(即不同內容得出相同MD5值的概率可能更低)的演算法推薦:起碼 SHA1 ,最好 SHA256、 SHA512、MD5+CRC32、HMAC,或者幾種不同類型演算法的同步進行。

在精通演算法的情況下,將這里推薦的演算法取代上文中提到的MD5來考量,能擴大絕對區分長度范圍,可能更方便更快的比較。

但是又有這樣的考慮:逐位元組比較的演算法最簡單,演算法弄復雜了反而會增加額余的時間;逐位元組比較的演算法也可以放到上文中來考量,進行同步取樣和各種遍歷的順序與方式,說不定,在保證100%的可信度的條件下,逐字比較反而最快呢?
我覺得時間的耗費關鍵處在於,所有的演算法,都要將兩個位於不同區域或載體的文件的同位區域收集到一起進行比較,這個收集花費時間Ta(i),與取樣長度、存儲區域或載體等相關;{如果要將文件取很大一部或全部讀入內存,然後再逐一集中比較,則會減小以上的Ta(i),而增加一個額外讀入的時間Tc(i)*次數M(i)}。比較的次數大致為N(i);而如果在一個文件中順序讀取一個區域並且計算它的某個整體評定值,這個花費的時間為Tb(i),與取樣長度、計算程序、設備性能等相關。

總體的比較時間大致是Ta(i)*N(i)*Tb(i)+{Tc(i)*M(i)}
逐位元組比較,其中Tb(i)、Ta(i)都是最短的,但是N(i)最大,

總之,可以設計不同的演算法,通過實際環境和文件的檢測,來決定採用何種演算法。


外一則:
兩個取樣內容, MD5等演算法的計算值 不同,則內容一定不同; 計算值相同,則 內容可能相同,但可能性是否達到100%,內容相同的概率是多少,根據編碼范圍、演算法來確定。如果是比較一個文件和許多其他文件是否相同,並且提前知道其他文件的 MD5 值,可先比較 MD5 值可以大大提高文件比較的速度。

Ⅷ 我做了個相似性的演算法,要與資料庫上百萬比對,其他一些網站都用了Hadoop分布式,知網也是這樣的嗎

引言

Hadoop分布式文件系統(HDFS)被設計成適合運行在通用硬體(commodity hardware)上的分布式文件系統。它和現有的分布式文件系統有很多共同點。但同時,它和其他的分布式文件系統的區別也是很明顯的。HDFS是一個高度容錯性的系統,適合部署在廉價的機器上。HDFS能提供高吞吐量的數據訪問,非常適合大規模數據集上的應用。HDFS放寬了一部分POSIX約束,來實現流式讀取文件系統數據的目的。HDFS在最開始是作為Apache Nutch搜索引擎項目的基礎架構而開發的。HDFS是Apache Hadoop Core項目的一部分。這個項目的地址是http://hadoop.apache.org/core/。

前提和設計目標

硬體錯誤

硬體錯誤是常態而不是異常。HDFS可能由成百上千的伺服器所構成,每個伺服器上存儲著文件系統的部分數據。我們面對的現實是構成系統的組件數目是巨大的,而且任一組件都有可能失效,這意味著總是有一部分HDFS的組件是不工作的。因此錯誤檢測和快速、自動的恢復是HDFS最核心的架構目標。

流式數據訪問

運行在HDFS上的應用和普通的應用不同,需要流式訪問它們的數據集。HDFS的設計中更多的考慮到了數據批處理,而不是用戶交互處理。比之數據訪問的低延遲問題,更關鍵的在於數據訪問的高吞吐量。POSIX標准設置的很多硬性約束對HDFS應用系統不是必需的。為了提高數據的吞吐量,在一些關鍵方面對POSIX的語義做了一些修改。

大規模數據集

運行在HDFS上的應用具有很大的數據集。HDFS上的一個典型文件大小一般都在G位元組至T位元組。因此,HDFS被調節以支持大文件存儲。它應該能提供整體上高的數據傳輸帶寬,能在一個集群里擴展到數百個節點。一個單一的HDFS實例應該能支撐數以千萬計的文件。

簡單的一致性模型

HDFS應用需要一個「一次寫入多次讀取」的文件訪問模型。一個文件經過創建、寫入和關閉之後就不需要改變。這一假設簡化了數據一致性問題,並且使高吞吐量的數據訪問成為可能。Map/Rece應用或者網路爬蟲應用都非常適合這個模型。目前還有計劃在將來擴充這個模型,使之支持文件的附加寫操作。

「移動計算比移動數據更劃算」

一個應用請求的計算,離它操作的數據越近就越高效,在數據達到海量級別的時候更是如此。因為這樣就能降低網路阻塞的影響,提高系統數據的吞吐量。將計算移動到數據附近,比之將數據移動到應用所在顯然更好。HDFS為應用提供了將它們自己移動到數據附近的介面。

異構軟硬體平台間的可移植性

HDFS在設計的時候就考慮到平台的可移植性。這種特性方便了HDFS作為大規模數據應用平台的推廣。

Namenode 和 Datanode

HDFS採用master/slave架構。一個HDFS集群是由一個Namenode和一定數目的Datanodes組成。Namenode是一個中心伺服器,負責管理文件系統的名字空間(namespace)以及客戶端對文件的訪問。集群中的Datanode一般是一個節點一個,負責管理它所在節點上的存儲。HDFS暴露了文件系統的名字空間,用戶能夠以文件的形式在上面存儲數據。從內部看,一個文件其實被分成一個或多個數據塊,這些塊存儲在一組Datanode上。Namenode執行文件系統的名字空間操作,比如打開、關閉、重命名文件或目錄。它也負責確定數據塊到具體Datanode節點的映射。Datanode負責處理文件系統客戶端的讀寫請求。在Namenode的統一調度下進行數據塊的創建、刪除和復制。

Namenode和Datanode被設計成可以在普通的商用機器上運行。這些機器一般運行著GNU/Linux操作系統(OS)。HDFS採用Java語言開發,因此任何支持Java的機器都可以部署Namenode或Datanode。由於採用了可移植性極強的Java語言,使得HDFS可以部署到多種類型的機器上。一個典型的部署場景是一台機器上只運行一個Namenode實例,而集群中的其它機器分別運行一個Datanode實例。這種架構並不排斥在一台機器上運行多個Datanode,只不過這樣的情況比較少見。

集群中單一Namenode的結構大大簡化了系統的架構。Namenode是所有HDFS元數據的仲裁者和管理者,這樣,用戶數據永遠不會流過Namenode。

文件系統的名字空間 (namespace)

HDFS支持傳統的層次型文件組織結構。用戶或者應用程序可以創建目錄,然後將文件保存在這些目錄里。文件系統名字空間的層次結構和大多數現有的文件系統類似:用戶可以創建、刪除、移動或重命名文件。當前,HDFS不支持用戶磁碟配額和訪問許可權控制,也不支持硬鏈接和軟鏈接。但是HDFS架構並不妨礙實現這些特性。

Namenode負責維護文件系統的名字空間,任何對文件系統名字空間或屬性的修改都將被Namenode記錄下來。應用程序可以設置HDFS保存的文件的副本數目。文件副本的數目稱為文件的副本系數,這個信息也是由Namenode保存的。

數據復制

HDFS被設計成能夠在一個大集群中跨機器可靠地存儲超大文件。它將每個文件存儲成一系列的數據塊,除了最後一個,所有的數據塊都是同樣大小的。為了容錯,文件的所有數據塊都會有副本。每個文件的數據塊大小和副本系數都是可配置的。應用程序可以指定某個文件的副本數目。副本系數可以在文件創建的時候指定,也可以在之後改變。HDFS中的文件都是一次性寫入的,並且嚴格要求在任何時候只能有一個寫入者。

Namenode全權管理數據塊的復制,它周期性地從集群中的每個Datanode接收心跳信號和塊狀態報告(Blockreport)。接收到心跳信號意味著該Datanode節點工作正常。塊狀態報告包含了一個該Datanode上所有數據塊的列表。

副本存放: 最最開始的一步

副本的存放是HDFS可靠性和性能的關鍵。優化的副本存放策略是HDFS區分於其他大部分分布式文件系統的重要特性。這種特性需要做大量的調優,並需要經驗的積累。HDFS採用一種稱為機架感知(rack-aware)的策略來改進數據的可靠性、可用性和網路帶寬的利用率。目前實現的副本存放策略只是在這個方向上的第一步。實現這個策略的短期目標是驗證它在生產環境下的有效性,觀察它的行為,為實現更先進的策略打下測試和研究的基礎。

大型HDFS實例一般運行在跨越多個機架的計算機組成的集群上,不同機架上的兩台機器之間的通訊需要經過交換機。在大多數情況下,同一個機架內的兩台機器間的帶寬會比不同機架的兩台機器間的帶寬大。

通過一個機架感知的過程,Namenode可以確定每個Datanode所屬的機架id。一個簡單但沒有優化的策略就是將副本存放在不同的機架上。這樣可以有效防止當整個機架失效時數據的丟失,並且允許讀數據的時候充分利用多個機架的帶寬。這種策略設置可以將副本均勻分布在集群中,有利於當組件失效情況下的負載均衡。但是,因為這種策略的一個寫操作需要傳輸數據塊到多個機架,這增加了寫的代價。

在大多數情況下,副本系數是3,HDFS的存放策略是將一個副本存放在本地機架的節點上,一個副本放在同一機架的另一個節點上,最後一個副本放在不同機架的節點上。這種策略減少了機架間的數據傳輸,這就提高了寫操作的效率。機架的錯誤遠遠比節點的錯誤少,所以這個策略不會影響到數據的可靠性和可用性。於此同時,因為數據塊只放在兩個(不是三個)不同的機架上,所以此策略減少了讀取數據時需要的網路傳輸總帶寬。在這種策略下,副本並不是均勻分布在不同的機架上。三分之一的副本在一個節點上,三分之二的副本在一個機架上,其他副本均勻分布在剩下的機架中,這一策略在不損害數據可靠性和讀取性能的情況下改進了寫的性能。

當前,這里介紹的默認副本存放策略正在開發的過程中。

副本選擇

為了降低整體的帶寬消耗和讀取延時,HDFS會盡量讓讀取程序讀取離它最近的副本。如果在讀取程序的同一個機架上有一個副本,那麼就讀取該副本。如果一個HDFS集群跨越多個數據中心,那麼客戶端也將首先讀本地數據中心的副本。

安全模式

Namenode啟動後會進入一個稱為安全模式的特殊狀態。處於安全模式的Namenode是不會進行數據塊的復制的。Namenode從所有的 Datanode接收心跳信號和塊狀態報告。塊狀態報告包括了某個Datanode所有的數據塊列表。每個數據塊都有一個指定的最小副本數。當Namenode檢測確認某個數據塊的副本數目達到這個最小值,那麼該數據塊就會被認為是副本安全(safely replicated)的;在一定百分比(這個參數可配置)的數據塊被Namenode檢測確認是安全之後(加上一個額外的30秒等待時間),Namenode將退出安全模式狀態。接下來它會確定還有哪些數據塊的副本沒有達到指定數目,並將這些數據塊復制到其他Datanode上。

文件系統元數據的持久化

Namenode上保存著HDFS的名字空間。對於任何對文件系統元數據產生修改的操作,Namenode都會使用一種稱為EditLog的事務日誌記錄下來。例如,在HDFS中創建一個文件,Namenode就會在Editlog中插入一條記錄來表示;同樣地,修改文件的副本系數也將往Editlog插入一條記錄。Namenode在本地操作系統的文件系統中存儲這個Editlog。整個文件系統的名字空間,包括數據塊到文件的映射、文件的屬性等,都存儲在一個稱為FsImage的文件中,這個文件也是放在Namenode所在的本地文件系統上。

Namenode在內存中保存著整個文件系統的名字空間和文件數據塊映射(Blockmap)的映像。這個關鍵的元數據結構設計得很緊湊,因而一個有4G內存的Namenode足夠支撐大量的文件和目錄。當Namenode啟動時,它從硬碟中讀取Editlog和FsImage,將所有Editlog中的事務作用在內存中的FsImage上,並將這個新版本的FsImage從內存中保存到本地磁碟上,然後刪除舊的Editlog,因為這個舊的Editlog的事務都已經作用在FsImage上了。這個過程稱為一個檢查點(checkpoint)。在當前實現中,檢查點只發生在Namenode啟動時,在不久的將來將實現支持周期性的檢查點。

Datanode將HDFS數據以文件的形式存儲在本地的文件系統中,它並不知道有關HDFS文件的信息。它把每個HDFS數據塊存儲在本地文件系統的一個單獨的文件中。Datanode並不在同一個目錄創建所有的文件,實際上,它用試探的方法來確定每個目錄的最佳文件數目,並且在適當的時候創建子目錄。在同一個目錄中創建所有的本地文件並不是最優的選擇,這是因為本地文件系統可能無法高效地在單個目錄中支持大量的文件。當一個Datanode啟動時,它會掃描本地文件系統,產生一個這些本地文件對應的所有HDFS數據塊的列表,然後作為報告發送到Namenode,這個報告就是塊狀態報告。

通訊協議

所有的HDFS通訊協議都是建立在TCP/IP協議之上。客戶端通過一個可配置的TCP埠連接到Namenode,通過ClientProtocol協議與Namenode交互。而Datanode使用DatanodeProtocol協議與Namenode交互。一個遠程過程調用(RPC)模型被抽象出來封裝ClientProtocol和Datanodeprotocol協議。在設計上,Namenode不會主動發起RPC,而是響應來自客戶端或 Datanode 的RPC請求。

健壯性

HDFS的主要目標就是即使在出錯的情況下也要保證數據存儲的可靠性。常見的三種出錯情況是:Namenode出錯, Datanode出錯和網路割裂(network partitions)。

磁碟數據錯誤,心跳檢測和重新復制

每個Datanode節點周期性地向Namenode發送心跳信號。網路割裂可能導致一部分Datanode跟Namenode失去聯系。Namenode通過心跳信號的缺失來檢測這一情況,並將這些近期不再發送心跳信號Datanode標記為宕機,不會再將新的IO請求發給它們。任何存儲在宕機Datanode上的數據將不再有效。Datanode的宕機可能會引起一些數據塊的副本系數低於指定值,Namenode不斷地檢測這些需要復制的數據塊,一旦發現就啟動復制操作。在下列情況下,可能需要重新復制:某個Datanode節點失效,某個副本遭到損壞,Datanode上的硬碟錯誤,或者文件的副本系數增大。

集群均衡

HDFS的架構支持數據均衡策略。如果某個Datanode節點上的空閑空間低於特定的臨界點,按照均衡策略系統就會自動地將數據從這個Datanode移動到其他空閑的Datanode。當對某個文件的請求突然增加,那麼也可能啟動一個計劃創建該文件新的副本,並且同時重新平衡集群中的其他數據。這些均衡策略目前還沒有實現。

數據完整性

從某個Datanode獲取的數據塊有可能是損壞的,損壞可能是由Datanode的存儲設備錯誤、網路錯誤或者軟體bug造成的。HDFS客戶端軟體實現了對HDFS文件內容的校驗和(checksum)檢查。當客戶端創建一個新的HDFS文件,會計算這個文件每個數據塊的校驗和,並將校驗和作為一個單獨的隱藏文件保存在同一個HDFS名字空間下。當客戶端獲取文件內容後,它會檢驗從Datanode獲取的數據跟相應的校驗和文件中的校驗和是否匹配,如果不匹配,客戶端可以選擇從其他Datanode獲取該數據塊的副本。

元數據磁碟錯誤

FsImage和Editlog是HDFS的核心數據結構。如果這些文件損壞了,整個HDFS實例都將失效。因而,Namenode可以配置成支持維護多個FsImage和Editlog的副本。任何對FsImage或者Editlog的修改,都將同步到它們的副本上。這種多副本的同步操作可能會降低Namenode每秒處理的名字空間事務數量。然而這個代價是可以接受的,因為即使HDFS的應用是數據密集的,它們也非元數據密集的。當Namenode重啟的時候,它會選取最近的完整的FsImage和Editlog來使用。

Namenode是HDFS集群中的單點故障(single point of failure)所在。如果Namenode機器故障,是需要手工干預的。目前,自動重啟或在另一台機器上做Namenode故障轉移的功能還沒實現。

快照

快照支持某一特定時刻的數據的復制備份。利用快照,可以讓HDFS在數據損壞時恢復到過去一個已知正確的時間點。HDFS目前還不支持快照功能,但計劃在將來的版本進行支持。

數據組織

數據塊

HDFS被設計成支持大文件,適用HDFS的是那些需要處理大規模的數據集的應用。這些應用都是只寫入數據一次,但卻讀取一次或多次,並且讀取速度應能滿足流式讀取的需要。HDFS支持文件的「一次寫入多次讀取」語義。一個典型的數據塊大小是64MB。因而,HDFS中的文件總是按照64M被切分成不同的塊,每個塊盡可能地存儲於不同的Datanode中。

Staging

客戶端創建文件的請求其實並沒有立即發送給Namenode,事實上,在剛開始階段HDFS客戶端會先將文件數據緩存到本地的一個臨時文件。應用程序的寫操作被透明地重定向到這個臨時文件。當這個臨時文件累積的數據量超過一個數據塊的大小,客戶端才會聯系Namenode。Namenode將文件名插入文件系統的層次結構中,並且分配一個數據塊給它。然後返回Datanode的標識符和目標數據塊給客戶端。接著客戶端將這塊數據從本地臨時文件上傳到指定的Datanode上。當文件關閉時,在臨時文件中剩餘的沒有上傳的數據也會傳輸到指定的Datanode上。然後客戶端告訴Namenode文件已經關閉。此時Namenode才將文件創建操作提交到日誌里進行存儲。如果Namenode在文件關閉前宕機了,則該文件將丟失。

上述方法是對在HDFS上運行的目標應用進行認真考慮後得到的結果。這些應用需要進行文件的流式寫入。如果不採用客戶端緩存,由於網路速度和網路堵塞會對吞估量造成比較大的影響。這種方法並不是沒有先例的,早期的文件系統,比如AFS,就用客戶端緩存來提高性能。為了達到更高的數據上傳效率,已經放鬆了POSIX標準的要求。

流水線復制

Ⅸ Java中File相似的方法

Windows的x命令
使用java的File類,使用遞歸演算法遍歷文件夾及其所有層的子文件夾,這種寫法非常繁瑣且效率不高,不推薦使用,Windows的x命令可以根據所寫的代碼快速將需要拷貝的文件進行拷貝並且顯示拷貝進度。

Ⅹ 在網路帶寬有限的情況下,如何判斷兩個文件的數據是否相同演算法

我說個演算法你看是否可行讀出資料庫數據按id順序依次遍歷設置一個數字函數IDTEMP,用來記錄有問題的id設置一個數字函數i從1開始遍歷資料庫的id欄位,初始將IDTEMP=i,判斷id=i和id=i+1的類型是否相同,如果相同,i=+1,然後重復上面動作如果id=i和id=i+1的類型不同,IDTEMP不變,同時繼續比較i+1和i+2的類型,如果仍然不同,顯示IDTEMP記錄的id開始的幾條數據,即為你要的結果。如果相同,則繼續上面的遍歷

閱讀全文

與相似文件演算法相關的資料

熱點內容
java字元串太長 瀏覽:868
python變數計算 瀏覽:115
網銀pdf 瀏覽:134
iponedns伺服器怎麼設置復原 瀏覽:405
深圳電力巡檢自主導航演算法 瀏覽:436
十二星座的布娃娃怎麼買app 瀏覽:321
反編譯打包地圖不顯示 瀏覽:92
沒有壓縮的圖片格式 瀏覽:468
斯維爾文件需不需要加密狗 瀏覽:300
柱加密區范圍在軟體中設置 瀏覽:706
紙質音樂壓縮教程 瀏覽:33
安卓手機健康碼快捷方式怎麼設置 瀏覽:477
程序員是怎麼發明的 瀏覽:175
新手程序員的職業規劃 瀏覽:175
c源程序通過編譯得到的目標文件 瀏覽:412
mpu6050控制單片機 瀏覽:751
雲伺服器租用什麼意思 瀏覽:150
程序員做中介怎麼樣 瀏覽:141
怎麼把解壓視頻保存到手機 瀏覽:451
app欠費怎麼查詢 瀏覽:350