首页>文章

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

图9.1访问HDFS的多种方式

使用hdfs dfsHDFS管理工具

你使用hdfs dfs在Hadoop中发出HDFS命令的工具。下面是这个命令的用法:

hdfs dfs [GENERIC_OPTIONS] [COMMAND_OPTIONS]

使用hdfs dfs实用工具,您可以在Hadoop支持的文件系统上运行文件系统命令,该文件系统恰好是HDFS。

HDFS的shell命令有两种:

  • 第一组shell命令非常类似于常见的Linux文件系统命令,例如lsmkdir等等......

  • 第二组HDFS shell命令是特定于HDFS的,例如允许您设置文件复制因子的命令。

您可以通过命令行、web或应用程序代码访问HDFS文件系统。在很多情况下,HDFS文件系统命令与我们熟悉的Linux文件系统命令非常相似。例如:命令HDFS DFS -cat /path/to/ HDFS /file与Linux的工作原理相同命令,通过将文件的输出打印到屏幕上。

为了支持可靠性和高吞吐量,HDFS内部使用了一个非常复杂的算法来进行文件系统的读写。例如,当您发出一个简单的命令将文件写入HDFS目录,Hadoop需要将该数据快速写入三个节点(默认情况下)。

您可以通过输入以下命令访问HDFS shellHDFS DFS 在命令行。使用子命令指定操作,子命令的前缀为减号(-)符号,如dfs的猫用于显示文件的内容。

可以查看所有可用的HDFS命令,只需调用hdfs dfs命令,不带选项,如下所示:

$ hdfs dfs用法:hadoop fs [generic options] [-appendToFile …]] [-cat [-ignoreCrc] …]

图9.2显示所有可用的HDFSdfs命令。

图9.2

图9.2hdfs dfs命令。

然而,它是HDFS DFS -help命令,这对初学者甚至相当多的“专家”都非常有用——这个命令清楚地解释了所有的hdfs dfs命令。图9.3控件中可以使用的各种文件复制选项,说明帮助实用程序如何清楚地解释这些选项hdfs dfs命令。

图9.3

图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.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

图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实用工具来管理您的集群。

金宝搏188亚洲体育真人始乐InformIT促销邮件和特别优惠

我希望收到独家报价,并听到有关InformIT及其品牌家族的产品。金宝搏188亚洲体育真人始乐我可以随时退订。

概述


培生教育有限公司(Pearson Education, Inc., 221 River Street, Hoboken, New Jersey 07030)提供本网站,提供可通过本网站购买的产品和服务的信息。

本隐私声明概述了我们对隐私的承诺,并描述了我们如何收集、保护、使用和共享通过本网站收集的个人信息。请注意,培生的其他网站和在线产品及服务有其单独的隐私政策。

信息的收集和使用


为了开展业务并提供产品和服务,培生通过与本网站相关的几种方式收集和使用个人信息,包括:

问题及查询

对于查询和问题,我们会收集查询或问题,以及姓名、联系方式(电子邮件地址、电话号码和邮寄地址)以及通过“联系我们”表格或电子邮件自愿提交给我们的任何其他附加信息。我们使用这些信息来解决询问和回答问题。

在线商店

对于通过本网站上的在线商店下达的订单和购买,我们会收集订单详细信息、名称、机构名称和地址(如适用)、电子邮件地址、电话号码、送货和账单地址、信用卡/借记卡信息、送货选项和任何指示。我们使用这些信息来完成交易、履行订单、与下订单或访问在线商店的个人沟通,以及用于相关目的。

调查

培生可能提供提供反馈或参与调查的机会,包括评估培生产品、服务或网站的调查。参与是自愿的。培生收集调查问题中要求的信息,并使用这些信息来评估、支持、维护和改进产品、服务或网站,开发新产品和服务,进行教育研究以及调查中指定的其他目的。

比赛及绘图

偶尔,我们可能会赞助比赛或绘画。参与是可选的。培生会收集参赛者的姓名、联络资料及其他在参赛表格上注明的资料,以进行比赛或抽奖。培生可能会根据法律要求,从竞赛或抽奖的获胜者那里收集额外的个人信息,以便颁发奖品和用于税务报告目的。

时事通讯

如果您已选择接收电子邮件通讯或促销邮件和特别优惠,但想取消订阅,只需电子邮件information@金宝搏188亚洲体育真人始乐informit.com

服务公告

在极少数情况下,有必要发布严格与服务相关的公告。例如,如果我们的服务因维护而暂时停止,我们可能会向用户发送电子邮件。一般来说,用户不能选择退出这些通信,但他们可以停用他们的帐户信息。然而,这些通信在本质上不是促销。

客户服务

我们定期与用户沟通,以提供所要求的服务,并且当用户通过我们的网站提交信息时,我们会根据用户的意愿通过电子邮件或电话回复与他们的帐户有关的问题联络表格

其他信息的收集和使用


应用和系统日志

