2013-02-13 50 views
0

我的hadoop程序最初是在本地模式下啓動的,現在我的目的已經成爲完全分佈式模式。爲此目的,有必要提供從羣集的所有計算機訪問在reducer和mapper函數中執行讀取的文件,因此我提出了一個關於http://answers.mapr.com/questions/4444/syntax-of-option-files-in-hadoop-script的問題(也因爲它不知道計算機是什麼執行映射函數(從程序的邏輯映射器將只有一個,並且程序將僅使用一個映射器啓動),則還需要在到達映射函數輸入的文件上提供對所有羣集的訪問) 。在這方面,我有一個問題:是否可以直接使用hdfs文件:即在HDFS的文件系統中預先複製Linux文件系統中的文件(因此,正如我所假設的,這些文件在所有計算機上都可用如果不是這樣,請更正),然後使用HDFS Java API讀取這些文件,在羣集的計算機上執行的reducer和mapper函數中?從羣集的所有計算機訪問HDFS文件

如果對此問題的反應積極,請從HDFS文件系統中的Linux文件系統拷貝一個實例,並使用HDFS Java API將這些文件在Java中讀取到程序中,並將其內容記錄在Java的字符串。

回答

0

將所有輸入文件複製到主節點節點(這可以使用scp完成)。 然後登錄到您的節點(ssh),並執行類似下面從本地文件系統中的文件複製到HDFS:

hadoop fs -put $localfilelocation $destination

現在,在你的Hadoop作業,您可以使用輸入要hdfs:///$destination。無需使用任何額外的API從HDFS讀取。

如果您確實想從HDFS讀取文件並將其用作除輸入文件以外的其他信息,則請參閱this