本帖最后由 hapjin 于 2015-7-7 16:42 编辑
谢谢。我明白了。文件到数据块的映射信息(mapping from files to chunks)...其实就是fsimage中保存的bolckid信息。
------------------------------------引用自深度了解namenode---其 内部关键数据结构原理简介3. 若从fsimage中读到的item是一个文件,则还会额外包含如下信息: a) blockid(long):属于该文件的block的blockid, b) numBytes(long):该block的大小 c) genStamp(long):该block的时间戳 ------------------------------------引用自深度了解namenode---其 内部关键数据结构原理简介
而每个块的位置信息(the lcoation of each chunk's replicas)是在BlockMap这个数据结构里面。即 block -> datanodes list的对应表信息。
假设有个文件32MB,每个数据块的大小为64MB,复制因子为3.
这样,现在还是纠结那个问题:因为每个数据块会存三份,每个数据块都会有一个blockid,那对于同一个文件,NameNode的fsimage 里面会有三个blockid?
还是这三个数据块的blockid都是相同的,这样只保留一个blockid???
|