gpt4 book ai didi

hadoop - WebHDFS FileNotFoundException rest api

转载 作者:行者123 更新时间:2023-12-02 19:12:25 25 4
gpt4 key购买 nike

我将这个问题发布为webhdfs rest api throwing file not found exception的延续
我有一个图像文件,我想通过WebHDFS rest api打开。

  • 该文件存在于hdfs中,并具有适当的权限
  • 我可以
    对该文件进行LISTSTATUS并获得答案:

  • curl -i "http://namenode:50070/webhdfs/v1/tmp/file.png?op=LISTSTATUS"

    HTTP/1.1 200 OK
    Date: Fri, 17 Jul 2020 22:47:29 GMT
    Cache-Control: no-cache
    Expires: Fri, 17 Jul 2020 22:47:29 GMT
    Date: Fri, 17 Jul 2020 22:47:29 GMT
    Pragma: no-cache
    X-FRAME-OPTIONS: SAMEORIGIN
    Content-Type: application/json
    Transfer-Encoding: chunked

    {"FileStatuses":{"FileStatus":[
    {"accessTime":1594828591740,"blockSize":134217728,"childrenNum":0,"fileId":11393739,"group":"hdfs","length":104811,"modificationTime":1594828592000,"owner":"XXXX","pathSuffix":"XXXX","permission":"644","replication":3,"storagePolicy":0,"type":"FILE"}
    ]}}

    Content-Type: application/octet-stream
    Content-Length: 0
  • 因此api可以正确读取元数据,但是我无法将该文件打开:

  • curl -i "http://namenode:50070/webhdfs/v1/tmp/file.png?op=OPEN"

    HTTP/1.1 307 Temporary Redirect
    Date: Fri, 17 Jul 2020 22:23:17 GMT
    Cache-Control: no-cache
    Expires: Fri, 17 Jul 2020 22:23:17 GMT
    Date: Fri, 17 Jul 2020 22:23:17 GMT
    Pragma: no-cache
    X-FRAME-OPTIONS: SAMEORIGIN
    Location: http://datanode1:50075/webhdfs/v1/tmp/file.png?op=OPEN&namenoderpcaddress=namenode:8020&offset=0
    Content-Type: application/octet-stream
    Content-Length: 0

    {"RemoteException":{"exception":"FileNotFoundException","javaClassName":"java.io.FileNotFoundException","message":"Path is not a file: /tmp/file.png......
  • 因此,根据webhdfs rest api throwing file not found exception,我可以看到请求是从namenode传递到datanode1的。
    Datanode1在我的主机文件中,我可以从那里连接到它,检查webhdfs的状态:
  • <property>
    <name>dfs.webhdfs.enabled</name>
    <value>true</value>
    <final>true</final>
    </property>
    允许,与namenode相同。
  • 我还去查看了/var/log/hadoop/hdfs/*.{log,out}上的hdfs日志,看是否可以找到我 curl 时触发的错误,但似乎什么也没发生。我没有找到与我的文件或webhdfs查询有关的条目。我在namenode和datanode1上尝试过。
  • 作为最后的沟渠工作,我尝试将权限(不理想)从644(在第2点见到)增加到666

  • hdfs dfs -chmod 666 /tmp/file.png


    curl -i "http://namenode:50070/webhdfs/v1/tmp/file.png?op=LISTSTATUS"

    HTTP/1.1 403 Forbidden
    Date: Fri, 17 Jul 2020 23:06:18 GMT
    Cache-Control: no-cache
    Expires: Fri, 17 Jul 2020 23:06:18 GMT
    Date: Fri, 17 Jul 2020 23:06:18 GMT
    Pragma: no-cache
    X-FRAME-OPTIONS: SAMEORIGIN
    Content-Type: application/json
    Transfer-Encoding: chunked

    {"RemoteException":{"exception":"AccessControlException","javaClassName":"org.apache.hadoop.security.AccessControlException","message":"Permission denied: user=XXXX, access=READ_EXECUTE, inode=\"/tmp/file.png\":XXXX:hdfs:drw-rw-rw-"}}
    因此,看起来好像做了切换,但是在放宽以前从未获得的当前权限时,我以某种方式遇到了权限问题?就像我没有删除X标志一样,它并不是一开始就存在的。 access = READ_EXECUTE是否同时需要R和X?
    现在,我对为什么可以使用HDFS看到但看不到该文件感到困惑。有人可以帮我解决这个问题吗?

    最佳答案

    仔细查看您的最后一个错误,... inode=\"/tmp/file.png\":XXXX:hdfs:drw-rw-rw-"},似乎表明file.png实际上是目录(开头的d符号)而不是文件。这与您在步骤3中遇到的错误一致* ..."message":"Path is not a file: /tmp/file.png....
    您可以简单地通过$ hdfs dfs -ls /tmp/file.png/再次检查。
    回到访问错误,您确实需要“执行”(x)权限才能在目录中列出文件。

    关于hadoop - WebHDFS FileNotFoundException rest api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62962935/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com