我是 Hadoop、Mapr 和 Pivotal 的新手。我已经编写了 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();
}
}
此代码适用于 pivoatal,但适用于 Mapr。
对于 Mapr,我使用端口 = 7222。 我收到以下错误 “现有连接被远程主机强行关闭”
请让我知道我是否使用了正确的端口,或者是否需要在特定于 Mapr 的代码中更改任何内容。
我已经停止了 iptables。
非常感谢任何信息。
谢谢
标题
最佳答案
试试这段代码。但是请确保在执行测试的节点中设置了 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>
关于java - 使用 Java 的 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17952416/