使用Java的Mapr
我是Hadoop、Mapr和Pivotal的新手。我已经编写了java代码来编写pivotal,但在编写Mapr时遇到了问题使用Java的Mapr,java,hadoop,mapr,Java,Hadoop,Mapr,我是Hadoop、Mapr和Pivotal的新手。我已经编写了java代码来编写pivotal,但在编写Mapr时遇到了问题 public class HadoopFileSystemManager { private String url; public void writeFile(String filePath,String data) throws IOException, URISyntaxException { Path f
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
任何信息都非常感谢
谢谢
Heading试试这个代码。但请确保在执行测试的节点中设置了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/hadoop-1.0.4/lib/mapr/hadoop/hadoop-0.2/zokeeper-3.jar
上述代码中的这条语句:System.setProperty(“java.library.path”,“/opt/mapr/lib”)代码>可以删除,也可以使用-Djava.library.path
提供,如果您在构建时从终端运行程序
/opt/mapr可能不是您访问mapr文件的路径。如果是这种情况,请在适用的情况下相应地更换路径
评论后:
如果您使用Maven构建项目,请尝试在pom.xml中使用以下内容:,
并提供范围。MapR也与普通的apachehadoop发行版兼容。因此,在构建时,您可以使用相同的。然后在运行程序时,在类路径中提供mapR jar
<dependency>
<groupid>hadoop</groupid>
<artifactid>hadoop</artifactid>
<version>0.20.2</version>
<scope>provided</scope>
</dependency>
hadoop
hadoop
0.20.2
假如
试试这段代码。但请确保在执行测试的节点中设置了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/hadoop-1.0.4/lib/mapr/hadoop/hadoop-0.2/zokeeper-3.jar
上述代码中的这条语句:System.setProperty(“java.library.path”,“/opt/mapr/lib”)代码>可以删除,也可以使用-Djava.library.path
提供,如果您在构建时从终端运行程序
/opt/mapr可能不是您访问mapr文件的路径。如果是这种情况,请在适用的情况下相应地更换路径
评论后:
如果您使用Maven构建项目,请尝试在pom.xml中使用以下内容:,
并提供范围。MapR也与普通的apachehadoop发行版兼容。因此,在构建时,您可以使用相同的。然后在运行程序时,在类路径中提供mapR jar
<dependency>
<groupid>hadoop</groupid>
<artifactid>hadoop</artifactid>
<version>0.20.2</version>
<scope>provided</scope>
</dependency>
hadoop
hadoop
0.20.2
假如
您是如何运行java程序的。从终端?运行Junit测试用例:@test public void writeFileTest3(){HadoopFileSystemManager fs=new HadoopFileSystemManager();try{fs.writeFile(“/tmp/dummy”,“这是测试字符串”);}catch(异常e){e.printStackTrace();assertEquals(0,1);}您是如何运行java程序的。从终端?运行Junit测试用例:@test public void writeFileTest3(){HadoopFileSystemManager fs=new HadoopFileSystemManager();try{fs.writeFile(“/tmp/dummy”,“这是测试字符串”);}catch(异常e){e.printStackTrace();assertEquals(0,1);}我仍然得到同样的错误。可能是我错误地配置了系统。在我的项目的pom.xml中,我添加了这两个依赖项。hadoop common 2.0.5-alpha和hadoop hdfs 2.0.5-alpha,我从某个站点了解到core-site.xml也需要配置。所以我改为fs.default.name hdfs://:8020。我正在从我的工作机器上运行测试程序。@user608020:您能从您的测试机器上执行MapR作业吗?我已经创建了两个项目,一个用于Pivotal,另一个用于MapR 1。Mapr pom.xml具有hadoop核心(1.0.3-Mapr-2.1.2.1)依赖关系,该项目仅写入Mapr,并在pivotal 2中失败。Pivotal pom.xml具有hadoop hdfs(2.0.2-alpha)和hadoop common(2.0.2-alpha)依赖关系。此项目仅写入Pivotal,使用MapR失败。两个项目中使用相同的代码。请让我知道如何在单个项目中编写Pivotal和MapR。合并pom.xml不起作用,我不知道Pivotal,但MapR可以与普通的Apache Hadoop API一起工作(MapR这么说)-因此,当您使用pom.xml中提供的scope=时,我想保留它应该可以用于编译。运行时,请确保在类路径中使用了MapR jar。我仍然收到相同的错误。可能是我错误地配置了系统。在我的项目的pom.xml中,我添加了这两个依赖项。hadoop common 2.0.5-alpha和hadoop hdfs 2.0.5-alpha,我从某个站点了解到core-site.xml也需要配置。所以我改为fs.default.name hdfs://:8020。我正在从我的工作机器上运行测试程序。@user608020:您能从您的测试机器上执行MapR作业吗?我已经创建了两个项目,一个用于Pivotal,另一个用于MapR 1。Mapr pom.xml具有hadoop核心(1.0.3-Mapr-2.1.2.1)依赖关系,该项目仅写入Mapr,并在pivotal 2中失败。Pivotal pom.xml具有hadoop hdfs(2.0.2-alpha)和hadoop common(2.0.2-alpha)依赖关系。此项目仅写入Pivotal,使用MapR失败。两个项目中使用相同的代码。请让我知道如何在单个项目中编写Pivotal和MapR。合并pom.xml不起作用,我不知道Pivotal,但MapR可以与正常的Apache Hadoop API一起工作(MapR这么说)-因此,当您执行scope=provided时