当前位置:   article > 正文

大数据从入门到实战-HDFS基本操作_第1关:hdfs的基本操作

第1关:hdfs的基本操作

HDFS的常用命令

接下来我们来了解一下一些常用的文件系统操作,例如:读取文件,新建目录,移动文件,删除数据,列出目录,等等。你可以在命令行中输入hadoop fs -help 命令读取每个命令的详细帮助文件。

现在请跟着我一起,在Linux环境下对Hadoop进行文件系统操作,来体验一下Hadoop的使用。

新建目录:

在本地和hadoop中分别创建文件夹:

本地创建目录:

  1. root@evassh-12039904:~# mkdir /develop
  2. root@evassh-12039904:~# mkdir /develop/input
  3. root@evassh-12039904:~# mkdir /develop/output

hadoop创建目录:

  1. root@evassh-12039904:~# start-dfs.sh
  2. Starting namenodes on [localhost]
  3. localhost: Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
  4. localhost: starting namenode, logging to /usr/local/hadoop/logs/hadoop-root-namenode-evassh-12039904.out
  5. localhost: Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
  6. localhost: starting datanode, logging to /usr/local/hadoop/logs/hadoop-root-datanode-evassh-12039904.out
  7. Starting secondary namenodes [0.0.0.0]
  8. 0.0.0.0: Warning: Permanently added '0.0.0.0' (ECDSA) to the list of known hosts.
  9. 0.0.0.0: starting secondarynamenode, logging to /usr/local/hadoop/logs/hadoop-root-secondarynamenode-evassh-12039904.out
  10. root@evassh-12039904:~# hadoop fs -mkdir /usr
  11. root@evassh-12039904:~# hadoop fs -mkdir /usr/input
  12. root@evassh-12039904:~# hadoop fs -mkdir /usr/output

上传文件至dfs:

切换到本地input目录下,创建文件并添加数据:hello hadoop

  1. root@evassh-12039904:~# cd /develop/input/
  2. root@evassh-12039904:/develop/input# touch helloworld.txt
  3. root@evassh-12039904:/develop/input# vi helloworld.txt

将该文件上传至hadoop:使用hadoop fs -put <要上传的文件> <hdfs目录> 命令。

root@evassh-12039904:/develop/input# hadoop fs -put helloworld.txt /usr/output

查看上传到HDFS的文件:

hadoop fs -cat /usr/output/helloworld.txt

移动与删除

