Clouseau: Blockchain-based Data Integrity for HDFS Clusters
resource:2021 IEEE 37th International Conference on Data Engineering (ICDE)
一、关键概念:
1.HDFS
![](https://img-blog.csdnimg.cn/455b58c1d42d4d61a7162f92668e3785.png#pic_center)
2.authentication与authorization的区别,前者是身份认证,后者是授权
3.matadata,元数据,简单来说就是描述数据的数据,比如数据的属性、存储位置、摘要等等
二、研究背景:
分布式数据库数据完整性的保证是一项艰巨但十分必要的任务。
三、研究内容:
本文研究主要聚焦于HDFS,一个十分主流的分布式文件系统,但HDFS在恶意节点的破坏面前十分脆弱而且不能够保证数据的完整性。为此,作者提出了Clouseau,在HDFS上基于区块链构建的系统,用于提供数据完整性的验证。
四、一些关键点:
1.HDFS架构:
HDFS由主从(master-slave)分布式架构组成,其中Datanode(slave)负责存储和提供数据,而Namenode(master)负责协调客户端请求和维护操作,同时记录数据存储的位置和状态。
2.HDFS工作流程:
写文件:
客户端在写入一个文件之前先将文件分块(通常大小为128MB),然后向Namenode的提出请求,Namenode选择合适的Datanode存储这些块,并将块的相关信息(包括块名、存储位置等等)保存在本地,然后发送给客户端。
读文件:
客户端直接与存储文件的Datanode通信,获取文件。
3.HDFS系统状态的感知:
heartbeat:
Datanode每隔3秒就会向Namenode发送通告表示自己在线并能够正常运行。
block report:
块报告是一个更重量级的操作,Datanode通常每6小时发送自身存储的所有块给Namenode,Namenode验证块的完整性,在这个期间,该Namenode进入安全模式,不接受客户端的请求。
4.HDFS的缺陷:
Namenode的权限过大(或者说中心化的程度太高),当Namenode变得有恶意时(为了谋求自身的利益或是被攻击),对系统的影响很大,比如:
①用户上传文件到系统,为了节省存储空间,Namenode根本就没有实际存储该文件,而是随便返回一些地址给用户,或者少存。
②Namenode确实存储了文件,但后续在block report的过程中,文件可能被Namenode所更改了。
5.Clouseau的体系架构:
![](https://img-blog.csdnimg.cn/ec1753d899f1497e8ec60dd4b92ec62a.png#pic_center)
①数据完整性的验证是通过Merckle Proof和以太坊上的三个智能合约来实现的。
②用户向Namenode提交请求的同时,将每个块中chunk(更小的块)的哈希值和生成的根哈希值保存在FS contract中。chunk越小,数据安全性越高,但开销越大。
③block report的改变:在Clouseau中,Datanode不仅向Namenode发送块报告,还向第三方审计机构区块链(智能合约)发送块报告,具体操作见算法。
6.算法(核心)
![](https://img-blog.csdnimg.cn/7a6ff2645afd4c338b5f8c479d8a3f1f.png#pic_center)
①Oracle合同的作用,根据chunk的个数k,时间戳t和指定的Datanode生成一个种子seed,发送给对应的Datanode。
②Datanode根据这个种子生成(生成方法是固定的,可验证是否是按照规则生成的)待检查的k个chunk_id,并生成对应的Merkle Proof,发送给Validator合同。
③Validator合同根据叶节点的哈希值从FS合同处获得对应的chunk和所在区块(block)的根哈希值,首先对比chunk的内容是否相同,再验证Merkle Proof是否正确,最终能够确定这k个chunk的正确性。
④整个合同是开放的,研究者也做了相应的网页,便于参与者能够轻松便捷地去验证。