HDFS支持的文件操作
HDFS(Hadoop Distributed File System)作为分布式文件系统,提供了一套完整的文件操作命令与API,覆盖文件生命周期管理的核心环节,主要包括以下类型:
hadoop fs -touchz <HDFS路径>命令,可在HDFS中创建长度为0的空文件(若文件已存在,仅更新其修改时间)。hadoop fs -mkdir <HDFS路径>创建单级目录;若需创建多级目录(如/a/b/c),需添加-p参数,避免父目录不存在时报错。hadoop fs -put <本地路径> <HDFS目标路径>将本地文件上传至HDFS,自动在目标路径创建文件;若目标路径已存在同名文件,put命令会覆盖原文件。hadoop fs -cat <HDFS文件路径>直接在命令行输出文件内容,适用于小文件;大文件建议结合less或more分页查看。hadoop fs -get <HDFS文件路径> <本地目标路径>将HDFS中的文件复制到本地文件系统,若本地目标路径已存在同名文件,会报错提示。hadoop fs -getmerge <HDFS目录路径> <本地输出文件>将HDFS目录下的多个文件合并为一个文件下载到本地,保留原始文件顺序。hadoop fs -tail <HDFS文件路径>查看文件最后1KB内容,适用于实时日志监控等场景。hadoop fs -put <本地路径> <HDFS目标路径>是最常用的写入方式,支持从本地向HDFS传输文件,可指定覆盖或跳过已存在文件。hadoop fs -appendToFile <本地文件路径> <HDFS目标文件路径>将本地文件内容追加到HDFS已有文件的末尾,适用于日志追加等场景。FileSystem.create()方法获取输出流,以流的形式写入数据(如FSDataOutputStream.write()),支持大文件分块写入,是程序化写入的核心方式。hadoop fs -rm <HDFS文件路径>删除指定文件,删除后文件不可恢复(除非启用回收站功能)。-r参数(如hadoop fs -rm -r <HDFS目录路径>),否则会报错“Directory is not empty”。-f参数强制删除(不提示确认),-skipTrash参数跳过回收站直接永久删除(需谨慎使用,避免误删)。使用hadoop fs -mv <源路径> <目标路径>实现文件或目录的移动/重命名:
hadoop fs -mv /dir1/file.txt /dir2/);hadoop fs -mv /dir/file.txt /dir/newfile.txt)。hadoop fs -chmod <权限模式> <HDFS文件路径>修改文件权限(如hadoop fs -chmod 755 /file.txt,设置所有者可读可写可执行,组和其他用户可读可执行)。hadoop fs -chown <所有者>:<组> <HDFS文件路径>修改文件的所有者和所属组(如hadoop fs -chown hadoop:hadoop /file.txt)。hadoop fs -stat <格式> <HDFS文件路径>查看文件的详细元数据(如hadoop fs -stat "%F %u %g %y" /file.txt,分别显示文件类型、所有者、组、修改时间)。hadoop fs -ls <HDFS路径>列出指定路径下的文件和子目录;添加-h参数以人类可读格式显示文件大小(如KB、MB),-R参数递归列出子目录内容。hadoop fs -du <HDFS路径>显示目录下所有文件的总大小;-s参数仅显示总计,-h参数以人类可读格式显示(如hadoop fs -du -sh /dir)。使用hadoop fs -cp <源路径> <目标路径>在HDFS内部复制文件或目录:
hadoop fs -cp /dir1/file.txt /dir2/file.txt;-r参数(如hadoop fs -cp -r /dir1 /dir2),递归复制目录及其所有内容。