HDFS学习笔记(二):HDFS 常用操作命令大全(Hadoop版本3.3.1)

命令格式

HDFS 命令格式1:hadoop fs -cmd <args>
HDFS 命令格式2:hdfs dfs -cmd <args>

-help

  • 使用格式:-help [命令选项]
  • 含义解析:帮助
  • 命令示例:
[hadoop@node3 testData]$ hdfs dfs -help ls
-ls [-C] [-d] [-h] [-q] [-R] [-t] [-S] [-r] [-u] [-e] [<path> ...] :
  List the contents that match the specified file pattern. If path is not
  specified, the contents of /user/<currentUser> will be listed. For a directory a
  list of its direct children is returned (unless -d option is specified).
  
  Directory entries are of the form:
  	permissions - userId groupId sizeOfDirectory(in bytes)
  modificationDate(yyyy-MM-dd HH:mm) directoryName
  
  and file entries are of the form:
  	permissions numberOfReplicas userId groupId sizeOfFile(in bytes)
  modificationDate(yyyy-MM-dd HH:mm) fileName
  
    -C  Display the paths of files and directories only.
    -d  Directories are listed as plain files.
    -h  Formats the sizes of files in a human-readable fashion
        rather than a number of bytes.
    -q  Print ? instead of non-printable characters.
    -R  Recursively list the contents of directories.
    -t  Sort files by modification time (most recent first).
    -S  Sort files by size.
    -r  Reverse the order of the sort.
    -u  Use time of last access instead of modification for
        display and sorting.
    -e  Display the erasure coding policy of files and directories.

-ls

  • 使用格式:-ls <路径>
  • 含义解析:查看指定路径的目录结构
  • 命令示例:
[hadoop@node3 ~]$ hdfs dfs -ls /
Found 3 items
drwxr-xr-x   - hadoop supergroup          0 2022-06-20 14:38 /hbase
drwxrwx---   - hadoop supergroup          0 2022-07-21 15:05 /tmp
drwxr-xr-x   - hadoop supergroup          0 2022-07-21 09:08 /user

-lsr

  • 使用格式:-lsr <路径> 或者 -lsR <路径>
  • 含义解析:递归查看指定路径的目录结构
  • 命令示例:
[hadoop@node3 ~]$ hdfs dfs -lsr /user/hadoop
lsr: DEPRECATED: Please use 'ls -R' instead.
drwxr-xr-x   - hadoop supergroup          0 2022-07-21 15:10 /user/hadoop/wordcount
drwxr-xr-x   - hadoop supergroup          0 2022-07-21 17:08 /user/hadoop/wordcount/input
-rw-r--r--   3 hadoop supergroup         52 2022-07-21 17:26 /user/hadoop/wordcount/input/echo_test.txt
-rw-r--r--   3 hadoop supergroup         69 2022-07-21 16:27 /user/hadoop/wordcount/input/word_count_test.txt
drwxr-xr-x   - hadoop supergroup          0 2022-07-21 15:10 /user/hadoop/wordcount/output
-rw-r--r--   3 hadoop supergroup          0 2022-07-21 15:10 /user/hadoop/wordcount/output/_SUCCESS
-rw-r--r--   3 hadoop supergroup         54 2022-07-21 15:10 /user/hadoop/wordcount/output/part-r-00000

-du

  • 使用格式:-du <路径>
  • 含义解析:统计目录下各个文件大小
  • 命令示例:
[hadoop@node3 ~]$ hdfs dfs -du /
59126   177378   /hbase
850533  2551599  /tmp
175     525      /user

-dus

  • 使用格式:-du <路径> 或者 -du -s <路径>
  • 含义解析:统计目录下整个文件(夹)大小
  • 命令示例:
[hadoop@node3 ~]$ hdfs dfs -dus /
dus: DEPRECATED: Please use 'du -s' instead.
909834  2729502  /

-count

  • 使用格式:-count [-q] <路径>
  • 含义解析:统计目录下文件(夹)数量
  • 命令示例:
[hadoop@node3 ~]$ hdfs dfs -count /
          70           48             909834 /
[hadoop@node3 ~]$ hdfs dfs -count -q /
9223372036854775807 9223372036854775689            none             inf           70           48             909834 /

