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

乔嘉林  等:基于着色 Petri 网的 HDFS 数据一致性建模与分析                                            2995


                 条件和有错条件下进行分析,总结系统在各种条件下提供的一致性保证.第 5 节总结本文工作.

                 1    相关工作

                 1.1   HDFS相关研究
                                                     [1]
                    HDFS 作为开源分布式计算平台 Hadoop 的核心组件之一,在海量数据管理方面得到了广泛应用.雅虎在
                 2012 年已经在 4 个数据中心部署了 42 000 个 Hadoop 节点;Facebook 在同年部署的 Hadoop 集群能够处理 100PB
                                                        [9]
                 的数据,并且数据量还在以每天 0.5PB 的速度增长 .文献[10]列举了 Hadoop 在多种分布式计算场景下的应用
                 情况,由此可见其应用范围之广.除此之外,还有很多公司提供商业版的 Hadoop 及相关支持,如 Cloudera、IBM、
                                    [9]
                 MapR、EMC 和 Oracle 等 .同时,HDFS 系统复杂度较高,1.0.0 版本的 Hadoop 系统源代码有 52.6 万行,包含 2 353
                 个 Java 类,规模庞大,并且是分布式的系统设计,给数据一致性研究带来了较大困难.
                                       [3]
                    HDFS 的原型系统 GFS 从设计者的角度进行说明,认为系统提供了较松的一致性(relaxed consistency),在
                 不同条件下提供差异化的一致性保证,对于写文件操作,成功的串行写能保证数据一致且有确定的顺序,成功的
                 并行写能保证数据一致但不保证确定的顺序,出现失败的操作不提供一致性保证.文献[11]在 HDFS 上层封装了
                 新的文件系统接口,针对接口进行测试以观察其数据一致性模型,认为 HDFS 提供文件操作的顺序一致性,即从
                 单个文件来看,所有操作执行的结果等效于这些操作按照某一个顺序序列执行的结果.但是,该顺序是由系统程
                 序指定而非受用户控制.同时,对于整个文件系统来说并不是顺序一致的.Facebook 在使用 HDFS 构建新系统时,
                 认为它提供了强一致性保证,并且可以避免数据恶化                  [12] .从上述分析可知:就 HDFS 的一致性问题缺少系统性的
                 研究和分析,没有能够形成共识.在研究方法上也以基于模型的理论推断以及系统外部行为分析为主,缺少基于
                 源代码的分析案例.
                 1.2   大数据系统建模
                    国内外很多学者      [1315] 对大数据系统从软件工程的角度进行建模,分析系统运行轨迹,并给出了有效的优化
                 方向.文献[16]从 HDFS 文件系统的架构入手,通过对模型各个组成部分的分析,总结出了其在云计算领域中的
                 应用优势以及存在的问题.由于整个工作和分析在架构层面进行,难免会丢失一些 HDFS 实现中的细节.文献
                 [17]使用 UML 对分布式文献系统进行了建模,该方法易于理解,但由于无法在基于 UML 图的模型上进行仿真
                 和数学分析,因此,该模型无法分析 HDFS 的一致性问题.文献[18]为了分析 HDFS 集群在节点频繁迁入迁出时
                 的运行状态,使用了着色 Petri 网,分别对客户端、命名节点(namenode)、数据节点(datanode)进行了读写流程建
                 模,通过 CPN Tools 对模型进行仿真,在集群动态变化的情况下,读写操作的成功率随副本数量发生变化.文献
                 [18]发现:随着副本数量的增多,写操作成功率逐渐降低,这是由于写操作需要在全部副本都执行成功;而在集群
                 动态变化时,任意节点都可能随时宕机,因此副本越多,写失败的概率越大.为了增加写操作成功率,作者修改了
                 写操作成功的条件,只需有一个副本的写操作执行成功即可,从而提升了写操作的成功率.该工作提出的模型没
                 有对副本的数据值进行建模,从而缺失了对副本是否一致的建模,因此无法用于 HDFS 的一致性分析.但是一致
                 性是本文的重点研究目标,该工作与本文的研究目标不同,但是研究方法具有一定的相似性,均通过 Petri 网建模
                 进行系统行为分析,具有一定的借鉴意义.以上对 HDFS 的建模和分析工作大多无法精细到各个节点内部的实
                 现机制,难以得到数据一致性等问题的结论.此外,传统的建模工具得到的静态模型无法直接进行仿真,大大降
                 低了所建立的模型的实用性.文献[19]对 HDFS 进行了建模,并对数据块多个副本的值进行了建模和检查,但未
                 得到数据副本不一致产生原因的准确原因.本文在此基础上进行了细粒度建模,并进行了更深入的分析和论证,
                 明确了 HDFS 无法满足读操作一致性的发生场景和原因.
                 1.3   Petri网概述

                    Petri 网是由 C.A.Petri 提出的一种图形化的建模工具         [20] .Petri 网适用于对并发、异步、分布式、并行、非
                 确定性和随机的信息处理系统进行建模,在工作流、分布式系统分析等领域有着广泛的应用.简单的图形化表
                 示是 Petri 网的重要特性之一,仅使用库所、变迁、弧和令牌这 4 种简单的元素,即可对复杂的系统进行表达.
   18   19   20   21   22   23   24   25   26   27   28