您的位置:首页 > 大数据

大数据生态系统基础:Hadoop(四):Hadoop 3.0.0 HDFS SHELL 命令

2017-08-19 09:20 696 查看
一、介绍

       可以通过许多不同的方式从应用程序访问HDFS。在本地,HDFS为应用程序提供了一个文件系统Java API。这个Java API和REST API的C语言包装也是可用的。此外,还可以使用HTTP浏览器来浏览HDFS实例的文件。通过使用NFS网关,可以将HDFS作为客户机本地文件系统的一部分进行安装。

       使用 hadoop fs 命令可以直接操作 hdfs里面的文件,这些操作很类似 linux 的操作。

 

二、FS SHELL

      HDFS允许用户数据以文件和目录的形式进行组织。它提供了一个名为FS shell的commandline接口,它允许用户与HDFS中的数据进行交互。这个命令集的语法类似于其他用户已经熟悉的shell(如bash、csh)。以下是一些示例操作/命令对:

      

说明命令
 创建目录名 /foodirbin/hadoop dfs -mkdir /foodir
删除目录名 /foodirbin/hadoop fs -rm -R /foodir
查看/foodir/myfile.txt文件内容bin/hadoop dfs -cat /foodir/myfile.txt

        FS shell 的内容比较多,可以参考:http://hadoop.apache.org/docs/r3.0.0-alpha4/hadoop-project-dist/hadoop-common/FileSystemShell.html

      

appendToFile :将单个src或多个srcs从本地文件系统附加到目标文件系统。还可以从stdin和附加到目标文件系统读取输入。
cat :查看文件内容
checksum:返回一个文件的校验和信息。
hadoop fs -checksum hdfs://nn1.example.com/file1
hadoop fs -checksum file:///etc/hosts

chgrp  :更改组文件关联。用户必须是文件的所有者,或者是超级用户。-r
,表示目录下所有的内容
chmod :改变权限
chown :改变拥有者
copyFromLocal:类似于fs
-put命令,但源代码仅限于本地文件引用。
copyToLocal
count
cp
createSnapshot
deleteSnapshot
df
du
dus
expunge
find
get
getfacl
getfattr
getmerge
help
ls
lsr
mkdir
moveFromLocal
moveToLocal
mv
put
renameSnapshot
rm
rmdir
rmr
setfacl
setfattr
setrep
stat
tail
test
text
touchz
truncate
usage
Deleting objects
Overwriting
Objects
Timestamps
Security
model and operations
Commands
of limited value

二、DFSAdmin

 他的DFSAdmin命令集用于管理HDFS集群。这些命令只能由HDFS管理员使用。以下是一些示例操作/命令对:

说民命令
设置集群为安全模式bin/hdfs dfsadmin -safemode enter
查看DataNodes的说明报告 bin/hdfs dfsadmin -report
重新校验或解除DataNode(s) bin/hdfs dfsadmin -refreshNodes
三、浏览接口

 典型的HDFS安装配置一个web服务器,通过一个可配置的TCP端口来公开HDFS命名空间。这允许用户浏览HDFS名称空间,并使用web浏览器查看其文件的内容。

四、空间回收

 1、文件删除和恢复

           如果启用了垃圾配置,那么通过FS Shell删除的文件不会立即从HDFS中删除。相反,HDFS将它移动到一个垃圾目录(每个用户都有自己的垃圾目录下/用户/用户名/.Trash)。只要文件还在垃圾中,文件就可以迅速恢复。

           最近删除的文件被移动到当前的垃圾目录(/用户/用户名/.trash/current),并且在一个可配置的时间间隔内,HDFS在当前的垃圾目录中创建检查点(在/用户/用户名/.Trash/<date>),并在过期时删除旧的检查点。请参阅FS shell关于清除垃圾的命令。

       在垃圾结束后,NameNode从HDFS名称空间中删除了文件。文件的删除会导致与该文件相关的块被释放。注意,在一个用户删除文件和在HDFS中相应增加空闲空间的时间之间,可能会有一个明显的时间延迟。

        下面是一个示例,它将展示如何通过FS Shell将文件从HDFS中删除。我们在删除目录下创建了两个文件(test1和test2)

$ hadoop fs -mkdir -p delete/test1
$ hadoop fs -mkdir -p delete/test2
$ hadoop fs -ls delete/
Found 2 items
drwxr-xr-x   - hadoop hadoop          0 2015-05-08 12:39 delete/test1
drwxr-xr-x   - hadoop hadoop          0 2015-05-08 12:40 delete/test2

我们将删除文件test1。下面的注释显示该文件已被移动到垃圾目录。

$ hadoop fs -rm -r delete/test1
Moved: hdfs://localhost:9820/user/hadoop/delete/test1 to trash at: hdfs://localhost:9820/user/hadoop/.Trash/Current


现在,我们将使用skip垃圾箱选项删除该文件,该选项不会将文件发送到垃圾。它将完全从HDFS中删除。

$ hadoop fs -rm -r -skipTrash delete/test2
Deleted delete/test2


我们现在可以看到,垃圾目录只包含文件test1。

$ hadoop fs -ls .Trash/Current/user/hadoop/delete/
Found 1 items\
drwxr-xr-x   - hadoop hadoop          0 2015-05-08 12:39 .Trash/Current/user/hadoop/delete/test1


因此,文件test1将被删除,文件test2被永久删除。

 

2、降低复制因子

    当文件的复制因子减少时,NameNode会选择可以删除的多余副本。下一个心跳将这些信息传输到DataNode。然后DataNode删除相应的块,并在集群中显示相应的空闲空间。再一次,在setrepapi调用的完成和集群中的空闲空间的出现之间可能会有一段时间延迟。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: