HDFS简单入门(特性,shell命令)

一、HDFS简介

1.HDFS(Hadoop Distributed File System)是 Apache Hadoop 项目的一个子项目,它的设计初衷是为了能够支持高吞吐和超大文件读写操作

2.HDFS是一种能够在普通硬件上运行的分布式文件系统,它是高度容错的,适应于具有大数据集的应用程序,它非常适于存储大型数据 (比如 TB 和 PB)

3.HDFS使用多台计算机存储文件, 并且提供统一的访问接口, 像是访问一个普通文件系统一样使用分布式文件系统

二、HDFS优缺点

优点:

1.存储非常大的文件:这里非常大指的是几百M、G、或者TB级别,需要高吞吐量,对延时没有要求。

2.基于流的数据访问方式: 即一次写入、多次读取,数据集经常从数据源生成或者拷贝一次,然后在其上做很多分析工作 ,且不支持文件的随机修改。

3.HDFS适合用来做大数据分析的底层存储服务,并不适合用来做网盘等应用,因为,修改不方便,延迟大,网络开销大,成本太高。

4.运行于商业硬件上: Hadoop不需要特别贵的机器,可运行于普通廉价机器,可以节约成本

5.高容错性和拓展性

缺点:

1.低延时访问,不适用于低延时要求的应用。

2.不适合存储大量小文件,因为元数据文件保存在NameNode的内存中,文件数量受限于NN内存大小。

3.不适合多方读写,需要任意的文件修改 HDFS采用追加(append-only)的方式写入数据。不支持文件任意offset的修改,文件修改麻烦,HDFS适合用来做大数据分析的底层存储服务。

三、HDFS的重要特性

1.主从架构

HDFS采用master/slave架构。一般一个HDFS集群是有一个Namenode和一定数目的Datanode组成。Namenode是HDFS主节点,Datanode是HDFS从节点,两种角色各司其职,共同协调完成分布式的文件存储服务。

2.分块机制

HDFS中的文件在物理上是分块存储(block)的,块的大小可以通过配置参数来规定,参数位于hdfs-default.xml中:dfs.blocksize。默认大小是128M(134217728)。

3.副本机制

为了容错,文件的所有block都会有副本。每个文件的block大小(dfs.blocksize)和副本系数(dfs.replication)都是可配置的。应用程序可以指定某个文件的副本数目。副本系数可以在文件创建的时候指定,也可以在之后通过命令改变。

默认dfs.replication的值是3,也就是会额外再复制2份,连同本身总共3份副本

4.Namespace

HDFS支持传统的层次型文件组织结构。用户可以创建目录,然后将文件保存在这些目录里。文件系统名字空间的层次结构和大多数现有的文件系统类似:用户可以创建、删除、移动或重命名文件。

Namenode负责维护文件系统的namespace名称空间,任何对文件系统名称空间或属性的修改都将被Namenode记录下来。

HDFS会给客户端提供一个统一的抽象目录树,客户端通过路径来访问文件,形如:hdfs://namenode:port/dir-a/dir-b/dir-c/file.data。

5.元数据管理

在HDFS中,Namenode管理的元数据具有两种类型:

文件自身属性信息:

文件名称、权限,修改时间,文件大小,复制因子,数据块大小。

文件块位置映射信息:

记录文件块和DataNode之间的映射信息,即哪个块位于哪个节点上。

6.数据块存储

文件的各个block的具体存储管理由DataNode节点承担。每一个block都可以在多个DataNode上存储。

四、HDFS常用shell命令

格式: hdfs [SHELL_OPTIONS] COMMAND [GENERIC_OPTIONS] [COMMAND_OPTIONS]

COMMAND_OPTIONS

Description

SHELL_OPTIONS

常见的shell选项,例如:操作文件系统、管理hdfs集群..

GENERIC_OPTIONS

多个命令支持的公共选项

COMMAND COMMAND_OPTIONS

用户命令、或者是管理命令

1.创建目录

hdfs dfs [-p] -mkdir <paths>

以<paths>中的URI作为参数,创建目录。使用-p参数可以递归创建目录

2.查看目录

 hdfs dfs -ls  URI

类似于Linux的ls命令,显示文件列表

3.上传文件

hdfs dfs -put <localsrc >  ... <dst>

-put参数可以将单个的源文件src或者多个源文件src从本地文件系统拷贝到目标文件系统中(<dst>对应的路径)。也可以从标准输入中读取输入,写入目标文件系统中。

