我是靠谱客的博主 开心蓝天,最近开发中收集的这篇文章主要介绍Hadoop HDFS 数据一致性,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

HDFS 会对写入的所有数据计算 校验和( checksum ) ,并在读取数据时 验证校验和 。针对指定字节的数目计算校验和。字节数默认是512 字节,可以通过 io.bytes.per.checksum 属性设置。通过CRC-32编码后为4字节。

Datanode 在保存数据前负责验证 checksum 。client 会把数据和校验和一起发送到一个由多个datanode 组成的队列中,最后一个Datanode 负责验证 checksum 。如果验证失败,会抛出一个ChecksumException。客户端需要处理这种异常。

客户端从datanode读取数据时,也会验证 checksum 。每个Datanode 都保存了一个 验证 checksum 的日志。每次客户端成功验证一个数据块后,都会告知datanode,datanode会更新日志。

每个datanode 也会在一个后台线程中运行一个 DataBlockScanner,定期验证这个 datanode 上的所有数据块。

在用   hadoop fs get  命令读取文件时,可以用   -ignoreCrc  忽略验证。如果是通过FileSystem API 读取时,可以通过 setVerify Checksum(false),忽略验证。

Hadoop 中的   LocalFileSystem  会进行客户端的检验和,写文件时,会在目录下创建一个名为   .filename.crc  的隐藏文件,如果想禁止校验和功能,可以用 RawLocalFileSystem  代替 LocalFileSystem  。
Configuration conf = ...
FileSystem fs = new RawLocalFileSystem();
fs.initialize(null, conf);
或者直接设置 fs.file.impl 属性为  org.apache. hadoop.fs.RawLocalFileSystem  这样会全局禁用 checksum  

LocalFileSystem 内部使用了   ChecksumFileSystem  完成 checksum 工作。通过  ChecksumFileSystem   可以添加校验和功能。
FileSystem rawFs = ...
FileSystem checksummedFs = new   ChecksumFileSystem(rawFs);



最后

以上就是开心蓝天为你收集整理的Hadoop HDFS 数据一致性的全部内容,希望文章能够帮你解决Hadoop HDFS 数据一致性所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部