使用hdfs是一项最常见的hadoop集群管理工作,虽然可以通过多种方式访问HDFS,但命令行是管理HDFS存储的最常用的方法。例如webHDFS、使用HttpFS网关通过防火墙访问HDFS、通过Hue的文件浏览器。

使用 hdfs dfs命令来管理HDFS

语法如下:

hdfs dfs  [GENERIC_OPTION]  [COMMAND_OPTION]

   1、列出HDFS的文件和目录

hdfs  dfs  -ls  /      查看文件/路径的文件及目录

图片7.png 

可以在ls后面加-d列出目录及查看目录相关信息  -R  -h  

hdfs  dfs  -cat  /path/file.txt     查看file.txt的内容

关于hdfs dfs的更多选项可以输入hdfs dfs -help

2、使用hdfs stat 命令获取相关文件的详细信息

HDFS命令及管理HDFS_第1张图片 

%n 返回文件或者目录名

%b 返回文件目录的大小,byte。从上面看出目录不占用空间,它的大小为0.

%g 返回group

%y 格式话时inodemtime

%u 用户

3、创建HDFS目录

创建hdfs目录和linux文件系统中创建目录类似,可以使用mkdir命令创建hdfs创建

Hadfs  dfs  -mkdir  /usr/hadoop/dir1   必须/usr/hadoop路径存在才能创建

如果要沿路径创建父目录,指定-p参数

图片9.png 

4、删除HDFS文件和目录

 

   删除hdfs文件和目录的命令类似于linux文件系统中的命令。使用-r|R选项递归方式删除目录及该目录下的所有内容。

-skipTrash 选项是绕过hdfs回收站立即删除指定文件及目录

hdfs  dfs  -rm -R /usr/hadoop/dir/    删除dir目录及dir目录下的文件及目录

5、更改文件目录所有权和组

可以使用-chown命令更改素有者和组名称

$hdfs dfs -chown sam:produser /usr/data/name.txt

使用chgrp命令仅更改用户的组

$hdfs dfs -chgrp supergroup /data/sales/makrer.txt

更改hdfs文件权限

可以使用chmod命令更改文件或目录的权限hadoop使用标准的linux文件权限。

$hdfs dfs -chmod -R  /data/meta.txt     

只有超级用户或文件及目录的所有者才能更改权限,使用chgrpchmodchown命令并指定-R选项可以对指定目录进行递归更改

6、使用dfsadmin使用程序执行HDFS操作

使用dfsadmin命令从命令行管理HDFS,虽然hdfs dfs命令可以管理HDFS文件和目录,但dfsadmin命令可以执行HDFS特定的管理任务。

dfsadmin -report命令能够显示集群的基本统计信息,包括DataNodeNaneNode的状态、配置的磁盘容量和数据块的运行状况等有用的信息。

HDFS命令及管理HDFS_第2张图片 

dfsadmin -report命令显示整个集群的HDFS信息,以及集群中每个节点的HDFS详细信息。DFS命令显示集群各个dataNode级的以下信息。

hdfsadmin -report命令可以检查HDFS数据的平衡性,以及HDFS损坏情况。

Dfsadmin -refreshNodes命令用于更新连接到NameNodeDataNode列表。Namenodedfs.hosts指向文件和hdfs-site.xml中的dfs.hosts.ex-clude配置参数读取DataNode的主机名。Dfs.hosts文件列出了允许注册到namenodede 所有主机。dfs.hosts.exclude文件列出了所有需要停用的datanode

图片11.png 

dfsadmin -metasave命令提供的信息比dfsadmin -report命令提供的更多。

文件保存在/hadoop/log/下,可以find命令在本机查找

HDFS命令及管理HDFS_第3张图片 

HDFS用户和超级用户

     hadoop中创建用户是一种误称,因为在HDFS中没有办法像linux系统中一样创建用户身份,在默认的身份验证模式,hadoop依赖底层操作系统来确定客户端身份,如果设置了kerbers系统测kerberos确定客户端的身份。

由于hadoop中没有用户什么的概念,故hadoop没有固定的超级用户。Hadoop的系统超级用户只是启动NameNode的操作系统用户。Hdfs的超级用户不必是namenode主机的root用户。可以将一组用户分配给单独的超级用户组。

管理HDFS磁盘使用情况

     可以使用df命令查找可用过的空间

     $hdfs dfs -df -h

图片13.png 

hdfs dfs -du -s -h 获取已用空间的总和

检查当前空间的配额

   使用dfs -count -q命令

图片14.png

spacer.gif