列出HDFS中的目录和文件:

  1. root@evassh-12039904:/develop/input# hadoop fs -ls /usr/hadoop
  2. ls: `/usr/hadoop': No such file or directory
  3. root@evassh-12039904:/develop/input# hadoop fs -ls /user/hadoop
  4. root@evassh-12039904:/develop/input# hadoop fs -ls /
  5. Found 2 items
  6. drwxr-xr-x - root supergroup 0 2017-10-17 07:21 /user
  7. drwxr-xr-x - root supergroup 0 2022-07-26 07:00 /usr

  1. root@evassh-12039904:/develop/input# hadoop fs -ls /usr
  2. Found 2 items
  3. drwxr-xr-x - root supergroup 0 2022-07-26 07:00 /usr/input
  4. drwxr-xr-x - root supergroup 0 2022-07-26 07:04 /usr/output
  5. root@evassh-12039904:/develop/input# hadoop fs -ls /usr/output
  6. Found 1 items
  7. -rw-r--r-- 1 root supergroup 15 2022-07-26 07:04 /usr/output/helloworld.txt

helloworld.txt移动到根目录;

  1. root@evassh-12039904:/develop/input# hadoop fs -mv /usr/output/helloworld.txt /
  2. root@evassh-12039904:/develop/input# hadoop fs -ls /
  3. Found 3 items
  4. -rw-r--r-- 1 root supergroup 15 2022-07-26 07:04 /helloworld.txt
  5. drwxr-xr-x - root supergroup 0 2017-10-17 07:21 /user
  6. drwxr-xr-x - root supergroup 0 2022-07-26 07:00 /usr

删除helloworld.txt

  1. root@evassh-12039904:/develop/input# hadoop fs -rm /helloworld.txt
  2. 22/07/26 07:10:47 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 0 minutes, Emptier interval = 0 minutes.
  3. Deleted /helloworld.txt
  4. root@evassh-12039904:/develop/input# hadoop fs -ls /
  5. Found 2 items
  6. drwxr-xr-x - root supergroup 0 2017-10-17 07:21 /user
  7. drwxr-xr-x - root supergroup 0 2022-07-26 07:00 /usr

hadoop fs -rm 命令只能删除文件或者空文件夹,如果要用这个命令去删除非空文件夹就会非常麻烦。

Linux中递归删除一致,我们在-rm之后加入一个-r即可,用-rmr也可。

下表列出了Hadoop常用的shell命令,在之后使用的时候可以作为参考。

选项名称使用格式含义
-ls-ls <路径>查看指定路径的当前目录结构
  1. |-lsr |-lsr <路径> | 递归查看指定路径的目录结构|
  2. |-du |-du <路径> | 统计目录下个文件大小|
  3. |-dus |-dus <路径> | 汇总统计目录下文件(夹)大小|
  4. |-count| -count [-q] <路径> | 统计文件(夹)数量|
  5. |-mv |-mv <源路径> <目的路径> | 移动|
  6. |-cp |-cp <源路径> <目的路径> | 复制|
  7. |-rm |-rm [-skipTrash] <路径> | 删除文件/空白文件夹|
  8. |-rmr |-rmr [-skipTrash] <路径> | 递归删除|
  9. |-put |-put <多个 linux 上的文件> <hdfs 路径> | 上传文件|
  10. |-copyFromLocal| -copyFromLocal <多个 linux 上的文件><hdfs 路径> | 从本地复制|
  11. |-moveFromLocal |-moveFromLocal <多个 linux 上的文件><hdfs 路径> | 从本地移动|
  12. |-getmerge |-getmerge <源路径> <linux 路径> | 合并到本地|
  13. |-cat |-cat <hdfs 路径> | 查看文件内容|
  14. |-text |-text <hdfs 路径> | 查看文件内容|
  15. |-copyToLocal |-copyToLocal [-ignoreCrc] [-crc] [hdfs 源路径] [linux 目的路径] | 从HDFS复制到本地|
  16. |-moveToLocal |-moveToLocal [-crc] <hdfs 源路径> <linux目的路径> | 从HDFS移动到本地|
  17. |-mkdir |-mkdir <hdfs 路径> | 创建空白文件夹|
  18. |-setrep | -setrep [-R] [-w] <副本数> <路径> | 修改副本数量|
  19. |-touchz | -touchz <文件路径> | 创建空白文件|

  • HDFS中创建/usr/output/文件夹;
  • 在本地创建hello.txt文件并添加内容:“HDFS的块比磁盘的块大,其目的是为了最小化寻址开销。”;
  • hello.txt上传至HDFS/usr/output/目录下;
  • 删除HDFS/user/hadoop目录;
  • Hadoop上的文件hello.txtHDFS复制到本地/usr/local目录
  1. root@evassh-12039904:/develop/input# touch hello.txt
  2. root@evassh-12039904:/develop/input# vi hello.txt
  3. root@evassh-12039904:/develop/input# hadoop fs -put hello.txt /usr/output
  4. root@evassh-12039904:/develop/input# hadoop fs -ls /usr/output
  5. Found 1 items
  6. -rw-r--r-- 1 root supergroup 74 2022-07-26 07:22 /usr/output/hello.txt
  7. root@evassh-12039904:/develop/input# hadoop fs -rm -r /user/hadoop
  8. 22/07/26 07:22:52 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 0 minutes, Emptier interval = 0 minutes.
  9. Deleted /user/hadoop
  10. root@evassh-12039904:/develop/input# hadoop fs -get /usr/output/hello.txt /usr/local
  11. root@evassh-12039904:/develop/input# ls /usr/local
  12. bin etc games hadoop hello.txt include lib man sbin share src
  13. root@evassh-12039904:/develop/input#

完整代码

  1. pwd
  2. 回车
  3. cd /
  4. 回车
  5. mkdir /develop
  6. 回车
  7. mkdir /dev
  8. 回车
  9. mkdir /develop/input
  10. 回车
  11. mkdir /develop/output
  12. 回车
  13. start-dfs.sh
  14. 回车
  15. hadoop fs -mkdir /usr
  16. 回车
  17. hadoop fs -mkdir /usr/input
  18. 回车
  19. hadoop fs -mkdir /usr/output
  20. 回车
  21. hadoop fs -ls /
  22. 回车
  23. hadoop fs -ls /usr
  24. 回车
  25. cd /dev
  26. 回车
  27. cd /develop/input
  28. 回车
  29. touch helloworld.txt
  30. 回车
  31. vim helloworld.txt
  32. 回车
  33. hello hadoop
  34. 退出 :wq
  35. hadoop fs -put helloworld.txt /usr/output
  36. 回车
  37. hadoop fs -cat /usr/output/helloworld.txt
  38. 回车
  39. hadoop fs -ls /user/hadoop
  40. 回车
  41. hadoop fs -ls /
  42. 回车
  43. hadoop fs -ls /usr
  44. 回车
  45. hadoop fs -ls /user
  46. 回车
  47. hadoop fs -mv /usr/output/helloworld.txt /
  48. 回车
  49. hadoop fs -ls /
  50. 回车
  51. hadoop fs -rm /helloworld.txt
  52. 回车
  53. hadoop fs -mkdir /usr/output
  54. 回车
  55. touch hello.txt
  56. 回车
  57. vim hello.txt
  58. 回车
  59. HDFS 的块比磁盘的块大,其目的是为了最小化寻址开销。
  60. 退出 wq
  61. hadoop fs -put hello.txt /usr/output
  62. 回车
  63. hadoop fs -ls /usr/output
  64. 回车
  65. hadoop fs -rm -r /user/hadoop
  66. 回车
  67. hadoop fs -get /usr/output/hello.txt /usr/local
  68. 回车
  69. ls /usr/local

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号