2016-07-05 113 views
1

我正在開發一個Java應用程序,此應用程序正在將結果數據保存到HDFS。 Java應用程序應該運行在我的Windows機器上。在Java程序中讀取一個hadoop配置文件從Unix路徑

截至目前,我已將Hadoop配置文件(如core-site,hdfs-site.xml)複製到我的Windows機器並進行測試。以下是我的配置代碼片段。

config.addResource(new Path("C:\\Hadoop\\core-site.xml")); 
config.addResource(new Path("C:\\Hadoop\\hdfs-site.xml")); 
config.addResource(new Path("C:\\Hadoop\\mapred-site.xml")); 
config.addResource(new Path("C:\\Hadoop\\yarn-site.xml")); 

有沒有什麼辦法可以像我一樣從我的Windows機器下載unix服務器直接加載配置文件。

config.addResource(new Path("/opt/hdp/2.3.4.7-4/hadoop/conf/core-site.xml")); 
config.addResource(new Path("/opt/hdp/2.3.4.7-4/hadoop/conf/hdfs-site.xml")); 
config.addResource(new Path("/opt/hdp/2.3.4.7-4/hadoop/conf/mapred-site.xml")); 
config.addResource(new Path("/opt/hdp/2.3.4.7-4/hadoop/conf/yarn-site.xml")); 

請幫助我。

+1

您的Windows機器是否安裝了Unix服務器的磁盤(例如,通過Samba)?如果不是,答案是否定的。 –

+0

沒有..我的本地windows機器上沒有安裝unix服務器磁盤。 –

+1

然後,你不清楚你在問什麼。沒有什麼魔術可以從Windows上的Unix服務器讀取文件。 –

回答

1

理論上你可以通過一些工作來完成這件事。有兩種可能性,SAMBA或NFS。在這兩種情況下,Unix服務器都必須運行服務器組件並配置爲導出所需的文件系統,並且您需要身份驗證憑據授予您訪問導出的文件系統的權限。

對於SAMBA,您可以使用this question中的建議來映射網絡驅動器。您必須編寫代碼來檢測驅動器是否已映射,並應付分配驅動器號。

對於NFS,您需要找到適用於Java的NFS客戶端庫。

我想第三種可能性是通過FTP或(更好的)SCP從Unix服務器複製文件。

0

它看起來像你試圖嵌入一個hadoop/hdfs實例。大多數hdfs實例可能是數據中心中的multibox。如果你有合適的罐子,並設置權限,你應該能夠使用URL通過名稱節點HDFS進行交互:

HDFS:// namenode的:端口/路徑/到/你/文件

如果是爲了測試,獨立於prod集羣的本地實例是有意義的,但它可能需要它自己的獨立配置。