如何找出 hdfs URI - java.io.IOException: 不完整的 HDFS URI,没有主机
How to figure out hdfs URI - java.io.IOException: Incomplete HDFS URI, no host
如何找出我的 hdfs dfs
命令连接到的 URI?
是否有任何配置文件存储 URI 或任何可用于显示它的命令?
我查看了 FileSystemShell and the dfsadmin documentation 的文档,但没有成功。 (此外,我无权访问大多数 dfsadmin 命令。)
当我用 hdfs:///user/myUserName/...
调用命令时,它抛出异常:
Exception in thread "main" java.io.IOException: Incomplete HDFS URI, no host: hdfs:///user/myUserName/test.avro
at org.apache.hadoop.hdfs.DistributedFileSystem.initialize(DistributedFileSystem.java:136)
at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2591)
at org.apache.hadoop.fs.FileSystem.access0(FileSystem.java:89)
at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:2625)
at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2607)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:368)
at org.apache.hadoop.fs.Path.getFileSystem(Path.java:296)
at org.apache.avro.mapred.FsInput.<init>(FsInput.java:38)
at org.apache.avro.tool.Util.openSeekableFromFS(Util.java:110)
at org.apache.avro.tool.DataFileGetSchemaTool.run(DataFileGetSchemaTool.java:47)
at org.apache.avro.tool.Main.run(Main.java:87)
at org.apache.avro.tool.Main.main(Main.java:76)
像 hdfs dfs -ls
这样的简单命令工作正常。
使用 Hadoop 3.1.0。
如果您能够访问文件 core-site.xml
,那么您可以查找分配给 属性 fs.defaultFS
的值
$ grep -A 2 defaultFS /etc/hadoop/conf/core-site.xml
<name>fs.defaultFS</name>
<value>hdfs://bigdataserver-2.internal.cloudapp.net:8020</value>
</property>
注意:我使用 Cloudera,core-site.xml
是我获取详细信息的地方。对于 Hadoop,您可能有 core-default.xml
看看这个:https://hadoop.apache.org/docs/r2.8.5/hadoop-project-dist/hadoop-common/core-default.xml
如何找出我的 hdfs dfs
命令连接到的 URI?
是否有任何配置文件存储 URI 或任何可用于显示它的命令?
我查看了 FileSystemShell and the dfsadmin documentation 的文档,但没有成功。 (此外,我无权访问大多数 dfsadmin 命令。)
当我用 hdfs:///user/myUserName/...
调用命令时,它抛出异常:
Exception in thread "main" java.io.IOException: Incomplete HDFS URI, no host: hdfs:///user/myUserName/test.avro
at org.apache.hadoop.hdfs.DistributedFileSystem.initialize(DistributedFileSystem.java:136)
at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2591)
at org.apache.hadoop.fs.FileSystem.access0(FileSystem.java:89)
at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:2625)
at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2607)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:368)
at org.apache.hadoop.fs.Path.getFileSystem(Path.java:296)
at org.apache.avro.mapred.FsInput.<init>(FsInput.java:38)
at org.apache.avro.tool.Util.openSeekableFromFS(Util.java:110)
at org.apache.avro.tool.DataFileGetSchemaTool.run(DataFileGetSchemaTool.java:47)
at org.apache.avro.tool.Main.run(Main.java:87)
at org.apache.avro.tool.Main.main(Main.java:76)
像 hdfs dfs -ls
这样的简单命令工作正常。
使用 Hadoop 3.1.0。
如果您能够访问文件 core-site.xml
,那么您可以查找分配给 属性 fs.defaultFS
$ grep -A 2 defaultFS /etc/hadoop/conf/core-site.xml
<name>fs.defaultFS</name>
<value>hdfs://bigdataserver-2.internal.cloudapp.net:8020</value>
</property>
注意:我使用 Cloudera,core-site.xml
是我获取详细信息的地方。对于 Hadoop,您可能有 core-default.xml
看看这个:https://hadoop.apache.org/docs/r2.8.5/hadoop-project-dist/hadoop-common/core-default.xml