设为首页 收藏本站
查看: 619|回复: 0

[经验分享] hadoop API 学习小结(二)

[复制链接]

尚未签到

发表于 2016-12-9 11:19:56 | 显示全部楼层 |阅读模式
  一、数据的完整性
  由于每个磁盘或者网络上的I/O操作肯能会对正在读写的数据不慎引入错误,如果通过的数据流量非常大,数据发生损坏的几率非常高。
  检测损坏数据的常用方法是在第一次进入系统时计算数据的校验和,然后只要数据是在一个不可靠的通道上传输,就可能被损坏。如果新生成的校验和不完全匹配原始的校验和,那么数据就会被认为是被损坏了。这项技术不提供任何方式来修复数据,仅仅是错误检测。(有可能校验和出错,但数据是正确的,但肯能性不大)。
  熟悉数据结构或网络编程的同学都知道一种常用的错误检测代码 CRC-32(循环冗余检测),计算一个32位的任何大小输入的整数校验和。
  

  二、HDFS以透明方式校验所以写入它的数据,在默认设置下,会在读取数据时验证校验和。针对每个io.byte.per.checksum字节,都会创建一个单独的校验和。默认值为512字节。当客户端写入数据并且将它发送到一个数据节点的管线中,管线上的最后一个数据节点验证校验和,如果此节点检测到错误,客户端会收到一个Checksum Exception,是IOException的一个子类。如果客户端读取数据块时检测到错误,它在抛出ChecksumException前报告该坏块以及试图从名称节点中读取数据节点,名称节点标记该块已损坏,会从其他副本复制一个新的副本,这样它的副本数就会回归到预期的数量。损坏的副本将被删除。
  禁用校验和:
  (1)在用open()方法读取文件前,传一个falseFileSystem中的setVerifyChecksum()方法来禁用校验和。
  (2)shell命令,如-get,=、-copyToLocal -ignoreCrc等。
  (3)底层文件系统原生支持校验和,是通过RawLocalFileSystem 来代替 LocalFileSystem完成的。如果只想针对某些读取禁用校验和,可以创建一个RawLocalFileSystem实例,
  FileSystem fs = new RawLocalFileSystem();
  fs.initialize(null,conf);
  

  三、当写入一个名为filename的文件时,文件系统的客户端以透明方式创建一个隐藏的文件.filename.crc,在同一个文件夹下包含每个文件块的校验和。比如HDFS块,大小受io.bytes.per.checksum属性控制,默认为512字节。块的大小作为元数据储存在.crc文件中。读取文件过程中会对校验和进行验证,如果检测到错误,本地文件系统抛出Checksum Exception。
  

  四、ChecksumFileSystem校验和文件系统
  继承自FilterFileSystem类,为每个原始文件创建一个校验和文件,这些操作都在客户端完成。它很容易添加到各种文件系统中,如:
  FileSyatem rawFs = new LocalFileSystem();
  FileSystem checksummedFs = new ChecksumFileSystem(rawFs); //为rawFs创建校验和文件实例
  方法:
  getRawFilwSystem() //获得原始文件系统
  getChecksumFile(Path file) //返回与file相关的校验和文件,后缀名为.crc
  isChecksumFile(Path file)  //如果file为校验和文件,返回true
  reportChecksumFailure(Pathf,FSDataInputStreamin,longinPos,FSDataInputStreamsums, longsumsPos) //向文件系统报告校验错误

  setVerifyChecksum(boolean verifyChecksum) //设置是否验证校验
  getChecksumLength(longsize,intbytesPerSum) //根据参数字节计算校验和长度

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-311938-1-1.html 上篇帖子: hadoop的初始配置 下篇帖子: Hadoop Ganglia Metric Item
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表