微博上看到的一张关于hdfs的图片,形象生动的解释的hdfs的工作原理,再确切一点是 写操作的的基本过程:
1 一个集群中只有一个namenode,可以有多个datanodes
2 namenode 承担 <b>数据的位置存储信息</b> ,并将存储位置信息告诉client端!
3 得到位置信息后,client端开始写数据
4 写数据的时候是<b>将数据分块</b>,<b>并存储为多份</b>(一般为3份),放在不同的datanode 节点!
5 client 先将数据写到第一个节点,在第一个节点接收数据的同时,又将它所接收的数据推送到第二个,第二个推送到第三个节点,如果有多个节点,依次类推。。
6 从图中可以知道 namenode 不参与 数据块的io的!相当于mongodb 集群中的 mongos 和config 服务器的双重角色!
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZwpmLxgjM3EjMyATMxAjMxAjMfNTN2QjN2IjMvwVMw8CXyEDMy8CXzRnbl1GajFGd0F2LcRXZu5iY1BHdp5yZvxmYvw1LcpDc0RHaiojIsJye.jpg)