培生自动收集日志数据,以帮助确保本网站的交付、可用性和安全性。日志数据可能包括有关用户或访问者如何连接到本网站的技术信息,例如浏览器类型、计算机/设备类型、操作系统、互联网服务提供商和IP地址。我们将此信息用于支持目的和监控站点的运行状况、识别问题、改进服务、检测未经授权的访问和欺诈活动、预防和响应安全事件以及适当地扩展计算资源。

网络分析

培生可能会使用第三方网络趋势分析服务(包括Google Analytics)来收集访问者信息,如IP地址、浏览器类型、参考页面、访问过的页面以及在特定网站上花费的时间。虽然这些分析服务以匿名方式收集和报告信息,但它们可能会使用cookie来收集网络趋势信息。收集的信息可能使Pearson(但不是第三方web趋势服务)能够将信息与应用程序和系统日志数据链接起来。培生将这些信息用于系统管理、识别问题、改进服务、检测未经授权的访问和欺诈活动、预防和响应安全事件、适当扩展计算资源以及支持和提供本网站及其服务。

Cookies及相关技术

本网站使用cookie和类似的技术来个性化内容,测量流量模式,控制安全性,跟踪本网站信息的使用和访问,并提供基于兴趣的消息和广告。用户可以通过浏览器管理和阻止cookie的使用。禁用或阻止某些cookie可能会限制本网站的功能。

不要跟踪

本网站目前不响应禁止跟踪信号。

安全


培生采用适当的物理、管理和技术安全措施来保护个人信息免遭未经授权的访问、使用和披露。

孩子们


本网站不面向13岁以下儿童。

市场营销


培生可以向用户发送或直接发送营销信息,前提是

  • 培生不会将作为K-12学校服务提供商收集或处理的个人信息用于定向或有针对性的广告。
  • 这种营销符合适用法律和培生的法律义务。
  • 培生不会故意直接或发送营销通信给个人谁表示了偏好不接受营销。
  • 在适用法律要求的情况下,对营销的明示或默示同意存在且未撤销。

培生可以在有限的基础上向第三方服务提供商提供个人信息,仅代表培生或培生作为其服务提供商的关联公司或客户进行营销。营销偏好可能随时发生变化。

更正/更新个人资料


如果用户的个人身份信息发生变化(例如您的邮寄地址或电子邮件地址),我们将提供一种方法来更正或更新用户提供给我们的个人数据。这可以在帐户页面。如果用户不再需要我们的服务,并希望删除他或她的帐户,请联系我们customer-service@金宝搏188亚洲体育真人始乐informit.com我们将处理用户帐户的删除。

选择/退出


用户可以在知情的情况下选择是否继续使用InformIT提供的某些服务。金宝搏188亚洲体育真人始乐如果您选择从我们的邮件列表中删除自己,只需访问以下页面并取消您不再希望接收的任何通信:www.金宝搏188亚洲体育真人始乐informit.com/u.aspx

出售个人资料


培生不会出租或出售个人信息以换取任何金钱。

虽然皮尔逊不出售个人信息,根据内华达州法律的定义,内华达州居民可以通过电子邮件请求不出售他们的个人信息NevadaDesignatedRequest@pearson.com

加州居民补充隐私声明


加州居民应该读读我们的加州居民补充隐私声明连同本私隐声明一并提交。的加州居民补充隐私声明解释培生遵守加州法律的承诺,并适用于通过本网站和服务收集的加州居民的个人信息。

分享与披露


培生可能会在以下情况下披露个人信息:

  • 这是法律规定的。
  • 经个人同意(或其父母同意,如果个人是未成年人)
  • 在法律允许或要求的范围内响应传票、法院命令或法律程序
  • 根据适用法律保护个人、数据、资产和系统的安全
  • 与出售、合资或以其他方式转让部分或全部公司或资产有关,但须遵守本隐私声明的规定
  • 调查或处理实际的或涉嫌的欺诈或其他非法活动
  • 行使其合法权利,包括执行本网站的使用条款或其他合同
  • 培生的附属公司以及为培生工作的其他公司和组织,他们有义务按照本隐私声明保护个人信息的隐私
  • 对于学校、组织、公司或政府机构,培生在学校或代表这些组织、公司或政府机构收集或处理个人信息。

链接


本网站包含到其他网站的链接。请注意,我们不负责此类其他网站的隐私做法。我们鼓励我们的用户在离开我们的网站时保持警惕,并阅读每个收集个人信息的网站的隐私声明。本隐私声明仅适用于本网站收集的信息。

请求及联络


联系我们查阅本私隐声明,或对您的个人资料私隐有任何要求或疑问。

本隐私声明的变更


我们可能会通过更新发布来修改本隐私声明。我们将在公告中注明修订的生效日期。通常,进行更新是为了提供更大的清晰度或符合法规要求的变化。如果更新涉及个人信息的收集、保护、使用或披露的重大变化,培生将通过本网站的显著通知或其他适当方式提供变更通知。在已发布的修改证明生效日期后继续使用本网站。如果您对本隐私声明有任何疑问或疑虑,或对任何修订有任何异议,请与我们联系。

最后更新:2020年11月17日