You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

本地文件上传HDFS失败求助——按Hortonworks教程操作遇问题

解决HDFS文件上传失败(No such file or directory)的问题

从你的操作描述来看,核心错误put: No such file or directory大概率和路径拼写错误本地/目标路径不存在有关,先别急着怀疑8020端口(这是HDP沙箱默认的NameNode端口,一般不会出问题),我们一步步排查:

1. 先确认HDFS目标路径是否真的匹配

你提到Ambari里看到了因拼写错误创建的两个空目录,这很可能就是问题根源!执行put命令时的路径可能和实际创建的目录名不匹配。

先在终端执行命令,列出/user/hadoop下的所有目录:

hdfs dfs -ls /user/hadoop

仔细核对输出结果,找到你实际要上传文件的那个目录的准确名称(比如是不是把sf-salaries-2011-2013写成了类似sf-salaries-2011-20131这类拼写错误的名字?)。

如果目标目录不存在,先创建正确的层级目录:

hdfs dfs -mkdir -p /user/hadoop/sf-salaries-2011-2013

-p参数会自动创建缺失的父目录,避免层级路径不存在的问题)

2. 确认本地文件是否在当前工作目录

执行put命令时,如果只写文件名sf-salaries-2011-2013.csv,HDFS CLI会默认在当前终端所在的本地目录查找这个文件。

先在终端执行:

ls -l sf-salaries-2011-2013.csv

如果输出提示No such file or directory,说明文件不在当前目录,你有两个解决方式:

  • 切换到文件所在的本地目录,再执行put命令
  • 直接用本地文件的绝对路径,比如:
    hdfs dfs -put /home/your-local-username/sf-salaries-2011-2013.csv /user/hadoop/sf-salaries-2011-2013/
    

3. 简化put命令,减少拼写错误

你当前的put命令写了完整的目标文件名,其实可以省略,让HDFS自动沿用原文件名,这样能避免目标文件名的拼写错误:

hdfs dfs -put sf-salaries-2011-2013.csv /user/hadoop/sf-salaries-2011-2013/

(注意路径末尾的/,明确表示把文件放到这个目录下)

4. 最后排查端口问题(大概率不是)

如果前面的步骤都没问题,再确认NameNode的端口是否正确:

hdfs getconf -confKey fs.defaultFS

如果输出不是hdfs://sandbox-hdp.hortonworks.com:8020,说明你的HDFS配置修改了端口,这时候需要用正确的地址执行put命令,比如:

hdfs dfs -put sf-salaries-2011-2013.csv hdfs://sandbox-hdp.hortonworks.com:正确端口/user/hadoop/sf-salaries-2011-2013/

按照这个流程排查,应该能解决你的文件上传问题。

内容的提问来源于stack exchange,提问作者samba

火山引擎 最新活动