2013-04-06 67 views
2

我有很多小文件(大小〜1MB),我需要分發。衆所周知,Hadoop和HDFS更喜歡大文件。但我不知道這是否也可以應用到分佈式緩存,因爲分佈式文件存儲在本地機器上。將小文件合併到Hadoop分佈式緩存的大文件中?

如果需要合併它們,在HDFS上以編程方式合併文件的最佳方式是什麼?

還有一個問題:使用符號鏈接有什麼好處?由於

回答

2

您可以創建你的所有小文件的存檔(tar或zip),並把它添加到分佈式緩存如下:

DistributedCache.addCacheArchive(new URI("/myapp/myzip.zip", job); 

並獲得文件的映射/減速如下:

public void configure(JobConf job) { 
     // Get the cached archives/files 
     File f = new File("./myzip.zip/some/file/in/zip.txt"); 
     } 

更多here

+0

謝謝。我會嘗試。你對性能有什麼想法嗎?它會增加嗎? – v4r 2013-04-06 19:51:43

+0

我沒有對它進行基準測試,但它確實有所提高。 – Amar 2013-04-07 07:39:52

2

下面是Cloudera的一個blog對小文件的問題。

相關問題