一、操作 HDFS 上的文件有两个命令可以用
hdfs dfs:只能操作 HDFS 上的文件
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
Usage: hdfs [--config confdir] [--loglevel loglevel] COMMAND where COMMAND is one of: dfs run a filesystem command on the file systems supported in Hadoop. classpath prints the classpath namenode -format format the DFS filesystem secondarynamenode run the DFS secondary namenode namenode run the DFS namenode journalnode run the DFS journalnode zkfc run the ZK Failover Controller daemon datanode run a DFS datanode debug run a Debug Admin to execute HDFS debug commands dfsadmin run a DFS admin client dfsrouter run the DFS router dfsrouteradmin manage Router-based federation haadmin run a DFS HA admin client fsck run a DFS filesystem checking utility balancer run a cluster balancing utility jmxget get JMX exported values from NameNode or DataNode. mover run a utility to move block replicas across storage types oiv apply the offline fsimage viewer to an fsimage oiv_legacy apply the offline fsimage viewer to an legacy fsimage oev apply the offline edits viewer to an edits file fetchdt fetch a delegation token from the NameNode getconf get config values from configuration groups get the groups which users belong to snapshotDiff diff two snapshots of a directory or diff the current directory contents with a snapshot lsSnapshottableDir list all snapshottable dirs owned by the current user Use -help to see options portmap run a portmap service nfs3 run an NFS version 3 gateway cacheadmin configure the HDFS cache crypto configure HDFS encryption zones storagepolicies list/get/set block storage policies version print the version Most commands print help when invoked w/o parameters.
hadoop fs:除了 HDFS 上的文件,还可以操作本地文件
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
Usage: hadoop [--config confdir] [COMMAND | CLASSNAME] CLASSNAME run the class named CLASSNAME or where COMMAND is one of: fs run a generic filesystem user client version print the version jar <jar> run a jar file note: please use "yarn jar" to launch YARN applications, not this command. checknative [-a|-h] check native hadoop and compression libraries availability distcp <srcurl> <desturl> copy file or directories recursively archive -archiveName NAME -p <parent path> <src>* <dest> create a hadoop archive classpath prints the class path needed to get the Hadoop jar and the required libraries credential interact with credential providers daemonlog get/set the log level for each daemon trace view and modify Hadoop tracing settings Most commands print help when invoked w/o parameters.
二、使用
help:查看命令帮助
hadoop fs -help ls
ls:显示目录信息
# 查看根目录 hadoop fs -ls / # 递归查看所有目录 hadoop fs -ls -R / hadoop fs -lsr /
mkdir:创建目录
# 创建多级目录 hadoop fs -mkdir -p /china/hubei/
moveFromLocal:移动本地文件到 HDFS 上
# 移动本地 /opt/java-linux-x64.tar.gz 至 HDFS 的 /china/hubei/ 路径下 hadoop fs -moveFromLocal /opt/java-linux-x64.tar.gz /china/hubei/
appendToFile:把本地文件的内容追加到 HDFS 上的文件末尾
# 创建两个文件 echo "AAA" > /tmp/AAA.txt echo "BBB" > /tmp/BBB.txt # 把本地 /tmp/AAA.txt 移动至 HDFS 上的 /china/ 目录下 hadoop fs -moveFromLocal /tmp/AAA.txt /china/ # 把本地 /tmp/BBB.txt 追加到 HDFS 上的 /china/AAA.txt 文件末尾 hadoop fs -appendToFile /tmp/BBB.txt /china/AAA.txt
cat:查看文件内容
hadoop fs -cat /china/AAA.txt
chgrp 、chmod、chown:修改文件属性和权限
# 修改 /china/ 目录及其所有子目录的用户组为 root hadoop fs -chgrp -R root /china/ # 修改 /china/ 目录及其所有子目录的权限为 777 hadoop fs -chmod -R 777 /china/ # 修改 /china/ 目录及其所有子目录的所有者为 root hadoop fs -chown -R root /china/
put、copyFromLocal:拷贝本地文件到 HDFS 上(上传)
# 复制本地 /tmp/ 目录到 HDFS 的 /china/ 目录下 hadoop fs -copyFromLocal /tmp/ /china/ hadoop fs -put /tmp/ /china/
get、copyToLocal:拷贝 HDFS 上的文件到本地(下载)
# 复制 HDFS 上 /china/BBB.txt 文件到本地的当前目录 hadoop fs -copyToLocal /china/BBB.txt ./ hadoop fs -get /china/BBB.txt ./
moveToLocal:移动 HDFS 上的文件到本地
# Hadoop 目前版本(2.9.2)尚未实现该功能
cp:在 HDFS 上复制文件
# 将 HDFS 上的 /china/AAA.txt 复制到 HDFS 的 / 目录下 hadoop fs -cp /china/AAA.txt /
mv:在 HDFS 上移动文件
# 将 HDFS 上的 /china/BBB.txt 移动到 HDFS 的 / 目录下 hadoop fs -mv /china/BBB.txt /
getmerge:合并下载
# 清空本地 /tmp/ 目录 rm -rf /tmp/* # 在本地 /tmp/ 中创建两个文件 echo "AAA" > /tmp/AAA.txt echo "BBB" > /tmp/BBB.txt # 把本地 /tmp/*.txt 上传至 HDFS 上的 /china/ 目录下 hadoop fs -mkdir -p /china/txt/ hadoop fs -put /tmp/*.txt /china/txt/ # 下载 HDFS 上 /china/txt/ 路径下所有文件的内容到本地 hadoop fs -getmerge /china/txt/* /tmp/CCC.txt
tail:显示 HDFS 上的文件最后 1KB 的内容
# 直接显示 hadoop fs -tail /AAA.txt # 监控显示,有新数据追加进来时会实时显示 hadoop fs -tail -f /AAA.txt
rmdir:删除空文件夹
# 需要确保 HDFS 上的 /temp/ 目录为空 hadoop fs -rmdir /temp/
rm:删除文件或文件夹
# 删除 HDFS 上的 /china/ 目录 # f 目标目录不存在不提示 # r|R 递归删除 hadoop fs -rm -f -r /china/ hadoop fs -rmr -f /china/
如果启用了垃圾箱,则文件系统会将已删除的文件移动到垃圾箱目录,默认禁用垃圾箱功能
<!-- core-site.xml --> <!-- value 的值单位为分钟,设置大于零的值来启用垃圾箱功能 --> <!-- 如果在服务器端禁用垃圾,则检查客户端配置。 如果在服务器端启用了垃圾箱,则使用服务器上配置的值,并忽略客户端配置值 --> <property> <name>fs.trash.interval</name> <value>60*24*2</value> </property> <!-- value 的值单位为分钟,检查回收站的间隔时间,应小于或等于 fs.trash.interval。 如果为零,则值为fs.trash.interval的值 --> <!-- 每次 checkpointer 运行时,都会创建一个新的检查点,并删除超过 fs.trash.interval 分钟前创建的检查点 --> <property> <name>fs.trash.checkpoint.interval</name> <value>60*24*2</value> </property>
count,du:统计文件大小
hadoop fs -du -s -h / hadoop fs -count /
find:查找文件
# name 不区分大小写 # iname 区分大小写 # print 打印(默认) # print0 打印在一行 hadoop fs -find / -name *.txt -print
https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/FileSystemShell.html