HDFS文件系统

HDFS是Hadoop体系中最重要的组成部分,主要用于解决海量大数据的存储的问题,是目前应用最广的分布式文件存储系统。

1.HDFS解决传统文件存储的两个问题

  • 当数据量越来越大时,会遇到存储的瓶颈,需要扩容
  • 由于文件太大,上传和下载都非常耗时

解决:

  • 扩容
    纵向扩容:增加内存和磁盘
    横向扩容:增加服务器的数量

  • 分块:大的文件分成多个数据库,并行处理数据

2.HDFS的基本概念

2.1 NameNode(名称节点)

NameNode是HDFS集群的主服务器,通常成为名称节点或者主节点。两大功能

  • 负责客户端请求的响应
  • 元数据的管理(查询,修改)

NameNode两个重要文件

  • fsimage:元数据镜像文件(保存文件系统的目录树)
    Fsimage是一个二进制文件,当中记录了HDFS中所有文件和目录的元数据信息
  • edits:元数据操作日志(针对目录树的修改操作)
  • Namenode会将HDFS的文件和目录元数据存储在一个叫fsimage的二进制文件中,每次保存fsimage之后到下次保存之间的所有hdfs操作,将会记录在editlog文件中,当editlog达到一定的大小(bytes,由fs.checkpoint.size参数定义)或从上次保存过后一定时间段过后(sec,由fs.checkpoint.period参数定义),namenode会重新将内存中对整个HDFS的目录树和文件元数据刷到fsimage文件中。Namenode就是通过这种方式来保证HDFS中元数据信息的安全性。

2.2 Secondary NameNode

Secondary NameNode的职责是合并NameNode的edit logs到fsimage文件中。
它定时到NameNode去获取edit logs,并更新到自己的fsimage上。
一旦它有了新的fsimage文件,它将其拷贝回NameNode中。
NameNode在下次重启时会使用这个新的fsimage文件,从而减少重启的时间

NameNode Secondary NameNode
客户端请求的响应
元数据的管理
不sNameNode节点的热备份
负责edit logs和fsimage的合并
辅助恢复NameNode

2.3 DataNode

DataNode节点是HDFS集群中的从服务器,通常称为数据节点。Datenode 提供真实文件数据的存储服务。
DataNode响应来自HDFS客户机的读写请求同时它们还响应来自NameNode的创建,删除和复制块的命令。NameNode依赖来自每个DataNode的定期心跳(heartbeat)消息。每条消息都包含一个块报告,NameNode可以根据这个报告验证块映射和其他文件系统元数据。如果DataNode不能发送心跳消息,NameNode将采用修复措施。重新复制在该节点上丢失的块。

文件块(block):最基本的存储单位。对于文件内容而言,一个文件的长度大小size,那么从文件的0偏移开始,按照固定的大小,顺序对文件进行划分并编号,划分好的每一个称一个Block。HDFS默认BIock大小是128MB。

3.HDFS的读写文件流程

3.1 HDFS的读文件流程

3.2 HDFS的写文件流程

4.HDFS的Shell操作

HDFS提供了多种数据访问的方式,其中命令行是最简单的。HDFS Shell包含以下三种:

hadoop fs 参数
hadoop dfs 参数
hdfs dfs 参数

fs涉及到一个通用的文件系统,可以指向任何的文件系统如local file,HDFS等。但是dfs仅是针对HDFS的。
(1)fs是文件系统, dfs是分布式文件系统
(2)fs > dfs
(3)分布式环境情况下,fs与dfs无区别
(4)本地环境中,fs就是本地文件,dfs就不能用了

  • hadoop fs: 使用面最广,可以操作任何文件系统。
  • hadoop dfs和hdfs dfs:
    只能操作HDFS文件系统相关(包括与Local FS间的操作),hadoop dfs已经废弃,被hdfs dfs代替。

4.1 HDFS命令

常用命令

[root@hadoop001 ~]# hdfs dfs
[root@hadoop001 ~]# hdfs dfs -help
命令参数 功能描述
-ls 查看指定路径下的文件目录
-du 统计目录下所有文件的大小
-mv 移动文件
-co 复制文件
-rm 删除文件或空白文件夹
-put 上传文件
-get 下载文件
-text 将源文件输出为文本格式
-moveFromLocal 从本地移动文件
-copyFromLocal 从本地复制文件
-copyToLocal 从HDFS拷贝到本地
-appendToFile 追加文件
-help 帮助

命令帮助

[root@hadoop001 ~]# hdfs dfs -usage ls
Usage: hadoop fs [generic options] -ls [-d] [-h] [-R] [<path> ...]
[root@hadoop001 ~]# hdfs dfs -help ls
  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值