如何确定HDFS URI - java.io.IOException: Incomplete HDFS URI, no host

4

如何确定hdfs dfs命令连接的URI?

是否有存储URI的配置文件或者可以用于显示URI的命令?

我查看了FileSystemShell文档dfsadmin文档,但没有找到相关信息。(同时,我无法访问大多数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.access$200(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版本。

1个回答

4
如果您可以访问文件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


1
core-default would typically always be file:///. It is always recommended to set defaultFS is core-site - OneCricketeer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接