hdfs是按块存储的,其次文件的读写请求都是通过namenode实现的。大概流程是这样的吧: 1. 客户端提交put请求时,namenode会根据文件大小确定分成多少块,然后根据各个datanode的负载情况,选择最合适的datanode,然后将datanode列表返回给客户端,客户端再根据列表中的情况,将数据按块分发到各个datanode上; 2. get:在put的时候,namenode会记录哪些块存储在哪个节点上,等读的时候(get)需要访问namenode,获取到不同的数据节点,然后再访问数据即可。