hadoop 中一个大文件 在hdfs中是如何存储的

例如,我有一个5GB的大文件,我写到hdfs中,我看权威指南的意思,分成多个数据包,形成一个数据队列,然后依次写入datanode列表。如果有三个datanode,先传给第一个datanode,然后由第一个传给第二个,第二个传给第三个,如果是这样不是每个节点都有5GB的文件了吗?
如果是这样,我一个客户端在读取hdfs的时候,namenode找到一个最优的datanode,那我要读取的文件不是只能在其中一个datanode上去读取了吗,除非文件特别大,超过datanode的存储。那这个分布式的效果如何体现出来呢?有点没有弄懂,请大侠给讲解一下。

文件是按照块来存储的,比如配置的每块大小为64M,那么5G的文件,会分成5*1024/64=80块,每个块会在不同节点上存多份。你上面说的依次写入datanode,是指将每个块依次写入。
读取的时候,也是一块一块来读的,当然,这些都已经被HDFS的客户端封装好了,你看到就是在读一个文件。
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答