我是靠谱客的博主 俭朴西牛,最近开发中收集的这篇文章主要介绍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 也具有类似功能

 

最后

以上就是俭朴西牛为你收集整理的HDFS的数据完整性的全部内容,希望文章能够帮你解决HDFS的数据完整性所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部