Hadoop的I/O操作是什么

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

成都创新互联公司主营嘉善网站建设的网络公司,主营网站建设方案,成都APP应用开发,嘉善h5小程序开发搭建,嘉善网站营销推广欢迎嘉善等地区企业咨询

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  ");
            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

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


标题名称:Hadoop的I/O操作是什么
当前路径:http://myzitong.com/article/pdchsj.html