HDFS命令、HDFS权限和HDFS存储
- 通过HDFS Shell命令管理HDFS
- 使用dfsadmin实用程序执行HDFS操作
- 管理HDFS的权限和用户
- 管理HDFS存储
- 重新平衡HDFS数据
- HDFS空间回收
- 总结
本章介绍如何使用HDFS shell命令管理HDFS存储。您还将了解dfsadmin实用程序,它是管理HDFS的关键工具。本章还介绍了如何管理HDFS文件权限和创建HDFS用户。作为Hadoop管理员,您的关键任务之一是管理HDFS存储。本章介绍如何检查HDFS的使用情况,以及如何为HDFS用户分配空间配额。本章还讨论了何时以及如何重新平衡HDFS数据,以及如何回收HDFS空间。
对于管理Hadoop集群的人来说,使用HDFS是最常见的任务之一。虽然您可以通过多种方式访问HDFS,但命令行是管理HDFS存储最常用的方式。
通过授予用户适当的权限和为用户分配HDFS空间配额来管理HDFS用户是您将经常执行的一些与用户相关的常见管理任务。本章展示了HDFS的权限是如何工作的,以及如何在HDFS目录上授予和撤销空间配额。
除了管理用户和他们的HDFS空间配额之外,您还需要管理HDFS的其他方面。本章还展示了如何执行维护任务,例如定期平衡HDFS数据以在集群中均匀分布数据,以及如何在必要时在HDFS中获得额外的空间。
通过HDFS Shell命令管理HDFS
您可以通过多种方式访问HDFS:
从命令行使用简单的类似linux的文件系统命令,以及通过web界面,称为WebHDFS
使用HttpFS网关从防火墙后访问HDFS
通过Hue的文件浏览器(以及Cloudera Manager和Ambari,如果你使用的是Cloudera,或者Hortonwork的Hadoop发行版)
图9.1总结了访问HDFS的各种方式。尽管您有多种访问HDFS的方法,但您通常会从命令行管理HDFS文件和目录,这是一个很好的选择。可以使用。命令行访问HDFS文件系统hdfs dfs文件系统命令。
图9.1访问HDFS的多种方式
使用hdfs dfsHDFS管理工具
你使用hdfs dfs在Hadoop中发出HDFS命令的工具。下面是这个命令的用法:
hdfs dfs [GENERIC_OPTIONS] [COMMAND_OPTIONS]
使用hdfs dfs实用工具,您可以在Hadoop支持的文件系统上运行文件系统命令,该文件系统恰好是HDFS。
HDFS的shell命令有两种:
第一组shell命令非常类似于常见的Linux文件系统命令,例如ls,mkdir等等......
第二组HDFS shell命令是特定于HDFS的,例如允许您设置文件复制因子的命令。
您可以通过命令行、web或应用程序代码访问HDFS文件系统。在很多情况下,HDFS文件系统命令与我们熟悉的Linux文件系统命令非常相似。例如:命令HDFS DFS -cat /path/to/ HDFS /file与Linux的工作原理相同猫命令,通过将文件的输出打印到屏幕上。
为了支持可靠性和高吞吐量,HDFS内部使用了一个非常复杂的算法来进行文件系统的读写。例如,当您发出一个简单的把命令将文件写入HDFS目录,Hadoop需要将该数据快速写入三个节点(默认情况下)。
您可以通过输入以下命令访问HDFS shellHDFS DFS
可以查看所有可用的HDFS命令,只需调用hdfs dfs命令,不带选项,如下所示:
$ hdfs dfs用法:hadoop fs [generic options] [-appendToFile…] ] [-cat [-ignoreCrc] …]
图9.2显示所有可用的HDFSdfs命令。
图9.2的hdfs dfs命令。
然而,它是HDFS DFS -help命令,这对初学者甚至相当多的“专家”都非常有用——这个命令清楚地解释了所有的hdfs dfs命令。图9.3控件中可以使用的各种文件复制选项,说明帮助实用程序如何清楚地解释这些选项hdfs dfs命令。
图9.3如何HDFS DFS -help命令的各个选项的语法hdfs dfs命令
在下面的部分中,我将向您展示如何
列出HDFS文件和目录
使用HDFS统计命令
创建HDFS目录
删除HDFS文件和目录
更改文件和目录的所有权
修改HDFS文件权限
列出HDFS文件和目录
与常规Linux文件系统一样,使用ls命令列出HDFS文件。方法指定各种选项ls命令,如下所示:
$ hdfs dfs -usage ls用法:hadoop fs [generic options] -ls [-d] [-h] [-R] […]下面是这些选项的含义:-d:目录以普通文件的形式列出。-h:以人类可读的方式格式化文件大小(例如64.0m而不是67108864)。-R:递归列出遇到的子目录。-t:按修改时间对输出进行排序(首先是最近的)。-S:按文件大小排序输出。-r:反转排序顺序。-u:使用访问时间而不是修改时间来显示和排序。
列出文件和目录
如果目标ls命令是一个文件,它显示文件的统计信息,如果它是一个目录,它列出该目录的内容。您可以使用以下命令获取HDFS根目录的目录列表:
$ hdfs dfs - ls / find 8个项目drwxr-xr-x - hdfs hdfs 0 2013-12-11 09:09 /data drwxr-xr-x - hdfs supergroup 0 2015-05-04 13:22 /lost+ Found drwxrwxrwt - hdfs hdfs 0 2015-05-20 07:49 /tmp drwxr-xr-x - hdfs supergroup 0 2015-05-07 14:38 /user…#
例如,下面的命令显示目录中按文件名排序的所有文件:
$ HDFS DFS -ls /user/hadoop/testdir1
或者,您可以在列出文件时指定HDFS URI:
$ HDFS DFS -ls HDFS://:9000/user/ HDFS /dir1/
命令也可以指定多个文件或目录ls命令:
$ HDFS DFS -ls /user/hadoop/testdir1 /user/hadoop/testdir2
仅列出目录
可以查看只属于目录的信息- d选择:
$ HDFS DFS -ls -d /user/alapati drwxr-xr-x - HDFS supergroup 0 2015-05-20 12:27 /user/alapati $
下面两个ls命令示例显示文件信息:
$ HDFS DFS -ls /user/hadoop/testdir1/test1.txt $ HDFS DFS -ls / HDFS://:9000/user/hadoop/dir1/
请注意,当您列出HDFS文件时,每个文件都会显示其复制因子。在本例中,文件test1.txt的复制因子为3(默认复制因子)。
$ HDFS DFS -ls /user/alapati/ -rw-r——r——3.HDFS超级组12 2016-05-24 15:44 /user/alapati/test.txt
使用hdfs统计获取文件详细信息命令
虽然HDFS DFS -ls命令可以让您获得所需的文件信息,但有时您需要从HDFS获取特定的信息。当你运行HDFS DFS -ls命令,则返回文件的完整路径。当您只想看到基名时,可以使用hdfs统计命令,只查看文件的特定详细信息。
您可以格式化hdfs统计命令,选项如下:
%b文件大小,以字节为单位%F根据inode的类型返回“file”,“directory”或“symlink”%g组名%n Filename %o HDFS块大小,以字节为单位(默认128MB) %r复制因子%u所有者的用户名%y inode的格式化mtime %y inode的UNIX Epoch mtime
在下面的示例中,我将展示如何确认文件或目录是否存在。
# HDFS DFS -stat "%n" /user/alapati/messages messages
如果你运行hdfs统计命令,它告诉您指定的名称确实是一个目录。
$ hdfs dfs -stat "%b %F %g %n %o %r %u %y %y " /user/alapati/test2222 0目录超组test2222 0 hdfs 2015-08-24 20:44:11 1432500251198 $
控件查看不同类型的信息HDFS DFS -stat命令与HDFS DFS -ls命令。注意,我指定了所有的统计这里的命令选项。
$ hdfs dfs -ls /user/alapati/test2222/true.txt -rw-r——r——2 hdfs supergroup 12 2015-08-24 15:44 /user/alapati/test2222/true.txt $ $ hdfs dfs -stat "%b %F %g %n %o %r %u %y %y " /user/alapati/test2222/true.txt 12常规文件supergroup true.txt 268435456 2 hdfs 2015-05-24 20:44:11 1432500251189 $ . ls /user/alapati/test2222/true.txt
如果我没有补充说明,您还可以通过Hue的Job Browser访问HDFS,如下所示图9.4。
图9.4Hue的文件浏览器,展示了如何从Hue访问HDFS
创建HDFS目录
创建HDFS目录的过程与Linux文件系统中创建目录的过程类似。问题的mkdir命令创建HDFS目录。该命令以路径uri作为参数来创建一个或多个目录,如下所示:
$ HDFS DFS -mkdir /user/hadoop/dir1 /user/hadoop/dir2
目录/user/hadoop必须已经存在,该命令才能执行成功。
下面是另一个示例,展示了如何通过使用URI指定目录来创建目录。
$ HDFS DFS -mkdir HDFS://nn1.example.com/user/hadoop/dir
如果要沿着路径创建父目录,请指定- p选项,其中包含hdfsdfs mkdir命令,就像您对它的表亲Linux所做的那样mkdir命令。
$ HDFS DFS -mkdir -p /user/hadoop/dir1
在此命令中,通过指定- p选项,我创建父目录hadoop和它的子目录dir1mkdir命令。
删除HDFS文件和目录
HDFS文件和目录删除命令的工作方式类似于Linux文件系统中的类似命令。的rm命令。- r选项以递归方式删除目录和该目录下的所有内容。这里有一个例子。
$ hdfs dfs -rm -R /user/alapati 15/05/05 12:59:54 INFO fs。垃圾PolicyDefault: Namenode trash configuration: Deletion interval = 1440 minutes, Emptier interval = 0 minutes. Moved: 'hdfs://hadoop01-ns/user/alapati' to trash at: hdfs://hadoop01-ns/user/ hdfs/.Trash/Current $
我发出了rm - r命令,我可以验证我想要删除的目录确实已经从HDFS中删除了。的输出rm - r命令显示该目录仍然为我保存,以防我需要它-在HDFS的垃圾目录中。垃圾目录是一种内置的安全机制,可以防止意外删除文件和目录。如果你还没有启用垃圾,请尽快启用!
即使启用了回收站,有时回收站间隔设置得过低,因此请确保配置了fs.trash.interval参数在hdfs-site.xml文件中适当地设置。例如,将该参数设置为14,400表示Hadoop将在垃圾桶中保留已删除的项10天。
执行以下命令可以查看当前在trash目录下已删除的HDFS文件:
$ HDFS DFS -ls /user/sam/。垃圾
你可以使用删除文件夹选项删除一个空目录:
$ HDFS DFS -rmdir /user/alapati/testdir . $
如果要删除的目录不是空的,请使用rm - r选项,如前面所示。
如果您已经配置了HDFS垃圾,那么您删除的任何文件或目录都将被移动到垃圾目录,并在您为垃圾目录配置的时间长度内保留在那里。在某些情况下,例如当目录填满了超出您为其分配的空间配额时,您可能希望立即永久删除文件。您可以通过发出dfs rm命令。-skipTrash选择:
$ hdfs dfs -rm /user/alapati/test -skipTrash
的-skipTrash选项将绕过HDFS的垃圾处理工具,并立即删除指定的文件或目录。
命令清空垃圾目录删除命令:
$ HDFS DFS -expunge
垃圾回收站中所有比配置的时间间隔更早的文件都将在发出删除命令。
更改文件和目录所有权和组
控件更改所有者和组名乔恩命令,如下所示:
$ HDFS DFS -chown sam:produsers /data/customers/names.txt
必须是超级用户才能修改文件和目录的所有权。
HDFS文件权限的工作方式与Linux中修改文件和目录权限的方式非常相似。图9.5显示如何发出熟悉的修改文件权限,乔恩和chgrpHDFS命令。
图9.5使用HDFS命令修改文件模式、所属和组
改变组
控件仅可以更改用户组chgrp命令,如下所示:
$ sudo -u HDFS HDFS DFS -chgrp marketing /users/sales/markets.txt
修改HDFS文件权限
你可以使用修改文件权限命令,修改文件或目录的权限。您可以使用标准的Linux文件权限。的一般语法修改文件权限命令:
hdfs dfs -chmod [-R]
您必须是超级用户或文件或目录的所有者才能更改其权限。
与chgrp,修改文件权限和乔恩命令,可以指定- r选项,通过指定的目录结构进行递归更改。
在本节中,我将使用命令行中的HDFS命令来查看和操作HDFS文件和目录。然而,有一种更简单的方式来访问HDFS,那就是通过基于web的界面Hue,它非常容易使用,并且允许您通过GUI执行HDFS操作。Hue附带了一个文件浏览器应用程序,可以让你列出和创建文件和目录,从HDFS下载和上传文件,复制/移动文件。您还可以使用Hue的文件浏览器来查看MapReduce作业、Hive查询和Pig脚本的输出。
而hdfs dfs实用程序允许您管理HDFS文件和目录hdfs dfsadmin实用程序允许您执行关键的HDFS管理任务。在下一节中,您将学习如何使用dfsadmin实用工具来管理您的集群。