温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Hadoop的I/O 操作是什么

发布时间:2021-10-20 16:52:35 来源:亿速云 阅读:213 作者:柒染 栏目:大数据

Hadoop的I/O 操作是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

1.数据完整性

  • 检测数据是否损坏

    • 在数据第一次引入系统时计算校验和并在数据通过一个不可靠的通道进行传输时再次计算校验和

    • 校验和也是可能损坏的

    • 错误检测码CRC-32 HDFS 使用的是一个更有效的变体CRC-32C

  • HDFS 的数据完整性

    • 对写入的所有数据计算校验和,并在读取数据时验证校验和

    • hadoop fs -checksum 检查一个文件的校验和

    • LocalFileSystem 执行客户端的校验和验证

    • ChecksumFileSystem

2.压缩

  • 优势:减少存储文件所需要的磁盘空间,并加速数据在网络和磁盘上的传输

    压缩格式工具算法文件扩展名是否可切分
    DEFLATEDEFLATE.deflate
    gzipgzipDEFLATE.gz
    bzip2bzip2bzip2.bz2
    LZOlzopLZO.lzo
    LZ4LZ$.lz4
    SnappySnappy.snappy
  • 所有压缩算法都需要权衡空间/时间

  • bzip2的压缩能力强于gzip,但速度慢

  • codec

压缩格式HadoopCompressionCodeC
gziporg.apache.hadoop.io.compress.GzipCodeC
bzip2org.apache.hadoop.io.compress.BZip2Codec
  • 最好使用原生类库,而不是Java实现

  • 大量压缩和解压缩,可以考虑使用CodecPool

  • 压缩和输入分片

  • 在MapReduce 中使用压缩

public static void main(String[] args) throws Exception {
        if (args.length != 2) {
            System.err.println("Usage: MaxTemperatureWithCompression <input path> <output path>");
            System.exit(-1);
        }
        Job job = new Job();
        job.setJarByClass(MaxTemperature.class);
        job.setJobName("Max Temperature");

        FileInputFormat.addInputPath(job, new Path(args[0]));
        FileOutputFormat.setOutputPath(job, new Path(args[1]));

        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(IntWritable.class);

        FileOutputFormat.setCompressOutput(job, true);
        FileOutputFormat.setOutputCompressorClass(job, GzipCodec.class);

        job.setMapperClass(MaxTemperatureMapper.class);
        job.setCombinerClass(MaxTemperatureReducer.class); //减少 map 跟reducer 之间的数据传输
        job.setReducerClass(MaxTemperatureReducer.class);

        System.exit(job.waitForCompletion(true) ? 0 : 1);
    }
  • 对map任务输出进行压缩

3.序列化

定义:序列化是指将结构化对象转化为字节流以便在网络上传输或写到磁盘进行永久存储的过程,反序列化是指将字节流转回结构化对象的逆过程

序列化用于分布式数据处理的两大领域:进程间通信和永久存储

  • Writable 接口

    void write(DataOutput out) throws IOException;
    void readFields(DataInput in) throws IOException;


  • IntWritable

  • WritableComparable

  • org.apache.hadoop.io

  • VIntWritable VLongWritable (变长格式会更节省空间)

  • Text 最大2GB

4.基于文件的数据结构

  • 关于SequenceFile

    • 适合二进制类型的数据

    • hadoop fs -text numbers.seq|head

  • 关于MapFile

    • MapFile 是已经排过序的SequenceFile,它有索引,所以可以按键查找。索引自身就是一个SequenceFile,包含了map中的一小部分健

  • Avro 数据文件

  • 以上几个都是面向行的数据格式,还有面向列的格式 RCFile

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI