1

Hadoop、Mapr、Pivo​​tal は初めてです。ピボタルに書き込む 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();
        }

    }

このコードは pivotal では問題なく動作しますが、Mapr では失敗します。

Mapr の場合、ポート = 7222 を使用しています。「既存の接続がリモート ホストによって強制的に閉じられました」というエラーが表示されます。

正しいポートを使用しているかどうか、または Mapr 固有のコードを変更する必要があるかどうかをお知らせください。

iptables を停止しました。

どんな情報でも大歓迎です。

ありがとう

見出し

4

1 に答える 1

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/commons-logging-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" );削除することも、を使用して提供することもできます。-Djava.library.path

/opt/maprは、mapr ファイルへのパスではない可能性があります。その場合は、必要に応じてパスを置き換えてください。

コメントの後: Maven を使用してプロジェクトをビルドしている場合は、pom.xml で以下を使用し、スコープを指定してみてください。MapR は、通常の Apache Hadoop ディストリビューションとも互換性があります。したがって、ビルド中に同じものを使用できます。次に、プログラムを実行するときに、クラスパスに mapR jar を指定します。

<dependency>
   <groupid>hadoop</groupid>
   <artifactid>hadoop</artifactid>
   <version>0.20.2</version>
   <scope>provided</scope>
</dependency> 
于 2013-07-31T13:27:08.497 に答える