HDFS分布式文件系统—原理与Shell操作

HDFS分布式文件系统—原理与Shell操作

一、HDFS简介

   随着数据量的快速增长,传统文件面临存储瓶颈和文件过大,上传和下载耗时过久的问题。对于存储瓶颈需要进行扩容,有两个解决方案,第一是纵向扩容,即增加磁盘和内存;第二说横向扩容,即增加服务器的数量。对于上传下载效率问题,解决方法就是把一个大文件分成多个数据块,以并行的方式把数据块进行存储。分布式文件系统就是基于上述的解决方法而产生的。

1.HDFS的基本概念

HDFS是一个易于扩展的分布式文件系统,运行在成百上千台低成本的机器上,具有高度的容错能力;提供应用程序数据的高吞吐量访问,可以对海量文件信息进行存储和管理。
(1)NameNode (名称节点)
HDFS集群的主服务器,称为名称节点或主节点。NameNode主要以元数据形式进行管理和存储;存储文件系统操作记录等信息和在配置文件中设置备份数量。
(2)DataNode (数据节点)
HDFS集群的从服务器,称为数据节点。文件系统把文件划分成多个数据块存储在DataNode中,所以DataNode需要大量的磁盘空间。需要与NameNode不断保持通信,把对数据块创建、删除等信息发送到NameNode机器中。
(3)Block(数据块)
数据块为磁盘对数据读写的最小单位。在Hadoop2.x版本中,默认块都大小为128M,并备份为3块,每份尽量存储啊不同的DataNode中,通过备份,提供数据的容错性和可用性。
(4)Rack(机架)
HDFS通过机架感知策略,使NameNode确定每个DataNode所属机架ID,副本存放策略,改进数据的可靠性、可用性和网络带宽的利用率。
(5)MetaData(元数据)
有三种·信息形式,一是HDFS的文件合目录信息。二是记录文件内容如存储的相关信息;三是记录所有的DataNode信息,用于对DataNode的管理。

2.HDFS特点

优点:
(1)高容错,副本机制,DataNode节点周期性向NameNode发送心跳信号,发现DataNode宕机,可以通过副本自动恢复。
(2)流式数据访问
(3)支持超大文件
(4)高数据吞吐量,一次写入,多次读取,一旦写入就不能修改,只能进行追加,保证数据一致性。
(5)可构建在廉价的机器上。
缺点:
(1)高延迟
(2)不适合小文件存储
(3)不合适并发写入,不支持并发用户的写操作。

二、HDFS 架构原理

1.HDFS存储架构

1.hdfs采用的是主从架构(Master/Slave 架构),分别由一个NameNode和多个DataNode组成;NameNode为主节点负责管理文件系统的命名空间已经客户端对文件的访问,DataNode为从节点负责节点上数据的存储。
2.NameNode以元数据的形式,维护FsImage镜像文件和EditLog日志文件,FsImage镜像文件存储文件系统的命名空间的信息;EditLog日志文件持久化记录文件系统元数据的变化。
3.随着NameNode存储元数据的增加,EditLog日志文件越来越大,而重启集群,namenode需要恢复元数据信息,需要加载FsImage镜像文件和重复EditLog日志文件记录的操作,会花费很多时间。所以HDFS提供Secondary NameNode(辅助节点),负责周期性把EditLog日志文件合并到FsImage镜像文件中,减小EditLog日志文件的大小,缩短重启集群的时间。

2.HDFS文件读写原理

Client(客户端)对HDFS中的数据进行读写操作。
(1)HDFS写数据操作
客户端发起文件上传请求,提供RPC(远程过程调用)与NameNode建立通信,然后上传文件。把文件划分成多个数据块,依次上传数据块和副本。
(2)HDFS读数据操作
客户端向NameNode发起RPC请求,获取数据块的位置,把读取出来的所有Block文件合并成一个最终的文件。

三、HDFS的Shell操作

1.HDFS Shell参数

命令参数 功能描述
-ls 查看指定路径的目录结构
-du 统计目录小所有文件的大小
-mv 移动文件
-cp 复制文件
-rm 删除文件\空白文件夹
-put 上传文件
-cat 查看文件
-mkdir 创建文件夹
-text 把源文件输出为文件格式
-help 帮助

2.ls命令

hadoop fs -ls [参数] [指定路径]
参数:

  • -d :将目录显示为普通文件
  • -h:便于操作人员读取的单位信格式
  • -R:递归显示所有子目录的信息
    查看HDFS根目录下所有文件和文件夹
hadoop fs -ls /

2.mkdir命令

使用参数-p创建子目录

hadoop fs -p /itcast/hadoop

3.put命令

参数:

  • -f :覆盖目标文件
  • -p:保留访问和修改时间、权限
    将本地系统文件复制到HDFS上
hadoop fs -put -f aa /

猜你喜欢

转载自blog.csdn.net/tang5615/article/details/125669045