1. 查看hdfs根目录下的文件:hadoop fs -ls hdfs://master:9000/
可以简写为以下的形式:hadoop fs -ls /
或者这么写:hdfs dfs -ls /
2. 创建文件夹:hadoop fs -mkdir /test
3. 在指定文件夹中创建空文件:hadoop fs -touchz /test/zs.txt
文件为空时 再创建一个同名的文件不会报错
4. 上传本地文件到HDFS(将Linux系统下当前目录下的a.php文件上传到根目录下):hadoop fs -put ./a.php /test
文件存在时 如果再上传相同的文件 就会报错
选项-f:如果文件存在 则再上传相同的文件直接覆盖之前的文件
5. 显示文件内容:hadoop fs -cat /test/a.php
6. 从hdfs下载文件到本地:hadoop fs -get /test/a.php
没有覆盖本地文件的选项 如果本地存在相同文件 则会报错
7. 将本地文件移动到hdfs中(与put功能类似 不同之处在于 moveFromLocal会删除本地的文件 而put则不会)
hadoop fs -moveFromLocal ./b.php /test
8. 将hdfs中的文件移动到本地(moveToLocal与get功能类似 不同之处在于 moveToLocal会删除hdfs中的文件 而get则不会)
9. 将本地文件拷贝到hdfs中(copyFromLocal与put功能相同):hadoop fs -copyFromLocal ./c.php /test
10. 将hdfs中的文件拷贝到到本地(copyToLocal与get功能相同)
11. 将本地的文件追加到hdfs中已经存在的文件末尾:hdfs fs -appendToFile ./test.php /test/a.php
12. 查看文件末尾:hadoop fs -tail /test/a.php
13. 以字符形式显示文件内容:hadoop fs -text /test/a.php(功能类似于cat 区别在于如果不是字符文件 则会显示乱码)
14. 修改文件权限:hadoop fs -chmod 777 /test/a.php
15. 修改文件用户和组:hadoop fs -chown 777 /test/a.php(hadoop没有用户的概念 它是一种弱的权限控制 并不会检验用户是否存在 即使该用户和组不存在也可以设置成功 你指定它的用户和组是谁就是谁)
16. 将文件从hdfs的一个路径拷贝到另外一个路径:hadoop fs -cp /test/a.php /
拷贝相同的文件到同一个目录中会报错
-f参数会直接忽视错误 不管文件是否存在 强行将文件拷贝过去
17. 将文件从hdfs的一个路径拷贝到另外一个路径:hadoop fs -mv /test/c.php /
18. 将多个文件从hdfs上合并下载到本地:hadoop fs -getmerge /test/*.php ./merge.php
这是hadoop的bug 参数中有*时 它会在本地查找 而不是在hdfs中查找 要想避免这种问题 就要把地址写全
19. 删除文件:hadoop fs -rm /test/a.php
-r参数表示递归删除某个目录下的所有文件和子目录:hadoop fs -rm -r /test
20. 删除空目录:hadoop fs -rmdir /test/a.php(这个命令无法删除非空目录)
21. 统计文件系统的可用空间信息:hadoop fs -df
hadoop fs -df -h /
22. 统计文件及目录的大小信息:hadoop -fs du /
-s 参数表示显示大小信息 -h参数表示带单位:hadoop -fs du -s -h /
23. 统计一个指定目录下的文件节点数目:hadoop fs -count /
24. 设置hdfs中文件副本数目:hadoop fs -setrep 2 /a.php(文件夹只是一种描述文件的特殊文件 是文件系统的元数据 它本身并不存储数据 因此在hdfs中副本数为0)
a.php文件 在设置之前的副本数为3
a.php文件 在设置之后的副本数为2
需要注意的是:这里设置的副本数只是在NameNode的元数据中记录下来了 如果设置的副本数小于当前服务器的节点数 则集群中该文件的副本数就是设置的这个副本数 因为它会迅速复制出副本 而如果设置的副本数大于当前服务器的节点数 集群中该文件的副本数就等于节点数 因为当前集群没有能力保证文件副本数达到设置的副本数 只有当集群中增加新的机器时 才会复制剩余的副本