2021SC@SDUSC
本次代码分析将从Hadoop中的Writable,Hadoop中的压缩读取数据(API)以及Hadoop中类Client的相关作用及代码进行分析。
由于Hadoop的Cloud Storage与MapReduce都有通信的需求,需要对通信的对象序列化。而Hadoop没有采用Java的序列化,而是拥有自己的系统。
1.Hadoop中的Writable
而在org.apache.hadoop.io中,hadoop使用自己的序列化格式Writables接口,定义了许多序列化对象,实现了程序的简约,达到了提高运行速度的效果。在Hadoop中, 并没有使用Java自带的基本类型类, 而是使用自己开发的类,包括 IntWritable, FloatWritable, BooleanWritable, LongWritable, ByteWritable, BytesWritable, DoubleWritable, Text等
下面是一个Hadoop中使用Writables接口的一段经典代码:
1. public class MyWritable implements Writable {
2. // Some data
3. private int counter;
4. private long timestamp;
5.
6. public void write(DataOutput out) throws IOException {
7. out.writeInt(counter);
8. out.writeLong(timestamp);
9. }
10.
11. public void readFields(DataInput in) throws IOException {
12. counter = in.readInt();
13. timestamp &