namenode的作用:
1.接收客户端的读写请求
2.保存元数据信息
3.分配副本的存放节点
4.负载均衡
secondarynamenode:
1.备份元数据
2.帮助namenode进行checkpoint,分担压力
datanode:
1.真正的数据存储
2.处理客户端的读写请求
hdfs三大机制
上传
下载
元数据合并
一。上传
- 客户端向namenode发送文件上传的请求
- namenode进行一系列的检查(1.权限,2.检查父目录是否存在,3.检查文件是否重名等,没有问题之后进行下一步)
- 向client发送文件上传的响应
- client发送文件上传的真正请求,包含文件名,文件大小等
- namenode向client返回数据上传的节点,通过文件大小进行计算,算出文件被切分的块数,最终确定返回的节点个数(例如文件200m,被切成两块,默认三个副本,则bk1:1,2,3 bk2:3,4,5)
- 客户端开始准备文件上传(进行文件的逻辑切块(不真正切块,只划分出切块的范围,是预切分))
- 构建第一个块的pipline(从client-》datanode01-》datanode02.。。。)在此期间,客户端会构建一个守护进程,等待pipline构建成功的响应
- 开始上传第一个数据块,边上传,边切分,以pakage为单位