hdfs命令get或者put提示找不到目录或文件

今天用hdfs命令出现个诡异情况:

hadoop fs -put a.txt /user/root/
put: `a.txt': No such file or directory

用get命令存在相同问题

目前未深究,因急用环境,先处理了put命令:
1.看日志,服务未有异常;
2.重启机器/重启hadoop服务
3.仍存在问题
4.最后tmp大法:到tmp目录下put成功了(get也成功了)

比较无语,不知道问题出哪儿了,先mark下,后续定位到了再补充

转载于:https://www.cnblogs.com/music378/p/9489415.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个从HDFS上获取文件并将其上传到HDFS,并验证文件数量和大小的Python脚本示例: ```python import os import subprocess # 配置Hadoop路径 HADOOP_HOME = '/usr/local/hadoop/bin' # 获取HDFS上的文件 def hdfs_get(hdfs_path, local_path): cmd = [os.path.join(HADOOP_HOME, 'hadoop'), 'fs', '-get', hdfs_path, local_path] subprocess.check_call(cmd) # 将文件上传到HDFS def hdfs_put(local_path, hdfs_path): cmd = [os.path.join(HADOOP_HOME, 'hadoop'), 'fs', '-put', local_path, hdfs_path] subprocess.check_call(cmd) # 比较文件数量和大小 def compare_files(local_path, hdfs_path): local_files = os.listdir(local_path) hdfs_files = subprocess.check_output([os.path.join(HADOOP_HOME, 'hadoop'), 'fs', '-ls', hdfs_path]).decode('utf-8').split('\n')[1:] # 检查文件数量是否相等 assert len(local_files) == len(hdfs_files), "文件数量不相等" for hdfs_file in hdfs_files: if not hdfs_file: continue hdfs_file = hdfs_file.split(' ')[-1] hdfs_size = subprocess.check_output([os.path.join(HADOOP_HOME, 'hadoop'), 'fs', '-du', '-s', hdfs_file]).decode('utf-8').split('\t')[0] hdfs_name = os.path.basename(hdfs_file) local_file = os.path.join(local_path, hdfs_name) local_size = os.path.getsize(local_file) # 检查文件大小是否相等 assert int(hdfs_size) == local_size, "文件 {} 大小不相等".format(hdfs_name) if __name__ == '__main__': # 测试数据 hdfs_path = '/user/test' local_path = '/tmp/test' # 获取HDFS上的文件 hdfs_get(hdfs_path, local_path) # 将文件上传到HDFS hdfs_put(local_path, hdfs_path) # 比较文件数量和大小 compare_files(local_path, hdfs_path) print("上传成功并校验通过") ``` 在上面的脚本中,我们首先定义了`HADOOP_HOME`变量来保存Hadoop的安装路径。 然后,我们使用`hdfs_get()`函数从HDFS获取文件并将其下载到本地。使用`hdfs_put()`函数将文件上传到HDFS。最后,使用`compare_files()`函数比较本地文件HDFS文件的数量和大小是否相等。 在脚本的主函数中,我们定义了测试数据的HDFS路径和本地路径,并调用了上述三个函数。如果文件数量和大小相等,则输出“上传成功并校验通过”。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值