2013-07-30 58 views
1

我是Hadoop,Mapr和Pivotal的新手。我寫了Java代碼寫入Mapr中寫入關鍵但面臨的問題。使用Java的Mapr

public class HadoopFileSystemManager { 
     private String url; 
     public void writeFile(String filePath,String data) throws IOException, URISyntaxException { 
      Path fPath = new Path(filePath); 
      String url = url = "hdfs://"+ip+":"+"8020"; 
      FileSystem fs = FileSystem.get(new URI(url),new Configuration()); 
      System.out.println(fs.getWorkingDirectory()); 
      FSDataOutputStream writeStream = fs.create(fPath); 
      writeStream.writeChars(data); 
      writeStream.close(); 
     } 

    } 

這段代碼可以很好地運行在ptaoatal上,但是與Mapr無法運行。

對於MAPR我使用的端口= 7222 我收到以下錯誤

請讓我知道如果我使用正確的端口或任何需要「一個現有的連接被強行關閉遠程主機」在特定於Mapr的代碼中進行更改。

我已經停止了iptables。

任何信息非常感謝。

感謝

標題

+0

如何運行java程序。從終端? –

+0

運行Junit測試用例: @Test public void writeFileTest3(){ HadoopFileSystemManager fs = new HadoopFileSystemManager(); 嘗試fs.writeFile(「/ tmp/dummy」,「This is the test String」); (例外e){ e.printStackTrace(); assertEquals(0,1); } } – user608020

回答

1

試試這個代碼。但請確保您在執行測試的節點上安裝了MapR客戶端。

public class HadoopFileSystemManager { 
     private String url; 
     public void writeFile(String filePath,String data) throws IOException, URISyntaxException { 
      System.setProperty("java.library.path", "/opt/mapr/lib"); 
      Path fPath = new Path(filePath); 
      String url = url = "hdfs://"+ip+":"+"8020"; 
      FileSystem fs = FileSystem.get(new URI(url),new Configuration()); 
      System.out.println(fs.getWorkingDirectory()); 
      FSDataOutputStream writeStream = fs.create(fPath); 
      writeStream.writeChars(data); 
      writeStream.close(); 
     } 

    } 

以下添加到類路徑:

/opt/mapr/hadoop/hadoop-0.20.2/conf:/opt/mapr/hadoop/hadoop-0.20.2/lib/ Hadoop的0.20.2-DEV-core.jar添加:/opt/mapr/hadoop/hadoop-0.20.2/lib/maprfs-0.1.jar:中:/ opt/MAPR/Hadoop的/ Hadoop的0.20.2/lib目錄/共享記錄-1.0.4.jar:/opt/mapr/hadoop/hadoop-0.20.2/lib/zookeeper-3.3.2.jar

此語句在上面的代碼:System.setProperty("java.library.path", "/opt/mapr/lib");可以被刪除,可以使用提供也是如此,如果你在建設時從終端運行你的程序。

/opt/mapr可能不是您的mapr文件路徑。如果是這種情況,請根據情況更換相應的路徑。

評論後: 如果您正在使用Maven來構建你的項目,請嘗試使用以下在pom.xml, 並用提供的範圍。 MapR也與普通的Apache Hadoop發行版兼容。所以,在建立的時候你可以使用相同的。然後當你運行你的程序時,你會在類路徑中提供mapR jars。

<dependency> 
    <groupid>hadoop</groupid> 
    <artifactid>hadoop</artifactid> 
    <version>0.20.2</version> 
    <scope>provided</scope> 
</dependency> 
+0

我仍然收到相同的錯誤。可能是我錯誤地配置了系統。 在我的項目的pom.xml中,我添加了這兩個依賴關係。 Hadoop的共同 2.0.5-α Hadoop的HDFS 2.0.5-α和i。從該芯的site.xml需要還配置了一些網站想出。所以我改爲 fs.default.name hdfs:// :8020。 我正在運行我的工作機器上的測試程序。 – user608020

+0

@ user608020:您可以從您的測試機器執行MapR作業嗎? –

+0

我爲Pivotal創建了兩個項目,一個用於MapR 1. Mapr pom.xml具有hadoop-core(1.0.3-mapr-2.1.2.1)依賴項,並且 該項目只寫入MapR並且失敗且具有關鍵性 2.關鍵pom.xml有hadoop-hdfs(2.0.2-alpha)和hadoop-common(2.0.2-alpha)依賴關係。 該項目只寫入Pivotal,並且無法使用MapR。 在兩個項目中都使用相同的代碼。 請讓我知道如何在單個項目中編寫Pivotal和MapR.Merging pom.xml不起作用 – user608020