概述
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的数据完整性所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复