IO操作

本文探讨了Hadoop中确保数据完整性的方法,包括通过计算校验和来检测数据损坏,以及如何通过压缩来提高存储效率和加快数据传输速度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Hadoop的I/O操作

  1. 数据完整性

    监测数据是否损坏常用:计算校验和(不能修复数据)

    HDFS的数据完整性:

    • HDFS对写入的所有数据计算校验和,并在读取数据时验证校验和。
    • 针对每个由io.bytes.per.checksum(默认512)指定的字节的数据计算校验和。
    • datanode负责收到数据后存储数据及验证校验和。
    • 客户端从datanode读取数据时,验证校验和,每个datanode持久保存有一个用于验证的校验和日志。
    • 每个datanode在后台线程中运行一个DataBlockScanner,定期验证该datanode上的所有数据块
    • 在使用open()方法读取文件前,可以设置为禁用校验和验证。
  2. 压缩

    文件压缩的两大好处:减少存储文件所需的磁盘空间;加速数据在网络和磁盘上的传输。

    map输出的中间结果以及最终结果均可压缩,通过作业配置过程中设置属性。

    注意压缩格式是否支持切分(在压缩数据流的任意位置读取数据)。

  3. 序列化

    • 序列化:将结构化对象转化为字节流以便在网络上 传输或写到磁盘永久存储的过程
    • 反序列化:将字节流转化为结构化对象
    • 常用于 :进程间通信和永久存储
    • Hadoop节点间通信使用RPC,使用自己的序列化格式Writable,紧凑,速度快,但不太容易用Java以外的语言进行扩展或使用。
    • 主要4个接口,分别是Comparator(字节比较器), Comparable(对象比较,在MapReduce中对key进行比较), Writable(序列化), Configurable(参数配置)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值