HDFS--命令行接口详解

现在我们将通过命令行与HDFS交互。HDFS还有很多其他接口,但命令行是最简单的,同时也是许多开发者最熟悉的。

在我们设置伪分布配置时,有两个属性需要进一步解释。首先是fs.default.name,设置为hdfs://localhost/,用来为Hadoop设置默认文件系统。文件系统是由URI指定的,这里我们已使用了一个hdfs URI 来配置HDFS为Hadoop的默认文件系统。HDFS的守护程序将通过这个属性来决定HDFS名称节点的宿主机和端口。我们将在localhost上运行,默认端口为8020。这样一来,HDFS用户将通过这个属性得知名称节点在哪里运行以便于连接到它。

第二个属性dfs.replication,我们设为1,这样一来,HDFS就不会按默认设置将文件系统块复制3份。在单独一个数据节点上运行时,HDFS无法将块复制到3个数据节点上,所以会持续警告块的副本不够。此设置可以解决这个问题。

基本文件系统操作

文件系统已经就绪,我们可以执行所有其他文件系统都有的操作,例如,读取文件,创建目录,移动文件,删除数据,列出索引目录,等等。输入hadoop fs -help命令即可看到所有命令详细的帮助文件。

首先将本地文件系统的一个文件复制到HDFS:

1. % hadoopfs -copyFromLocal input/docs/quangle.
txt hdfs://localhost/user/tom/quangle.txt

该命令调用Hadoop文件系统的shell命令fs,提供一系列的子命令。在这里,我们执行的是-copyFromLocal。本地文件quangle.txt被复制到运行在localhost上的HDFS实体中的/user/tom/quangle.txt文件。其实我们可以省略URI的格式与主机而选择默认设置,即省略hdfs://localhost,就像core-site.xml中指定的那样。

1. % hadoop fs -copyFromLocal input/docs/quangle.
txt /user/tom/quangle.txt

也可以使用相对路径,并将文件复制到home目录,即/user/tom:

1. % hadoop fs -copyFromLocal input/docs/quangle.txt quangle.txt

我们把文件复制回本地文件系统,看看是否一样:

1.     % hadoop fs -copyToLocal quangle.txt quangle.copy.txt

2. % md5 input/docs/quangle.txt quangle.copy.txt

3. MD5 (input/docs/quangle.txt) = a16f231da6b05e2ba7a339320e7dacd9

4. MD5 (quangle.copy.txt) = a16f231da6b05e2ba7a339320e7dacd9

MD5分析结果是一样的,表明这个文件在HDFS之旅中得以幸存并完整。

最后,我们看一下HDFS文件列表。我们创建一个目录来看看它在列表中如何显示:

1. % hadoop fs -mkdir books

2. % hadoop fs -ls .

3. Found 2 items

4. drwxr-xr-x   - tom supergroup          0 
2009-04-02 22:41 /user/tom/books

5. -rw-r--r--   1 tom supergroup        118 
2009-04-02 22:29 /user/tom/quangle.txt

返回的信息结果与Unix命令ls -l的输出非常相似,仅有细微差别。第一列显示的是文件格式。第二列是这个文件的副本数(这在Unix文件系统是没有的)。由于我们设置的默认副本数在网站范围内为1,所以这里显示的也都是1。这一列的开头目录栏是空的,因为副本的概念并没有应用-- 目录是作为元数据并存在名称节点中的,而非数据节点。第三列和第四列显示文件的所属用户和组别。第五列是文件的大小,以字节显示,目录大小为0。第六列和第七列是文件的最后修改日期与时间。最后的第八列是文件或目录的绝对路径。

HDFS中的文件许可

HDFS对于文件及目录有与POSIX非常相似的许可模式。

共有三种形式的许可:读取许可(r)、写入许可(w)和执行许可(x)。读取文件或列出目录内容时需要读取许可。写入一个文件,或是在一个目录上创建或删除文件或目录,需要写入许可。对于文件而言执行许可可以忽略因为HDFS中不能执行文件(与POSIX不同),但在访问一个目录的子项时是需要的。

每个文件和目录都有一个所属用户、所属组别和模式。这个模式是由所属用户的许可、组内其他成员的许可及其他用户的许可组成。

客户端的标识是通过它正在运行的进程的username(名称)和groups(组别)来确定的。由于客户端是远程的,任何人都可以简单地在远程系统上创建一个账户来进行访问。因此,许可只能在一个合作的团体中的用户中使用,作为共享文件系统资源和防止数据意外损失的机制,而不能在一个敌意的环境中保护资源。但是,除去这些缺点,为防止用户或自动工具及程序意外修改或删除文件系统的重要部分,使用许可还是值得的(这也是默认的配置,参见dfs.permissions属性)。

如果启用了许可检查,所属用户许可与组别许可都会被检查,以确认用户的用户名与所属用户许可是否相同,确认他是否属于此用户组的成员;若不符,则检查其他许可。

这里有一个超级用户的概念,超级用户是名称节点进程的标识。对于超级用户,系统不会执行任何许可检查。

时间: 2024-08-30 14:48:36

HDFS--命令行接口详解的相关文章

HDFS命令行接口详解

现在我们将通过命令行与HDFS交互.HDFS还有很多其他接口,但命令行是最简单的,同时也是许多开发者最熟悉的. 在我们设置伪分布配置时,有两个属性需要进一步解释.首先是fs.default.name,设置为hdfs://localhost/,用来为Hadoop设置默认文件系统.文件系统是由URI指定的,这里我们已使用了一个hdfs URI 来配置HDFS为Hadoop的默认文件系统.HDFS的守护程序将通过这个属性来决定HDFS名称节点的宿主机和端口.我们将在localhost上运行,默认端口为

