gpt4 book ai didi

java - hdfs - 获取文件夹错误

转载 作者:行者123 更新时间:2023-12-02 20:40:41 26 4
gpt4 key购买 nike

运行 hdfs dfs -get 命令时遇到错误,如下所示:

[work@myserver ~]$ hdfs dfs -get hdfs://hadoopserver:8020/path/DataLoad/
Exception in thread "main" java.lang.NullPointerException
at org.apache.hadoop.fs.FsShell.displayError(FsShell.java:304)
at org.apache.hadoop.fs.FsShell.run(FsShell.java:289)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:84)
at org.apache.hadoop.fs.FsShell.main(FsShell.java:340)

“hadoopserver”是与 myserver 不在同一个网络中的 hadoop 集群的主服务器。我通过在“/etc/hosts”中配置公网IP来连接它。

更重要的是,此错误仅在获取文件夹和从网络外时发生。请看下面的 2 个示例:第一个是我从与 hadoopserver 位于同一网络中的另一台服务器获取文件夹。第二个示例是我从同一服务器(myserver)获取文件而不是文件夹。他们都成功了。
[work@hadoopserver_2 lewis]$ hdfs dfs -get hdfs://hadoopserver:8020/path/DataLoad ./
[work@hadoopserver_2 lewis]$ du -sh DataLoad/
1.2G DataLoad/

[work@myserver ~]$ hdfs dfs -get hdfs://hadoopserver:8020/path/DataLoad/part-r-00375-724f4a2e-ed40-4100-8e81-6657d9dacc01.gz.parquet ./
[work@myserver ~]$ ls
part-r-00375-724f4a2e-ed40-4100-8e81-6657d9dacc01.gz.parquet

最后一点,当我从外部网络获取文件夹并收到错误时,总是会创建文件夹,有时会得到不完整的文件。
[work@myserver DataLoad]$ ls
part-r-00000-724f4a2e-ed40-4100-8e81-6657d9dacc01.gz.parquet _SUCCESS
[work@myserver DataLoad]$ du -sh
10M .

(DataLoad中应该有很多文件,大于10M。而且大多数时候只有一个名为“_SUCCESS”的空文件。)

最佳答案

我的同事已经解决了这个问题。我们使用 hdfs --loglevel DEBUG显示详细错误。根本原因是我只是在“/etc/hosts”中配置了主服务器ip。当myserver试图从外部网络的 hadoop 集群中获取数据。主服务器(默认 8020 端口)告诉我应该连接到哪个数据节点(默认 50070 端口)。所以我不能得到整个文件夹,因为文件必须在不同的数据节点中。我成功地获取了文件,也许它只是在主节点上(这是唯一的服务器
在我的主机中配置)。

因此,在我在主机中配置所有节点的公共(public) IP 之后。我可以成功获取文件夹。

关于java - hdfs - 获取文件夹错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49798447/

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