1.概述
2.HDFS
2.1 HDFS组成架构
HDFS由四部分组成,分别是NameNode、DataNode、Secondary NameNode和Client
NameNode(Master)是管理者,用来下达执行命令,主要实现的功能包括:
- 管理HDFS名称空间
- 配置副本策略
- 管理数据块映射信息
- 处理客户端读写请求
DataNode(Slave)是来执行NameNode名称的角色,主要功能包括:
- 存储数据块
- 执行数据块的读写操作
Seconary NameNode,辅助NameNode,功能是辅助合并fsimage和edits,也可以辅助恢复NameNode
Client客户端,与NameNode、DataNode交互,管理HDFS
- NameNode交互,获取文件的位置信息
- DataNode交互,读写文件
2.2 HDFS文件块大小
1.x版本是64M,2.x和3.x版本是128M
根据寻址时间和传输时间,权衡确定的。
- 寻址时间 = 传输时间*0.1
- 寻址时间为10ms
- 硬盘速度为100MB/s
块太小,会增加寻址时间;块太大,传输时间会很长
2.3 HDFS写数据流程
- ①客户端通过Distributed FileSystem向NameNode请求上传文件,NameNode检查文件是否存在,检查父目录是否存在
- ②NameNode返回是否可以上传结果
- ③客户端请求第一个Block块上传到哪些DataNode上
- ④NameNode返回可以上传的结果服务器A、服务器B、服务器C
- ⑤客户端通过FSDataOutputStream请求服务器A上传数据,A收到请求之后会调用B,B收到请求之后会调用C,构造好通信管道
- ⑥服务器A、B、C分别逐级应答
- ⑦客户端向A发送第一个Block块,A收到之后发送给B,B收到之后发送给C
- ⑧第二个数据块重复以上过程
2.4 HDFS读数据流程
- ①客户端通过Distributed FileSystem向NameNode请求下载文件,NameNode查询元数据,找到文件块所在的DataNode位置
- ②就近原则选择一台DataNode服务器,请求读取数据
- ③选择的DataNode服务器向客户端传输数据
- ④客户端接收数据,先缓存在本地,然后写入目标文件
3.MapReduce
4.Yarn