从Java程序中的Unix Path读取hadoop配置文件

时间:2016-07-05 06:38:43

标签: java hadoop hadoop2

我正在开发Java应用程序,该应用程序正在将结果数据保存到HDFS。 java应用程序应该在我的Windows机器上运行。

截至目前,我将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"));

请帮帮我。

2 个答案:

答案 0 :(得分:1)

理论上你可以通过一些工作来实现这一目标。有两种可能性,SAMBA或NFS。在这两种情况下,Unix服务器都必须运行服务器组件并配置为导出所需的文件系统,并且您需要允许您访问导出文件系统的身份验证凭据。

对于SAMBA,您可以使用this question中的建议来映射网络驱动器。您必须编写代码来检测驱动器是否已经映射,并且应对分配驱动器号。

对于NFS,您需要找到Java的NFS客户端库。

我认为第三种可能性是通过FTP或(更好)SCP从Unix服务器复制文件。

答案 1 :(得分:0)

看起来您正在尝试嵌入hadoop / hdfs实例。大多数hdfs实例可能是数据中心中的多箱。如果您包含适当的jar和设置权限,您应该能够使用url通过namenode与hdfs进行交互:

HDFS://名称节点:端口/路径/到/你的/文件

如果是用于测试,那么启动独立于prod集群的本地实例是有意义的,但它可能需要它自己的独立配置。