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,产生了一次成功
一次失败的结果,因此出现了操作层的数据不一致.