1. 文件查改增删
1.1 查看文件
# 查看某目录下的文件
hadoop fs -ls <path>
# 显示文件大小
hadoop fs -du -h <path>
# 显示文件大小,s代表显示只显示总计(列出最后的和)。
hadoop fs -du -s -h <path>
# 输出文件内容
hadoop fs -cat <path>
1.2 创建文件
# 创建目录
hadoop fs -mkdir <path>
hadoop fs -mkdir -p ${1}
# 在指定目录创建一个新文件,如果文件存在,则创建失败
hadoop fs -touchz /user/zz/_SUCCESS
1.3 删除文件
hadoop fs -rm <src>
# 递归删除文件目录及文件
hadoop fs -rmr <src>
hadoop fs -rm -R -f -skipTrash ${1}
1.4 批量删除文件
介绍 一种批量删除hdfs文件(并跳过垃圾箱)的方法
# 1.查看hdfs 文件
hadoop fs -ls hdfs_path
# 2.将hdfs上待删除的文件路径写入一个文本文件(table_hdfs_clean_list.txt)
# 3.编写删除脚本 clean.sh (防止垃圾箱被塞满)
for i in `cat table_hdfs_clean_list.txt`
# for i in $(cat table_hdfs_clean_list.txt)
do
hadoop fs -rm -r -skipTrash $i
done
# 4.执行 bash clean.sh
2. 文件移动
2.1 拷贝文件
# 拷贝文件,src为多个文件时,dst必须是个目录
hadoop fs -cp <src> <dst>
# 移动文件,当src为多个文件,dst必须为目录
hadoop fs -mv <src> <dst>
2.2 本地文件上传
# 前面为本地文件路径,后面为HDFS中文件路径
hadoop fs -put /data/zz/aa.txt /user/zz/
# hdfs dfs -put /data/zz/aa.txt /user/zz/
# hadoop fs -copyFromLocal <localsrc>...<dst>
# 若hdfs上已经存在文件,要强制覆盖,用 -f 命令
hadoop fs -put -f aa.txt /user/zz/
# 上传文件夹
hadoop fs -put /data/zz/test /user/zz/
# 从本地系统拷贝文件到dfs中,拷贝完删除源文件
hadoop fs -moveFromLocal <localsrc>...<dst>
2.3 下载文件到本地
hadoop fs -get /user/zz/test /data/zz/
# 从dfs中拷贝多个文件合并排序为一个文件到本地文件系统
hadoop fs -getmerge <src> <localdst>
2.4 集群之间的拷贝
把master集群的/foo/bar目录下的所有文件或目录名展开并存储到一个临时文件中,这些文件内容的拷贝工作被分配给多个map任务, 然后每个TaskTracker分别执行从master1到master2的拷贝操作。注意使用绝对路径进行操作。
hadoop distcp
# -D mapred.job.map.capacity=5000 \
# -D mapred.job.priority=VERY_HIGH \
# -su dt-udw-insight,udwinsight \
# -du lbs-navi,awesomenavi \
hdfs://master1:8020/foo/bar hdfs://master2:8020/bar/foo