HDFS节点详解

设计思想 分而治之:将大文件.大批量文件,分布式放在大量服务器上,以便于采取分而治之的方式对海量数据进行预算分析: 在大数据系统中的作用:为各类分布式运算框架(如:MapReduce,Spark等)提供数据存储服务 重要概念:文件切块,副本存放,元数据 HDFS架构 HDFS各节点 NameNode是HDFS的主节点,负责元数据的管理以及客户端对文件的访问.管理数据块的复制,它周期性地从集群中的每个DataNode接收心跳信号和块状态报告(Blockreport) DataNode是HDFS的从

kettle连接hadoop&hdfs图文详解

1 引言: 项目最近要引入大数据技术,使用其处理加工日上网话单数据,需要kettle把源系统的文本数据load到hadoop环境中 2 准备工作: 1 首先 要了解支持hadoop的Kettle版本情况,由于kettle资料网上较少,所以最好去官网找,官网的url: http://wiki.pentaho.com/display/BAD/Configuring+Pentaho+for+your+Hadoop+Distro+and+Version 打开这个url 到页面最下面的底端,如下图: ar

kettle入门(三) 之kettle连接hadoop&hdfs图文详解(转)

1 引言: 项目最近要引入大数据技术,使用其处理加工日上网话单数据,需要kettle把源系统的文本数据load到hadoop环境中 2 准备工作: 1 首先 要了解支持hadoop的Kettle版本情况,由于kettle资料网上较少,所以最好去官网找,官网的url: http://wiki.pentaho.com/display/BAD/Configuring+Pentaho+for+your+Hadoop+Distro+and+Version 打开这个url 到页面最下面的底端,如下图: ar

kettle入门(三) 之kettle连接hadoop&hdfs图文详解

1 引言: 项目最近要引入大数据技术,使用其处理加工日上网话单数据,需要kettle把原始文本数据load到hadoop环境中 2 准备工作: 1 首先 要了解支持hadoop的Kettle版本情况,由于kettle资料网上较少,所以最好去官网找,官网的url: http://wiki.pentaho.com/display/BAD/Configuring+Pentaho+for+your+Hadoop+Distro+and+Version 打开这个url 到打开页面最下面的底端如下图: arc

hadoop1中hdfs原理详解

HDFS是Hadoop Distribute File System的简称,也是Hadoop的一个分布四文件系统 一.HDFS的主要设计理念 1.存储超大文件 这里的 “超大文件” 是指几百MB .GB甚至 TB级别的文件. 2.最高效的访问模式是一次写入.多次读取(流式数据访问)  HDFS存储的数据集作为hadoop的分析对象,在数据集生成后,长时间在此数据集上进行各种分析.每次分析都将设计该数据的大部分数据甚至全部数据,因此读取整个数据集的时间延迟比读取第一条记录的时间延迟更重要. 3.运

HDFS入门详解

一. 前提和设计目标 1. 硬件错误是常态,因此需要冗余,这是深入到HDFS骨头里面去了 HDFS可能由成百上千的服务器所构成,每个服务器上存储着文件系统的部分数据.我们面对的现实是构成系统的组件数目是巨大的,而且任一组件都有可能失效,这意味着总是有一部分HDFS的组件是不工作的.因此错误检测和快速.自动的恢复是HDFS最核心的架构目标 2. 流式数据访问 即:数据批量读取而非随机读写(OLTP),Hadoop擅长的是数据分析而不是事物处理 3. 大规模数据集 HDFS上的一个典型文件大小一般都

HDFS概念详解---名称节点与数据节点

HDFS集群有两种节点,以管理者-工作者的模式运行,即一个名称节点(管理者)和多个数据节点(工作者).名称节点管理文件系统的命名空间.它维护着这个文件系统树及这个树内所有的文件和索引目录.这些信息以两种形式将文件永久保存在本地磁盘上:命名空间镜像和编辑日志.名称节点也记录着每个文件的每个块所在的数据节点,但它并不永久保存块的位置,因为这些信息会在系统启动时由数据节点重建. 客户端代表用户通过与名称节点和数据节点交互来访问整个文件系统.客户端提供一个类似POSIX(可移植操作系统界面)的文件系统接

HDFS安全模式详解

什么是安全模式 安全模式是HDFS所处的一种特殊状态,在这种状态下,文件系统只接受读数据请求,而不接受删除.修改等变更请求.在NameNode主节点启动时,HDFS首先进入安全模式,DataNode在启动的时候会向namenode汇报可用的block等状态,当整个系统达到安全标准时,HDFS自动离开安全模式.如果HDFS出于安全模式下,则文件block不能进行任何的副本复制操作,因此达到最小的副本数量要求是基于datanode启动时的状态来判定的,启动时不会再做任何复制(从而达到最小副本数量要求

HDFS API详解-很老的版本

因近期要做一个网盘系统,所以搜集下. 关于文件操作类基本上全部是在"org.apache.hadoop.fs"包中,这些API能够支持的操作包含:打开文件,读写文件,删除文件等. Hadoop类库中最终面向用户提供的接口类是FileSystem,该类是个抽象类,只能通过来类的get方法得到具体类.get方法存在几个重载版本,常用的是这个: static FileSystem get(Configuration conf); 该类封装了几乎所有的文件操作,例如mkdir,delete等.