如何找出 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