-mv

  • 使用格式:-mv <源路径> <目的路径>
  • 含义解析:移动或者重命名
  • 命令示例1,移动文件:
[hadoop@node3 testData]$ hdfs dfs -ls /user/hadoop/test
Found 1 items
-rw-r--r--   3 hadoop supergroup         69 2022-07-22 15:32 /user/hadoop/test/word_count_test.txt
[hadoop@node3 testData]$ hdfs dfs -mv /user/hadoop/test/word_count_test.txt /user/hadoop/test01
[hadoop@node3 testData]$ hdfs dfs -ls /user/hadoop/test01
Found 1 items
-rw-r--r--   3 hadoop supergroup         69 2022-07-22 15:32 /user/hadoop/test01/word_count_test.txt
  • 命令示例2,重命名文件:
[hadoop@node3 testData]$ hdfs dfs -ls /user/hadoop/test01
Found 1 items
-rw-r--r--   3 hadoop supergroup         69 2022-07-22 15:32 /user/hadoop/test01/word_count_test.txt
[hadoop@node3 testData]$ hdfs dfs -mv /user/hadoop/test01/word_count_test.txt /user/hadoop/test01/word_count_test01.txt
[hadoop@node3 testData]$ hdfs dfs -ls /user/hadoop/test01
Found 1 items
-rw-r--r--   3 hadoop supergroup         69 2022-07-22 15:32 /user/hadoop/test01/word_count_test01.txt

-cp

  • 使用格式:-cp <源路径> <目的路径>
  • 含义解析:复制
  • 命令示例:
[hadoop@node3 testData]$ hdfs dfs -cp /user/hadoop/test01/word_count_test01.txt /user/hadoop/test/word_count_test02.txt
[hadoop@node3 testData]$ hdfs dfs -ls /user/hadoop/test/
Found 1 items
-rw-r--r--   3 hadoop supergroup         69 2022-07-22 15:56 /user/hadoop/test/word_count_test02.txt

-rm

  • 使用格式:-rm [-skipTrash] 路径
  • 含义解析:删除文件/空白文件夹(移动至垃圾回收箱),加 -skipTrash 是从垃圾回收箱彻底删除,特别是删除一些大文件特别有用
  • 命令示例:
[hadoop@node3 testData]$ hdfs dfs -rm /user/hadoop/test/word_count_test02.txt
Deleted /user/hadoop/test/word_count_test02.txt

-rmr

  • 使用格式:-rmr [-skipTrash] 路径 或者 -rm -r [-skipTrash] 路径
  • 含义解析:删除,递归删除
  • 命令示例:
[hadoop@node3 testData]$ hdfs dfs -ls /user/hadoop/test/t_01/t_02/t_03
[hadoop@node3 testData]$ hdfs dfs -rmr /user/hadoop/test/t_01
rmr: DEPRECATED: Please use '-rm -r' instead.
Deleted /user/hadoop/test/t_01
[hadoop@node3 testData]$ hdfs dfs -ls /user/hadoop/test/
[hadoop@node3 testData]$ 

-put

  • 使用格式:-put [-f] <多个linux上的文件> <hdfs路径>
  • 含义解析:上传文件到hdfs,加上 -f 是强制上传,如果hdfs文件已经存在同名文件则覆盖。
  • 命令示例:
[hadoop@node3 testData]$ hdfs dfs -put word_count_test.txt echo_test.sh /user/hadoop/test/test01
[hadoop@node3 testData]$ hdfs dfs -ls /user/hadoop/test/test01
Found 2 items
-rw-r--r--   3 hadoop supergroup         87 2022-07-22 16:07 /user/hadoop/test/test01/echo_test.sh
-rw-r--r--   3 hadoop supergroup         69 2022-07-22 16:07 /user/hadoop/test/test01/word_count_test.txt

-getmerge

  • 使用格式:-getmerge <源hdfs路径> <linux路径>
  • 含义解析:合并文件到本地
  • 命令示例:
