01 引言
在前面的教程,我们对HDFS
有一个简单的认识了,有兴趣的同学可以参阅:
本文主要简介HDFS
的安装与命令的汇总。
02 HDFS安装
因为HDFS
是Hadoop
的核心组件,所以安装了Hadoop
就相当于把HDFS
安装了,具体的安装方式可以参考之前写的博客《Mac下安装Hadoop》,因为本人使用的是mac
系统,所以这里只有mac
版的安装教程了,其实原理都差不多的。
03 HDFS命令汇总
3.1 新增操作
3.1.1 创建文件夹(mkdir命令)
# 创建一个abc目录 hdfs dfs -mkdir /user/zhang/abc
3.1.2 文件上传(put命令)
# 将client node中的NOTICE.txt文件 put 到hdfs的/user/zhang文件夹中 hdfs dfs -put NOTICE.txt /user/zhang # 如果文件存在,可以使用-f参数进行覆盖 hdfs dfs -put -f NOTICE.txt /user/zhang
3.1.3 文件复制(cp命令)
copyFromLocal命令:
# 这个命令和put作用相同(如果存在`LCENSE.txt文件`,要进行覆盖,加上`-f`参数,和put命令一样) hdfs dfs -copyFromLocal LICENSE.txt /user/zhang
copyToLocal 命令:
# 复制hdfs的/user/zhang/test/README.txt文件到client node当前目录 hdfs dfs -copyToLocal /user/zhang/test/README.txt # 如果需要复制到指定目录 hdfs dfs -copyToLocal /user/zhang/test/README.txt /指定目录
cp 命令:
# 将/user/zhang/NOTICE.txt 复制到 /user/zhang/test目录 hdfs dfs -cp /user/zhang/NOTICE.txt /user/zhang/test
3.1.4 移动文件(mv命令)
hdfs dfs -mv 要移动的文件 目标文件夹目录
3.1.5 创建空文件(touchz命令)
创建一个0字节的空文件。
格式:
touchz <path>
示例:
hdfs dfs -touchz /user/dataflair/dir2
3.2 删除操作
3.2.1 删除文件夹(rmdir命令)
# 删除/user/zhang/demo目录 hdfs dfs rmdir /user/zhang/demo
3.2.2 删除文件(rm命令)
# 删除/user/zhang/NOTICE.txt文件 hdfs dfs -rm /user/zhang/NOTICE.txt # 删除/user/zhang/abc目录 hdfs dfs -rm -r /user/zhang/abc
3.2.3 清空回收站(expunge命令)
hdfs dfs -expunge
3.3 查看操作
3.3.1 获取文件(get 命令)
# 获取hdfs中的/user/zhang/test/README.txt.gz文件,到client node当前目录 hdfs dfs -get /user/zhang/test/README.txt.gz # 和copyToLocal命令一样
3.3.2 查看文件(ls、du、df、cat、tail 命令)
ls 命令:
# 查看hdfs根目录 hdfs dfs -ls / # 查看hdfs其它目录(/user/zhang) hdfs dfs -ls /user/zhang
du 命令:
hdfs dfs -du /user/zhang # 将字节自动转化成单位 hdfs dfs -du -h /user/zhang
df 命令:
# 查看根目录磁盘空间 hdfs dfs -df /
cat 命令:
# 查看文件 hdfs dfs -cat /user/zhang/test/README.txt
tail 命令( 类似还有 head ):
hdfs dfs -tail /user/zhang/test/README.txt • 1
3.3.3 文件检查(test 命令)
用于文件检测操作,如果路径存在,返回 1,如果是目录返回 0。
格式:
hdfs dfs -test -[ezd] URI
选项:
-e 检查文件是否存在。如果存在则返回0。 -z 检查文件是否是0字节。如果是则返回0。 -d 如果路径是个目录,则返回1,否则返回0。
示例:
hdfs dfs -test -e sample hdfs dfs -test -z sample hdfs dfs -test -d sample
3.3.4 text文件(text 命令)
将源文件输出为文本格式。允许的格式是 zip
和 TextRecordInputStream
。
格式:
hdfs dfs -text <source>
示例:
hdfs dfs -text /user/dataflair/dir1/sample
3.3.5 路径信息统计(stat 命令)
返回指定路径统计信息。
格式:
hdfs dfs -stat path
示例:
hdfs dfs -stat /user/dataflair/dir1
3.3.6 文件校验(checksum 命令)
返回文件的校验和信息。
格式:
hadoop fs -checksum URI
示例:
hadoop fs -checksum /user/dataflair/dir1/sample
3.3.7 统计节点(count 命令)
统计一个指定目录下的文件结点数量。
格式:
hdfs dfs -count [-q] <paths>
示例:
$ hadoop fs -count /testelephant 2 1 108 testelephant
- 第一个数值 2 表示 /testelephant 下的文件夹的个数,
- 第二个数值 1 表是当前文件夹下文件的个数,
- 第三个数值 108 表示该文件夹下文件所占的空间大小,这个大小是不计算副本的个数的,单位是字节(byte)。
$ hadoop fs -count -q /sunwg 1024 1021 10240 10132 2 1 108 /testelephant
在 count 后面增加 -q 选项可以查看当前文件夹的限额使用情况。
- 第一个数值 1024 ,表示总的文件包括文件夹的限额。
- 第二个数值 1021 ,表示目前剩余的文件限额,即还可以创建这么多的文件或文件夹。
- 第三个数值 10240 ,表示当前文件夹空间的限额。
- 第四个数值 10132 ,表示当前文件夹可用空间的大小,这个限额是会计算多个副本的。
- 剩下的三个数值与 -count 的结果一样。
3.3.8 匹配指令(find 命令)
找出能匹配上的所有文件。
-name pattern不区分大小写,对大小写不敏感。 -iname pattern对大小写敏感。 -print打印。 -print0打印在一行。
格式:
hadoop fs -find <path> ... <expression> ...
示例:
hadoop fs -find /user/dataflair/dir1/ -name sample -print
3.4 修改操作
3.4.1 修改拥有者(chown)
改变文件的拥有者。使用-R
将使改变在目录结构下递归进行。命令的使用者必须是超级用户。
格式:
hadoop fs -chown [-R] [OWNER][:[GROUP]] URI [URI ]
示例:
hdfs dfs -chown -R dataflair /opt/hadoop/logs
3.4.2 修改所属组(chgrp)
改变文件所属的组。使用-R将使改变在目录结构下递归进行。命令的使用者必须是文件的所有者或者超级用户。
格式:
hdfs dfs -chgrp [-R] <NewGroupName> <file or directory name>
示例:
hdfs dfs -chgrp [-R] New Group sample
3.4.3 修改文件权限(chown)
改变文件的权限。使用-R将使改变在目录结构下递归进行。命令的使用者必须是文件的所有者或者超级用户。
格式:
chmod [-R] mode,mode,... <path>...
示例:
hdfs dfs -chmod 777 /user/dataflair/dir1/sample
3.4.4 修改文件副本系数(setrep)
改变一个文件的副本系数,-R
选项用于递归改变目录下所有文件的副本系数。
格式:
setrep [-R] [-w] rep <path>
示例:
hdfs dfs -setrep -w 3 /user/dataflair/dir1
3.4.5 文件追加(appendToFile)
追加一个文件到已经存在的文件末尾
格式:
hadoop fs -appendToFile <localsource> ... <dst>
示例:
hadoop fs -appendToFile /home/dataflair/Desktop/sample /user/dataflair/dir1
05 文末
本文主要讲解的是HDFS的命令,欢迎大家的阅读,本文完!