使用hdfs是一项最常见的hadoop集群管理工作,虽然可以通过多种方式访问HDFS,但命令行是管理HDFS存储的最常用的方法。例如webHDFS、使用HttpFS网关通过防火墙访问HDFS、通过Hue的文件浏览器。
使用 hdfs : dfs命令来管理HDFS
语法如下:
hdfs dfs [GENERIC_OPTION] [COMMAND_OPTION]
1、列出HDFS的文件和目录
hdfs dfs -ls / 查看文件/路径的文件及目录
可以在ls后面加-d列出目录及查看目录相关信息 -R -h
hdfs dfs -cat /path/file.txt 查看file.txt的内容
关于hdfs dfs的更多选项可以输入hdfs dfs -help
2、使用hdfs stat 命令获取相关文件的详细信息
%n 返回文件或者目录名
%b 返回文件目录的大小,byte。从上面看出目录不占用空间,它的大小为0.
%g 返回group
%y 格式话时inode的mtime
%u 用户
3、创建HDFS目录
创建hdfs目录和linux文件系统中创建目录类似,可以使用mkdir命令创建hdfs创建
Hadfs dfs -mkdir /usr/hadoop/dir1 必须/usr/hadoop路径存在才能创建
如果要沿路径创建父目录,指定-p参数
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
只有超级用户或文件及目录的所有者才能更改权限,使用chgrp、chmod和chown命令并指定-R选项可以对指定目录进行递归更改
6、使用dfsadmin使用程序执行HDFS操作
使用dfsadmin命令从命令行管理HDFS,虽然hdfs dfs命令可以管理HDFS文件和目录,但dfsadmin命令可以执行HDFS特定的管理任务。
dfsadmin -report命令能够显示集群的基本统计信息,包括DataNode和NaneNode的状态、配置的磁盘容量和数据块的运行状况等有用的信息。
dfsadmin -report命令显示整个集群的HDFS信息,以及集群中每个节点的HDFS详细信息。DFS命令显示集群各个dataNode级的以下信息。
hdfsadmin -report命令可以检查HDFS数据的平衡性,以及HDFS损坏情况。
Dfsadmin -refreshNodes命令用于更新连接到NameNode的DataNode列表。Namenode从dfs.hosts指向文件和hdfs-site.xml中的dfs.hosts.ex-clude配置参数读取DataNode的主机名。Dfs.hosts文件列出了允许注册到namenodede 所有主机。dfs.hosts.exclude文件列出了所有需要停用的datanode
dfsadmin -metasave命令提供的信息比dfsadmin -report命令提供的更多。
文件保存在/hadoop/log/下,可以find命令在本机查找
HDFS用户和超级用户
在hadoop中创建用户是一种误称,因为在HDFS中没有办法像linux系统中一样创建用户身份,在默认的身份验证模式,hadoop依赖底层操作系统来确定客户端身份,如果设置了kerbers系统测kerberos确定客户端的身份。
由于hadoop中没有用户什么的概念,故hadoop没有固定的超级用户。Hadoop的系统超级用户只是启动NameNode的操作系统用户。Hdfs的超级用户不必是namenode主机的root用户。可以将一组用户分配给单独的超级用户组。
管理HDFS磁盘使用情况
可以使用df命令查找可用过的空间
$hdfs dfs -df -h
hdfs dfs -du -s -h 获取已用空间的总和
检查当前空间的配额
使用dfs -count -q命令
原创文章,作者:kepupublish,如若转载,请注明出处:https://blog.ytso.com/193203.html