环境搭建好了后,就是操作了,先介绍在命令行下的操作。

shell操作方式

必须在hadoop的安装的节点上

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
hadoop  fs
[-appendToFile <localsrc> ... <dst>]
[-cat [-ignoreCrc] <src> ...]
[-checksum <src> ...]
[-chgrp [-R] GROUP PATH...]
[-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...]
[-chown [-R] [OWNER][:[GROUP]] PATH...]
[-copyFromLocal [-f] [-p] [-l] <localsrc> ... <dst>]
[-copyToLocal [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]
[-count [-q] [-h] <path> ...]
[-cp [-f] [-p | -p[topax]] <src> ... <dst>]
[-createSnapshot <snapshotDir> [<snapshotName>]]
[-deleteSnapshot <snapshotDir> <snapshotName>]
[-df [-h] [<path> ...]]
[-du [-s] [-h] <path> ...]
[-expunge]
[-find <path> ... <expression> ...]
[-get [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]
[-getfacl [-R] <path>]
[-getfattr [-R] {-n name | -d} [-e en] <path>]
[-getmerge [-nl] <src> <localdst>]
[-help [cmd ...]]
[-ls [-d] [-h] [-R] [<path> ...]]
[-mkdir [-p] <path> ...]
[-moveFromLocal <localsrc> ... <dst>]
[-moveToLocal <src> <localdst>]
[-mv <src> ... <dst>]
[-put [-f] [-p] [-l] <localsrc> ... <dst>]
[-renameSnapshot <snapshotDir> <oldName> <newName>]
[-rm [-f] [-r|-R] [-skipTrash] <src> ...]
[-rmdir [--ignore-fail-on-non-empty] <dir> ...]
[-setfacl [-R] [{-b|-k} {-m|-x <acl_spec>} <path>]|[--set <acl_spec> <path>]]
[-setfattr {-n name [-v value] | -x name} <path>]
[-setrep [-R] [-w] <rep> <path> ...]
[-stat [format] <path> ...]
[-tail [-f] <file>]
[-test -[defsz] <path>]
[-text [-ignoreCrc] <src> ...]
[-touchz <path> ...]
[-truncate [-w] <length> <path> ...]
[-usage [cmd ...]]

例子

文件上传

注意:在文件上传的过程中

  • 如果没有指定文件名 以原来的文件名
  • 如果指定文件名 则以指定的文件名命名
  • hdfs不会自动创建上传文件的父目录 父目录一定要存在
1
2
3
4
5
6
7
8
# 原来的文件还在    复制的过程  本地文件复制到hdfs上
hadoop fs -put src dst

# 原来的文件还有
hadoop fs -copyFromLocal 本地文件路径 hdfs的文件路径(/)

#文件上传 完成之后 本地文件剪切
hadoop fs -moveFromLocal 本地文件路径 hdfs的文件路径

创建文件夹

1
2
3
# hadoop fs -mkdir hdfs的路径(/)
# -p 创建级联目录
hadoop fs -mkdir -p /hdp/aa01/bb

文件下载

1
2
3
4
5
6
7
8
9
10
11
12
# 从hdfs到本地
# hadoop fs -get hdfs文件路径 本地的文件路径
hadoop fs -get /hdfs-site.xml /home/hadoop/

# 拷贝的过程
#hadoop fs -copyToLocal hdfs文件路径 本地的文件路径
hadoop fs -copyToLocal /hdp/aa /home/hadoop/apps/

# hadoop fs -moveToLocal hdfs文件路径 本地的文件路径
# hdfs的文件下载完成 删除了
hadoop fs -moveToLocal /hdp/aa /home/hadoop/apps/tt //没有实现的
moveToLocal: Option '-moveToLocal' is not implemented yet.

查看文件的目录信息

1
2
3
4
5
6
7
# hadoop fs -ls hdfs目录
# 这个命令只能查看当前给定的目录下的目录树 不能级联查看

# 想要级联查看:
# hadoop fs -ls -R hdfs目录

hadoop fs -ls -R hdfs目录

删除文件或目录

1
2
3
4
5
6
# 删除文件:
hadoop fs -rm hdfs文件的绝对路径

# 删除目录:
#hadoop fs -rm -r -f hdfs目录
hadoop fs -rm -r -f /hdp

修改用户和组信息权限

1
2
3
4
5
6
# linux:
# chown 用户:组 文件
# chown -R 用户:组 目录

# hdfs修改用户和组:
hadoop fs -chown [-R] 用户:组 hdfs的路径

修改文件的读写权限

1
2
3
4
5
6
7
8
9
10
11
# linux:
# chmod -R 文件读写权限 文件或目录
# 7(所属用户)5(所属组的其他用户)5(其他用户)
# rwx = 4 + 2 + 1 = 7
# rw = 4 + 2 = 6
# rx = 4 +1 = 5

# hadoop中:
# hadoop fs -chmod -R 权限 hdfs的文件或目录
hadoop fs -chmod 755 /test
hadoop fs -chmod -R 755 /ss

查看文件内容

1
2
3
4
5
6
# -cat
hadoop fs -cat hdfs的文件路径

# -tail
# 查看文件末尾1kb的数据
hadoop fs -tail hdfs的文件路径

新建一个空文件 了解

1
2
hadoop fs -touchz hdfs文件路径
hadoop fs -touchz /oo

hdfs的文件的移动和复制

1
2
3
4
5
# hadoop fs -mv hdfs路径 hdfs路径
hadoop fs -mv /test /ss

# hadoop fs -cp hdfs路径 hdfs路径
hadoop fs -cp /ss/test /

其他

-appendToFile 追加

追加到hdfs原始文件的末尾.

这里的追加在原始的数据块上追加的 如果原始的数据块超过128M 则会切分

1
2
#hadoop fs -appendToFile 本地文件 hdfs的文件
hadoop fs -appendToFile aa /ss/test 了解

合并下载:-getmerge

1
2
3
4
5
# 将hdfs的多个文件合并为一个文件下载到本地
# hadoop fs -getmerge hdfs的多个文件路径(空格) 本地文件路径

# 按照给的路径的顺序 进行合并下载的
hadoop fs -getmerge /test /ss/test /ss/aa01 /home/hadoop/merge

磁盘空间查看

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 查看所在分区的磁盘使用情况
[root@hadoop01 ~]# hadoop fs -df -h /
Filesystem Size Used Available Use%
hdfs://hadoop01:9000 54.0 G 1.0 G 51.1 G 2%

# 每一个文件的大小
[root@hadoop01 ~]# hadoop fs -du -h /
342.6 M 685.1 M /hadoop-3.2.1.tar.gz
186.1 M 372.1 M /jdk-8u221-linux-x64.tar.gz
360 916 /wordcount
df 命令
检查磁盘空间占用情况(并不能查看某个目录占用的磁盘大小)。

命令格式:
df [option]

-h 以容易理解的格式(给人看的格式)输出文件系统分区使用情况,例如 10kB、10MB、10GB 等。
-k 以 kB 为单位输出文件系统分区使用情况。
-m 以 mB 为单位输出文件系统分区使用情况。
-a 列出所有的文件系统分区,包含大小为 0 的文件系统分区。
-i 列出文件系统分区的 inodes 信息。
-T 显示磁盘分区的文件系统类型。


du 命令
显示文件或目录所占的磁盘空间。

命令格式:
du [option] 文件/目录

-h 以容易理解的格式(给人看的格式)输出文件系统分区使用情况,例如 10kB、10MB、10GB 等。
-s 显示文件或整个目录的大小,默认单位为 kB。

设置副本个数方式

hdfs-default.xml

默认的副本个数3

hdfs-site.xml

改为2

通过命令设置副本个数

1
2
3
4
5
6
7
8
# 这个命令只能修改指定路径的  副本的个数
# -R 级联
# -w wait 等待新的设定的副本完成
hadoop fs -setrep 副本个数 hdfs路径

# 这个命令修改的只能是已经上传过的文件
# 对于新上传的文件 仍然按照的是hdfs-site.xml文件中的【配置】
hadoop fs -setrep -R 4 /ss