文件写入的操作流程,Hadoop 里做得还蛮有讲究的。
块式存储的思路,用得比较巧。HDFS 把文件切成一块块,128MB 一块,每块还会备份个两三份。写入时不是直接写磁盘,而是先从NameNode
拿到块的位置,流式写入DataNode
。嗯,效率还挺高。
数据是走管道式传输的,也就是你写入一块,它会串行传到多个DataNode
上。这种设计虽然看着复杂点,但好处是副本同步得快,出问题也能迅速补上。
写数据的时候,client
会先跟NameNode
申块,再找出对应的DataNode
,按顺序写。每写一段就确认一下。写失败?直接换块重写,逻辑得还算稳。
如果你搞分布式文件系统,Hadoop 的写入机制挺值得参考的。响应快、冗余高,还不太容易丢数据。
想进一步了解的话,可以看看下面这些资料,有的是我之前用过的,还不错:
如果你刚接触HDFS
,建议先搭个伪分布式环境试试,能快点上手。