视频: 9 3 1 文件系统管理 fdisk分区 分区过程 2024
中的文件HDFS是Hadoop框架的两个主要组件之一;另一个是被称为MapReduce的计算范例。一个 分布式文件系统 是一个文件系统,用于管理网络集群中的存储。
HDFS将数据存储在 块 中,默认大小为64 MB的单元。您需要将要存储在HDFS中的文件分解为块大小的块,然后将其独立存储在整个群集中。您可以使用fsck line命令列出组成HDFS中每个文件的块,如下所示:
<! --1 - >%hadoop fsck / -files -blocks
因为Hadoop是用Java编写的,所以所有与HDFS的交互都通过Java API进行管理。不过请记住,你不需要成为一个Java专家来处理HDFS中的文件。在Java API之上构建的几个Hadoop接口现在是常用的(并隐藏了Java),但最简单的是命令行界面。在提供的示例中使用命令行与HDFS进行交互。
通过运行一种形式的hadoop命令来访问Hadoop文件系统shell。所有hadoop命令都由bin / hadoop脚本调用。 (要检索所有hadoop命令的描述,请运行hadoop脚本,而不指定任何参数。)hadoop命令的语法是
hadoop [--config confdir] [COMMAND] [GENERIC_OPTIONS] [COMMAND_OPTIONS]
config confdir选项将覆盖默认的配置目录($ HADOOP_HOME / conf),这样您就可以轻松地自定义您的Hadoop环境配置。通用选项和命令选项是由几个命令支持的一组常用选项。
<! Hadoop文件系统shell命令(用于命令行界面)采用统一的资源标识符(URI)作为参数。URI 是用于标识名称或Web资源的字符串。 字符串可以包含
方案名称 - 数据源性质的限定符。对于HDFS,方案名称为hdfs,对于本地文件系统,方案名称为file。如果您不指定方案名称,则默认为在配置文件中指定的方案名称。 HDFS中的文件或目录可以以完全合格的方式指定,例如: hdfs:// namenodehost / parent / child
或者,如果配置文件指向到hdfs:// namenodehost。
与Linux文件命令相似的Hadoop文件系统shell命令具有以下一般语法:
hadoop hdfs dfs -
file_cmd 具有Hadoop经验的读者可能会问:关于hadoop fs命令?“fs命令在Hadoop 0. 2发行版系列中已弃用,但在Hadoop 2中仍然可以使用。请改用hdfs dfs。
正如您所料,您可以使用mkdir命令在HDFS中创建一个目录,就像您在Linux或基于Unix的操作系统上一样。尽管HDFS有一个默认工作目录/ user / $ USER,其中
$ USER 是您的登录用户名,您需要使用语法 $ hadoop hdfs dfs -mkdir / user /
login_user_name 例如,要创建名为“joanna”的目录,请运行以下mkdir命令:
$ hadoop hdfs dfs -mkdir / user / joanna
使用Hadoop put命令从您的本地文件系统为HDFS:
$ hadoop hdfs dfs -put
file_name / user / login_user_name 例如,复制名为data的文件。 txt到这个新目录,运行下面的put命令:<$ $ hadoop hdfs dfs -put data。 txt / user / joanna
运行ls命令获取HDFS文件列表:
$ hadoop hdfs dfs -ls。找到2项目drwxr-xr-x - joanna supergroup 0 2013-06-30 12:25 / user / joanna -rw -r - r-- 1 joanna supergroup 118 2013-06-30 12:15 / user / joanna /数据。 txt
文件列表本身如下所述分解:
列1显示
文件模式
-
(“d”表示目录,“ - ”表示普通文件,后面是权限) 。 <读写>(r),写入(w)和执行(x)三种权限类型与您在基于Linux和Unix的系统上找到的相同。文件的执行权限被忽略,因为你不能在HDFS上执行文件。权限按照所有者,组和公共(其他人)分组。 第2列显示文件的复制因子。 (复制的概念不适用于目录。) 复制HDFS中构成文件的块以确保容错性。 复制因子
-
或为特定文件保留的副本数量是可配置的。您可以通过应用程序指定创建文件或更高版本时的复制因子。 第3列和第4列显示文件 所有者 和
-
组 。 Supergroup 是超级用户组的名称, 超级用户 是与NameNode进程具有相同身份的用户。如果你启动NameNode,你现在是超级用户。这是一个特殊的小组 - 常规用户将其用户组归属于一个没有特殊特征的小组 - 一个只由Hadoop管理员定义的小组。 第5列显示文件的大小(以字节为单位),如果是目录,则显示为0。 第6列和第7列分别显示上次修改的日期和时间。 第8列显示文件或目录的非限定名称(表示方案名称未指定)。
-
使用Hadoop get命令将文件从HDFS复制到本地文件系统:
-
$ hadoop hdfs dfs -get
-
file_name
/ user /
login_user_name 使用Hadoop rm命令来删除一个文件或一个空目录: $ hadoop hdfs dfs -rm file_name
/ user /
login_user_name 使用hadoop hdfs dfs -help命令可以获得详细的帮助选项。