HDFS集群的读写流程
HDFS集群三个角色
客户端(提交请求,用户读写数据),NameNode(全局把控,只有一个,协调所有的请求),DataNodes(数据存储,数量可以扩展)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/8664d74343c167a90d64c33a7e5572d9.jpeg)
把数据写到HDFS集群上
1、发起一个请求 (shell或java API)得到DataNodes的ip
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/dc7addfe3958253192d21e9132287b90.jpeg)
2、发送第一个block到DataNodes
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/900342f8e7d21feff4ec017c80b33688.jpeg)
3、循环发送剩下的blocks,完成后断开流的连接,NameNode记录信息
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/1a3e70c48977717c747fc6e7f7e3550b.jpeg)
总结一下:
client 拆分大文件为多个blocks,对于每一个block,NameNode提供DataNodes的地址,DataNodes通过pipeline的方式存储数据
从HDFS集群读数据的流程
DataNode是按排序返回的,默认从最近的DataNode去读取
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/f6fb1878d9ab8e6630c7228dfa11d4e6.jpeg)
HDFS的容错机制
错误类型和错误检测
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/eaad3a32a5e6c93a654809aacdb2fb6e.jpeg)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/088f7ec190d8e19ba6ed570daaaecd86.jpeg)
解决读写错误
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/e5857e6a0fe6393d00d364869165db29.jpeg)
解决DateNode错误
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/258005da59e7f9f0a3e72e58c850a460.jpeg)
副本放置策略
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/90125c81debfad87430970ee9d3b4688.jpeg)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/d61bc85b19c3d7ab1fa41581f2d26a85.jpeg)