从 Java 程序中的 Unix 路径读取 hadoop 配置文件
Read a hadoop config Files from Unix Path in Java Program
我正在开发一个 Java 应用程序,该应用程序正在将结果数据保存到 HDFS。 java 应用程序应该 运行 在我的 windows 机器上。
截至目前,我将核心站点、hdfs-site.xml 等 Hadoop 配置文件复制到我的 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"));
请帮助我。
理论上你可以通过一些工作来完成这个。有两种可能性,SAMBA 或 NFS。在这两种情况下,Unix 服务器都必须是 运行 服务器组件并配置为导出所需的文件系统,并且您将需要授权您访问导出的文件系统的身份验证凭据。
对于 SAMBA,您可以使用 this question 中的建议来映射网络驱动器。您必须编写代码来检测驱动器是否已映射,并处理分配驱动器号的问题。
对于 NFS,您需要为 Java 找到一个 NFS 客户端库。
我想第三种可能性是通过 FTP 或(更好的)SCP 从 Unix 服务器复制文件。
您似乎在尝试嵌入 hadoop/hdfs 实例。大多数 hdfs 实例可能是 multibox,也许在数据中心。如果您包含适当的 jars 和设置权限,您应该能够使用 urls 通过 namenode 与 hdfs 交互:
hdfs://namenode:port/path/to/your/file
如果是为了测试,那么启动一个独立于生产集群的本地实例是有意义的,但它可能需要它自己的独立配置。
我正在开发一个 Java 应用程序,该应用程序正在将结果数据保存到 HDFS。 java 应用程序应该 运行 在我的 windows 机器上。
截至目前,我将核心站点、hdfs-site.xml 等 Hadoop 配置文件复制到我的 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"));
请帮助我。
理论上你可以通过一些工作来完成这个。有两种可能性,SAMBA 或 NFS。在这两种情况下,Unix 服务器都必须是 运行 服务器组件并配置为导出所需的文件系统,并且您将需要授权您访问导出的文件系统的身份验证凭据。
对于 SAMBA,您可以使用 this question 中的建议来映射网络驱动器。您必须编写代码来检测驱动器是否已映射,并处理分配驱动器号的问题。
对于 NFS,您需要为 Java 找到一个 NFS 客户端库。
我想第三种可能性是通过 FTP 或(更好的)SCP 从 Unix 服务器复制文件。
您似乎在尝试嵌入 hadoop/hdfs 实例。大多数 hdfs 实例可能是 multibox,也许在数据中心。如果您包含适当的 jars 和设置权限,您应该能够使用 urls 通过 namenode 与 hdfs 交互:
hdfs://namenode:port/path/to/your/file
如果是为了测试,那么启动一个独立于生产集群的本地实例是有意义的,但它可能需要它自己的独立配置。