Hadoop的I/O 操作是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
1.数据完整性
检测数据是否损坏
HDFS 的数据完整性
对写入的所有数据计算校验和,并在读取数据时验证校验和
hadoop fs -checksum 检查一个文件的校验和
LocalFileSystem 执行客户端的校验和验证
ChecksumFileSystem
2.压缩
压缩格式 | HadoopCompressionCodeC |
---|
gzip | org.apache.hadoop.io.compress.GzipCodeC |
bzip2 | org.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);
}
3.序列化
定义:序列化是指将结构化对象转化为字节流以便在网络上传输或写到磁盘进行永久存储的过程,反序列化是指将字节流转回结构化对象的逆过程
序列化用于分布式数据处理的两大领域:进程间通信和永久存储
4.基于文件的数据结构
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注天达云行业资讯频道,感谢您对天达云的支持。