摘要:
这个blog是对hadoop源码分析比较全的文章,虽然时间有点久了,但是很多东西还是很有借鉴价值的,慢慢学习中。经济不行啦,只好潜心研究技术。Google的核心竞争技术是它的计算平台。Google的大牛们用了下面5篇文章,介绍了它们的计算设施。GoogleCluster: http://research.google.com/archive/googlecluster.htmlChubby:http://labs.google.com/papers/chubby.htmlGFS:http://labs.google.com/papers/gfs.htmlBigTable:http://labs 阅读全文
摘要:
前面讲了InputFormat,就顺便讲一下Writable的东西吧,本来应当是放在HDFS中的。 当要在进程间传递对象或持久化对象的时候,就需要序列化对象成字节流,反之当要将接收到或从磁盘读取的字节流转换为对象,就要进行反序列化。Writable是Hadoop的序列化格式,Hadoop定义了这样一个Writable接口。[html] view plaincopyprint?publicinterfaceWritable{voidwrite(DataOutputout)throwsIOException;voidreadFields(DataInputin)throwsIOException; 阅读全文
摘要:
1.下面是主要的类层次图2.Writable和WritableComparable的子类们基本大同小异3.RawComparator和WritableComparator举例如下,以下以text类型的comparator每个字符从高到低位比较,对于数字类型的字符串也是比较适用的/** A WritableComparator optimized for Text keys. */publicstaticclass Comparator extends WritableComparator { publicint compare(byte[] b1, int s1, int l1, byte[] 阅读全文
摘要:
键默认的排序处理是,从一个流中读键类型的实例,使用键类型的readFields()方法来解析字节流,然后对这两个对象调用compareTo()方法。为了更快的排序,可以只通过检视字节流而不用解析出包含在其中的数据来判断这两个key的顺序。比如,考虑比较字符串文本。如果字符按照顺序读入,我们就可以在第一个字符不同的地方确定它们的顺序。即使是需要读入所有的字节,对象自身也没有初始化的必要。要支持这个高速的排序机制,你可以在你自己的数据类型的比较器实现中继承WritableComparable类。然后,重载下面的方法:public int compare(byte[] b1, int s1, int 阅读全文