Page 38 - 《软件学报》2021年第10期
P. 38

3010                                 Journal of Software  软件学报 Vol.32, No.10, October 2021



















                                Fig.17    System read operation configuration of operation layer consisteny
                                          图 17   操作层一致性分析系统读输入设定图

                 4.4.1    无错情况下的操作层一致性
                    无错情况下的操作层一致性实验中的状态空间报告见表 3.
                                 Table 3    State space report of operation layer consistency without error
                                          表 3   无错情况下操作层一致性状态空间报告
                                                   统计项                            个数
                                                  状态节点                            607
                                                  终结状态                             40
                                                 不一致状态                             8

                    所有不一致状态都是终结状态,因为只要读到两个结果就终结计算,并且只有存在两个结果时才有可能被
                 判定为不一致状态.以一种不一致状态来分析原因:在第 1 关系中发现最后一个文件块的存储位置记录在
                 NameNode 中,记录显示该文件块应存储在 datanode1 和 datanode2 节点上.datanode1 的文件块已经写成功,而发
                 送给 datanode2 的写文件块请求还未被处理.读文件回复库所则显示两次读操作分别访问了 datanode1 和
                 datanode2.因此,这种不一致状态表示的是:datanode1 节点上的文件块已经写成功,datanode2 节点上的文件块还
                 处于发送状态,尚未被 datanode2 处理;而两次读文件操作分别访问了这两个数据节点,使得访问 datanode1 的读
                 请求成功获得数据,而访问 datanode2 的读请求失败,从而产生了操作层不一致.
                    综合分析无错条件下的操作层一致性有以下结论.
                    (1)  系统会出现操作层的不一致,导致不一致的原因是多个副本之间传播的快慢程度不同;
                    (2)  经过足够时间的传播,系统最终会达到操作层的一致状态.
                 4.4.2    有错情况下的操作层一致性
                    有错情况下的操作层一致性实验中的状态空间报告见表 4.

                                  Table 4    State space report of operation layer consistency with error
                                          表 4   有错情况下操作层一致性状态空间报告
                                              统计项                             个数
                                              状态节点                           1 067
                                              终结状态                            81
                                             不一致状态                            16

                    以一个不一致状态为例分析原因:在该状态节点的库所中发现 datanode2 实际存储了该文件块,但
                 datanode3 写文件失败,读文件回复库所中显示两次读操作分别访问了 datanode2 和 datanode3,产生了一次成功
                 一次失败的结果,因此出现了操作层的数据不一致.
   33   34   35   36   37   38   39   40   41   42   43