4.删除文件

hdfs dfs -rm [-r] [-skipTrash] URI [URI…]

删除参数指定的文件和目录,参数可以有多个,删除目录需要加-r参数如果指定-skipTrash选项,那么在回收站可用的情况下,该选项将跳过回收站而直接删除文件;否则,在回收站可用时,在HDFS Shell 中执行此命令,会将文件暂时放到回收站中。

5.剪切文件/移动文件

hdfs dfs -moveFromLocal <localsrc>  <dst>

和put参数类似,但是源文件localsrc拷贝之后自身被删除

6.下载文件

hdfs dfs -get [-ignorecrc ]  [-crc]  <src> <localdst>

将文件拷贝到本地文件系统,可以通过指定-ignorecrc选项拷贝CRC校验失败的文件。-crc选项表示获取文件以及CRC校验文件。

7.查看HDFS上文件的内容

hdfs dfs  -cat  URI [uri  ...]        --->全部查看

hdfs dfs -head URI                    --->查看文件开头1kb数据

hdfs dfs -tail [-f] URI                --->动态查看文件结尾1kb数据

8.拷贝文件

hdfs  dfs  -cp URI [URI ...] <dest>

将文件拷贝到目标路径中。如果<dest>  为目录的话,可以将多个文件拷贝到该目录下。

-f 选项将覆盖目标,如果它已经存在

-p 选项将保留文件属性(时间戳、所有权、许可、ACL、XAttr)

9.追加数据到文件内

hdfs dfs -appendToFile <localsrc> ... <dst>

追加一个或者多个文件到hdfs指定文件中.也可以从命令行读取输入。

10.查看磁盘情况

hdfs dfs -df [-h] URI [URI ...]

11.查看文件情况

hdfs dfs -du [-s] [-h] [-v] [-x] URI [URI ...]

-s:表示显示文件长度的汇总摘要,而不是单个文件的摘要。

-h:选项将以“人类可读”的方式格式化文件大小

-v:选项将列名显示为标题行。

-x:选项将从结果计算中排除快照。

12.系统内文件移动

hdfs dfs -mv URL <dest>

将hdfs上的文件从原路径移动到目标路径(移动之后文件删除),该命令不能跨文件系统。

13.设置副本数

hdfs dfs -setrep [-R] [-w] <numReplicas> <path>

更改文件的副本因子。 如果path是目录,则该命令以递归方式更改以path为根的目录树下所有文件的复制因子。

-w:标志请求命令等待复制完成。 这可能会花费很长时间。

-R:标志是为了向后兼容。 没有作用。

14.更多

命令

说明

checksum

返回文件的校验和信息。

hdfs dfs -checksum

copyFromLocal

与put命令类似,将本地文件拷贝到HDFS。但put命令可以传多个文件、或者是标准输入(-)

 hdfs dfs -copyFromLocal <localsrc>  <dst>

copyToLocal

与get命令类似,但只拷贝到一个本地文件

hdfs dfs -copyToLocal <dst>

count

计算与指定文件模式匹配的路径下的目录,文件和字节数。 获取配额和使用情况。 具有-count的输出列是:DIR_COUNT,FILE_COUNT,CONTENT_SIZE,PATHNAME

 hdfs dfs -count -q -v -h <path>

find

查找与指定表达式匹配的所有文件,并对它们应用选定的操作。 如果未指定路径,则默认为当前工作目录。 如果未指定表达式,则默认为-print。

hdfs dfs -find / -name <regex> -print

getfattr

显示文件或目录的扩展属性名称和值。

setfattr

设置文件或目录的扩展属性名称和值。

getmerge

下载多个HDFS上的文件并合并为1个文件

stat

以指定格式打印有关<path>上文件/目录的统计信息。

hdfs dfs -stat "type:%F perm:%a %u:%g size:%b mtime:%y atime:%x name:%n" /

test

测试,判断是否存在、是否是文件夹、是否是文件、是有有读权限、写权限等

text

获取源文件并以文本格式输出文件。 允许的格式是zip和TextRecordInputStream。

touch

在HDFS上创建一个新的文件,并可以指定访问时间、修改时间、

touchz

创建一个空文件。 如果文件存在,则返回错误。

truncate

将与指定文件截断为指定长度。

hdfs dfs -truncate -w <length> <path.file>

usage

返回某个命令的帮助

hdfs dfs -usage rm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值