1. HDFS 是什么?
Hadoop分布式文件系统(Distributed File System)-HDFS(Hadoop Distributed File System)
2. HDFS 架构
首先HDFS是一个分布式文件系统,就是说在一个集群上做了一个文件系统。一般的集群都是主从结构。namenode是主,datenode是从。
我们来看一下这几个概念
Client:就是客户端。
1、文件切分。文件上传 HDFS 的时候,Client 将文件切分成 一个一个的Block,然后进行存储。
2、与 NameNode 交互,获取文件的位置信息。
3、与 DataNode 交互,读取或者写入数据。
4、Client 提供一些命令来管理 HDFS,比如启动或者关闭HDFS。
5、Client 可以通过一些命令来访问 HDFS。
NameNode:就是 master,它是一个主管、管理者。
1.管理者文件系统命名空间
--维护着文件树及树中的所有文件和目录
2.存储元数据
--namenodde 保存元信息的种类有
文件名目录名及它们之间的层级关系
文件目录和所有者及其权限
每个文件块和名及文件有哪些块组成
注:元数据保存在内存中
namenode元信息并不包含每个块的位置信息
3.保存文件,block,datanode 之间的映射关系
4.配置副本策略
5.处理客户端读写请求
DataNode:就是Slave。NameNode 下达命令,DataNode 执行实际的操作。
1.负责存储实际的数据块,负责为系统客户端提供数据块的读写服务
2.根据NameNode 的指示进行创建、删除和复制等操作
3.心跳机制,定期报告文件块列表信息
4.datanode之间进行通信,块的副本处理
Secondary NameNode:并非 NameNode 的热备。当NameNode 挂掉的时候,它并不能马上替换 NameNode 并提供服务。
1、辅助 NameNode,分担其工作量。
2、定期合并 fsimage和fsedits,并推送给NameNode。
3、在紧急情况下,可辅助恢复 NameNode。
3. HDFS上传流程
过程解析:
这里描述的 是一个256M的文件上传过程
① 由客户端 向 NameNode节点节点 发出请求
② NameNode 向Client返回可以可以存数据的 DataNode 这里遵循 机架感应 原则
③ 客户端 首先 根据返回的信息 先将 文件分块(Hadoop2.X版本 每一个block为 128M 而之前的版本为 64M)
④ 然后通过那么Node返回的DataNode信息 直接发送给DataNode 并且是 流式写入 同时 会复制到其他两台机器
⑤ dataNode 向 Client通信 表示已经传完 数据块 同时向NameNode报告
⑥ 依照上面(④ 到 ⑤)的原理将 所有的数据块都上传结束 向 NameNode 报告 表明 已经传完所有的数据块
这样 整个HDFS上传流程就 走完了