Clouseau: Blockchain-based Data Integrity for HDFS Clusters

Clouseau: Blockchain-based Data Integrity for HDFS Clusters

resource:2021 IEEE 37th International Conference on Data Engineering (ICDE)

一、关键概念:

1.HDFS

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的体系架构:

①数据完整性的验证是通过Merckle Proof和以太坊上的三个智能合约来实现的。
②用户向Namenode提交请求的同时,将每个块中chunk(更小的块)的哈希值和生成的根哈希值保存在FS contract中。chunk越小,数据安全性越高,但开销越大。
③block report的改变:在Clouseau中,Datanode不仅向Namenode发送块报告,还向第三方审计机构区块链(智能合约)发送块报告,具体操作见算法。

6.算法(核心)

①Oracle合同的作用,根据chunk的个数k,时间戳t和指定的Datanode生成一个种子seed,发送给对应的Datanode。
②Datanode根据这个种子生成(生成方法是固定的,可验证是否是按照规则生成的)待检查的k个chunk_id,并生成对应的Merkle Proof,发送给Validator合同。
③Validator合同根据叶节点的哈希值从FS合同处获得对应的chunk和所在区块(block)的根哈希值,首先对比chunk的内容是否相同,再验证Merkle Proof是否正确,最终能够确定这k个chunk的正确性。
④整个合同是开放的,研究者也做了相应的网页,便于参与者能够轻松便捷地去验证。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值