[hadoop@node3 testData]$ hdfs dfs -ls /user/hadoop/test/test01
Found 5 items
-rw-r--r--   3 hadoop supergroup         87 2022-07-22 16:07 /user/hadoop/test/test01/echo_test.sh
drwxr-xr-x   - hadoop supergroup          0 2022-07-22 17:14 /user/hadoop/test/test01/test02
-rw-r--r--   3 hadoop supergroup         69 2022-07-22 16:07 /user/hadoop/test/test01/word_count_test.txt
-rwxr--r--   3 hadoop hadoop             69 2022-07-22 16:12 /user/hadoop/test/test01/word_count_test01.txt
-rw-r--r--   3 hadoop supergroup         69 2022-07-22 16:43 /user/hadoop/test/test01/word_count_test03.txt
[hadoop@node3 testData]$ hdfs dfs -getmerge /user/hadoop/test/test01 ./test01_getmerge.txt
[hadoop@node3 testData]$ ll
总用量 20
-rw-rw-r--. 1 hadoop hadoop  87 7月  21 17:00 echo_test.sh
-rw-r--r--. 1 hadoop hadoop 294 7月  22 17:40 test01_getmerge.txt
-rw-rw-r--. 1 hadoop hadoop  69 7月  22 16:11 word_count_test01.txt
-rw-rw-r--. 1 hadoop hadoop  69 7月  22 16:11 word_count_test02.txt
-rw-rw-r--. 1 hadoop hadoop  69 7月  21 14:55 word_count_test.txt
[hadoop@node3 testData]$ cat test01_getmerge.txt 
#!/bin/bash
user=`hdfs dfs -cat /user/hadoop/wordcount/input/echo_test.txt`
echo $user
hello world leo825
hello world hadoop
hello that girl
hello that boy
hello world leo825
hello world hadoop
hello that girl
hello that boy
hello world leo825
hello world hadoop
hello that girl
hello that boy

-copyFromLocal

  • 使用格式:-copyFromLocal <多个linux上的文件> <hdfs路径>
  • 含义解析:从本地复制
  • 命令示例:
[hadoop@node3 testData]$ hdfs dfs -copyFromLocal /home/hadoop/testData/word_count_test01.txt /user/hadoop/test/test01
[hadoop@node3 testData]$ hdfs dfs -ls /user/hadoop/test/test01
Found 3 items
-rw-r--r--   3 hadoop supergroup         87 2022-07-22 16:07 /user/hadoop/test/test01/echo_test.sh
-rw-r--r--   3 hadoop supergroup         69 2022-07-22 16:07 /user/hadoop/test/test01/word_count_test.txt
-rw-r--r--   3 hadoop supergroup         69 2022-07-22 16:12 /user/hadoop/test/test01/word_count_test01.txt

-moveFromLocal

  • 使用格式:-moveFromLocal <多个linux上的文件> <hdfs路径>
  • 含义解析:将本地文件移动到HDFS(相当于剪切)
  • 命令示例:
[hadoop@node3 testData]$ hdfs dfs -moveFromLocal /home/hadoop/testData/word_count_test03.txt /user/hadoop/test/test01/
[hadoop@node3 testData]$ hdfs dfs -ls /user/hadoop/test/test01/
Found 4 items
-rw-r--r--   3 hadoop supergroup         87 2022-07-22 16:07 /user/hadoop/test/test01/echo_test.sh
-rw-r--r--   3 hadoop supergroup         69 2022-07-22 16:07 /user/hadoop/test/test01/word_count_test.txt
-rw-r--r--   3 hadoop supergroup         69 2022-07-22 16:12 /user/hadoop/test/test01/word_count_test01.txt
-rw-r--r--   3 hadoop supergroup         69 2022-07-22 16:43 /user/hadoop/test/test01/word_count_test03.txt

-cat

  • 使用格式:-cat <hdfs文件路径>
  • 含义解析:查看文件内容
  • 命令示例:
[hadoop@node3 testData]$ hdfs dfs -cat /user/hadoop/test/test01/word_count_test.txt
hello world leo825
hello world hadoop
hello that girl
hello that boy

-text

  • 使用格式:-text <hdfs文件路径>
  • 含义解析:查看文件内容
  • 命令示例:
[hadoop@node3 testData]$ hdfs dfs -text /user/hadoop/test/test01/word_count_test.txt
hello world leo825
hello world hadoop
hello that girl
hello that boy

-tail

  • 使用格式:-tail [-f] <hdfs文件路径>
  • 含义解析:查看文件尾部信息
  • 命令示例:
[hadoop@node3 testData]$ hdfs dfs -tail -f /user/hadoop/test/test01/word_count_test01.txt
hello world leo825
hello world hadoop
hello that girl
hello that boy

