HDFS的数据完整性

1.上传数据时,客户端会负责将数据和校验和发送给datanode,最后一个datanode负责对数据进行校验,如果存在错误,则客户端会抛出异常:

 2.下载数据时,客户端会从datanode下载校验和,然后对数据进行校验,如果存在错误,client会将数据报告给namenode,然后如果不存在错误,客户端会将数据报告给datanode,datanode会由此更新日志(datanode持久保存用于验证的校验和日志)

 

文本的校验和设置:

        在用Java代码进行操作时,通过fs.setVerifyChecksum()方法进行设置。

import java.net.URI;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
public class test1 {
	public static void main(String[] args) throws Exception {
		Configuration conf=new Configuration();
		URI uri=new URI("hdfs://192.168.137.128:8020");
		FileSystem fs=FileSystem.get(uri, conf, "root");
		//禁用校验和验证
		fs.setVerifyChecksum(false);
	}
}

 

如果用命令时,通过hadoop -get -ignoreCrc()方法设置

hadoop dfs -get -ignoreCrc /fileName path
//等价的
hadoop dfs -copyToLocal /filname    path

对数据的检测:

hdfs dfs -checksum file

 

 

这可用于检测HDFS中两个文件的内容是否相同,hadoop distcp 也具有类似功能

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值