2012-02-07 85 views
2

在Hadoop書中,據說我們可以在創建文件時指定每個文件塊的大小。 「Hadoop每個文件塊大小

」增加分割大小的最自然的方法是在HDFS中設置較大的塊,通過設置dfs.block.size或在文件構建時以每個文件爲基礎。「

任何想法如何在文件構建時做到這一點。我希望通過這個設置值=文件大小,文件將不可拆分

+0

基本上我有一個流作業(C++代碼),我只需使用-Co​​prFromLocal將輸入文件複製到HDFS。是否有任何選項可用於指定文件塊大小。我認爲HDFS提供了一個API來指定創建文件時的塊大小。 FileSystem.create(Path,覆蓋,bufferSize,複製,blockSize,進度)。但可能我不能用這個。我正在尋找一些cli選項。 – sunillp 2012-02-07 06:30:29

回答

4

您可以使用CLI:

hadoop fs -D dfs.block.size=file-size -put local_name remote_location 

,或者您可以使用Java API你時指定dfs.block.size想要創建或複製文件。

Configuration conf = new Configuration(); 
conf.setInt("dfs.block.size",file-size); 
+0

我試過CLI選項。但似乎在啓動作業時,如果MapReduce的文件大於64 MB,它仍會嘗試分割該文件,儘管我在將文件複製到HDFS時將df.block.size提到了256MB。我希望MR不會用上面的選項分割文件。 – sunillp 2012-02-09 05:28:16

+0

您可以在50070中檢查文件的塊大小。您可以**瀏覽文件系統**以查看文件是否具有正確的塊大小。 – 2012-02-10 05:48:00

相關問題