-copyToLocal

  • 使用格式:-copyToLocal [-ignoreCrc] [-crc] <hdfs源路径> <linux目的路径>
  • 含义解析:将hdfs文件复制到本地
  • 命令示例:
[hadoop@node3 testData]$ hdfs dfs -copyToLocal /user/hadoop/test/test01/word_count_test03.txt ./
[hadoop@node3 testData]$ ll
总用量 20
-rw-rw-r--. 1 hadoop hadoop 87 7月  21 17:00 echo_test.sh
-rw-rw-r--. 1 hadoop hadoop 69 7月  22 16:11 word_count_test01.txt
-rw-rw-r--. 1 hadoop hadoop 69 7月  22 16:11 word_count_test02.txt
-rw-r--r--. 1 hadoop hadoop 69 7月  22 16:52 word_count_test03.txt
-rw-rw-r--. 1 hadoop hadoop 69 7月  21 14:55 word_count_test.txt

-mkdir

  • 使用格式:-mkdir <hdfs路径>
  • 含义解析:创建空白文件件,只能创建一级,如果想创建多级目录需增加参数 -p
  • 命令示例:
[hadoop@node3 testData]$ hdfs dfs -mkdir -p /user/hadoop/test/test01/test02/test03
[hadoop@node3 testData]$ hdfs dfs -ls -R /user/hadoop/test/test01/
-rw-r--r--   3 hadoop supergroup         87 2022-07-22 16:07 /user/hadoop/test/test01/echo_test.sh
drwxr-xr-x   - hadoop supergroup          0 2022-07-22 17:14 /user/hadoop/test/test01/test02
drwxr-xr-x   - hadoop supergroup          0 2022-07-22 17:14 /user/hadoop/test/test01/test02/test03
-rw-r--r--   3 hadoop supergroup         69 2022-07-22 16:07 /user/hadoop/test/test01/word_count_test.txt
-rw-r--r--   3 hadoop supergroup         69 2022-07-22 16:12 /user/hadoop/test/test01/word_count_test01.txt
-rw-r--r--   3 hadoop supergroup         69 2022-07-22 16:43 /user/hadoop/test/test01/word_count_test03.txt

-touchz

  • 使用格式:-touchz <hdfs文件路径>
  • 含义解析:创建空白文件
  • 命令示例:
[hadoop@node3 testData]$ hdfs dfs -touchz /user/hadoop/test/test01/test02/test03/test001.txt
[hadoop@node3 testData]$ hdfs dfs -ls /user/hadoop/test/test01/test02/test03/test001.txt
-rw-r--r--   3 hadoop supergroup          0 2022-07-22 17:18 /user/hadoop/test/test01/test02/test03/test001.txt

-stat

  • 使用格式:-stat <hdfs文件路径>
  • 含义解析:显示文件统计信息
  • 命令示例:
[hadoop@node3 testData]$ hdfs dfs -stat /user/hadoop/test/test01/word_count_test.txt
2022-07-22 08:07:35

-chomd

  • 使用格式:-chomd [-R] <权限模式> [路径]
  • 含义解析:修改权限
  • 命令示例:
[hadoop@node3 testData]$ hdfs dfs -ls /user/hadoop/test/test01/word_count_test01.txt
-rw-r--r--   3 hadoop supergroup         69 2022-07-22 16:12 /user/hadoop/test/test01/word_count_test01.txt
# u 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示所有(包含上面三者)。
# 设置拥有者 rwx 读写可执行权限
[hadoop@node3 testData]$ hdfs dfs -chmod u+rwx /user/hadoop/test/test01/word_count_test01.txt
[hadoop@node3 testData]$ hdfs dfs -ls /user/hadoop/test/test01/word_count_test01.txt
-rwxr--r--   3 hadoop supergroup         69 2022-07-22 16:12 /user/hadoop/test/test01/word_count_test01.txt

-chomn

  • 使用格式:-chomn [-R] [属主]:[属组] 路径
  • 含义解析:修改文件拥有者权限,该用户改分组
  • 命令示例:
[hadoop@node3 testData]$ hdfs dfs -ls /user/hadoop/test/test01/word_count_test01.txt
-rwxr--r--   3 hadoop supergroup         69 2022-07-22 16:12 /user/hadoop/test/test01/word_count_test01.txt
[hadoop@node3 testData]$ hdfs dfs -chown hadoop:hadoop /user/hadoop/test/test01/word_count_test01.txt
[hadoop@node3 testData]$ hdfs dfs -ls /user/hadoop/test/test01/word_count_test01.txt
-rwxr--r--   3 hadoop hadoop         69 2022-07-22 16:12 /user/hadoop/test/test01/word_count_test01.txt

-chgrp

  • 使用格式:-chgrp[-R] 属组名称 路径
  • 含义解析:修改文件分组
  • 命令示例:
[hadoop@node3 testData]$ hdfs dfs -ls /user/hadoop/test/test01
Found 5 items
-rw-r--r--   3 hadoop supergroup         87 2022-07-22 16:07 /user/hadoop/test/test01/echo_test.sh
drwxr-xr-x   - hadoop supergroup          0 2022-07-22 17:14 /user/hadoop/test/test01/test02
-rw-r--r--   3 hadoop supergroup         69 2022-07-22 16:07 /user/hadoop/test/test01/word_count_test.txt
-rwxr--r--   3 hadoop hadoop             69 2022-07-22 16:12 /user/hadoop/test/test01/word_count_test01.txt
-rw-r--r--   3 hadoop supergroup         69 2022-07-22 16:43 /user/hadoop/test/test01/word_count_test03.txt
[hadoop@node3 testData]$ hdfs dfs -chgrp hadoop /user/hadoop/test/test01/word_count_test01.txt
[hadoop@node3 testData]$ hdfs dfs -ls /user/hadoop/test/test01/word_count_test01.txt
-rwxr--r--   3 hadoop hadoop         69 2022-07-22 16:12 /user/hadoop/test/test01/word_count_test01.txt

hdfs dfsadmin

# 报告当前集群的情况
hdfs dfsadmin -report 
# 安全模式。
hdfs dfsadmin -safemode  
# leave代表关闭,安全模式关闭才是读写正常的。
hdfs dfsadmin -safemode leave  
# 进入安全模式。如正在做集群维护时,就可以手动进入安全模式,维护完再离开
hdfs dfsadmin -safemode enter 
# 安全模式下,能读不能写
>Safemode is On     

hdfs fsck

// 对hdfs 做检查。如发现 Target Replicas is 3 but 1 live replica(s) 代表有副本丢失。文件权限后的数据就代表当前文件本来需有多少副本
hdfs fsck

hdfs balancer

# 集群平衡。DN1 与 DN2 间节点平衡。封装到脚本,每天晚上定执行
hdfs balancer  
# 让 每个节点磁盘使用率,减去平均磁盘使用率 < 10%
hdfs balancer -policy datanode -threshold 10  
# 磁盘平衡。DN1中 多块磁盘的平衡。需要确保参数dfs.disk.balancer.enabled=true
hdfs diskbalancer

# 执行命令: 先生成计划  再执行
hdfs diskbalancer -plan ruozedata001
# 生产后会创建一个同名.plan.json文件,执行它
hdfs diskbalancer -execute ruozedata001.plan.json

shell将字符串写入hdfs文件

将 “hello world“ 字符串追加到 hdfs 文件

echo "hello world" | hdfs dfs -appendToFile - /user/hadoop/test/test01/word_count_test01.txt

测试代码:

[hadoop@node3 testData]$ hdfs dfs -cat /user/hadoop/test/test01/word_count_test01.txt
hello world leo825
hello world hadoop
hello that girl
hello that boy
[hadoop@node3 testData]$ echo "hello world" | hdfs dfs -appendToFile - /user/hadoop/test/test01/word_count_test01.txt
[hadoop@node3 testData]$ hdfs dfs -cat /user/hadoop/test/test01/word_count_test01.txt
hello world leo825
hello world hadoop
hello that girl
hello that boy
hello world

shell将hdfs文件内容读出来

#!/bin/bash
str=`hdfs dfs -cat /user/hadoop/test/test01/word_count_test01.txt`
echo $str              

测试结果:

[hadoop@node3 testData]$ sh echo_test.sh 
hello world leo825 hello world hadoop hello that girl hello that boy hello world

猜你喜欢

转载自blog.csdn.net/u011047968/article/details/125933092