Hadoop 分布式计算,序列化是Hadoop通过RPC调用,使得每个节点之间有效沟通的方法。
于是序列化就成为了分布式计算的一个重要课题。
序列化之后,对于分布式计算还需要排序。因此排序也相当重要:
Hadoop要求对象在序列化之后的字节也能够支持排序,以提高计算速度,还不必产生很多无谓的数据。
下面两张图记录了JAVA原生类型转化成序列化以后所占的字节数


Hadoop里关于Writeable 相关类 的继承树:

A,Text类相当于 java.lang.String,不同的是Text用的是UTF-8的编码来解析的。
也就是说在Indexing的时候会和String有不一样地方:
举例:
System.out.println(s.length())
输出为5
System.out.println(s.getLength())
输出为10
联系:
String 的charAt返回 char所在的第几个为止========== Text的find()方法与之效果一样
String 的 codePointAt 返回unicode地址 ========== Text 的charAt()返回 unicode 地址
举例:
String s = "\u0041\u00DF\u6771\uD801\uDC00";
assertThat(s.codePointAt(3), is(0x10400));
输出: true
Text s = "\u0041\u00DF\u6771\uD801\uDC00";
assertThat(t.charAt(6), is(0x10400));
输出: true (此输出与 String.codePointAt()效果一样)
B,NullWritable 单例
Hadoop序列化与排序
本文探讨了Hadoop中序列化的关键作用及其对分布式计算的影响,特别是如何支持RPC调用和节点间的有效通信。此外,还介绍了序列化后的数据如何进行排序以提高计算效率,并减少了不必要的数据生成。文中对比了Text类与Java String类的不同之处。
1217

被折叠的 条评论
为什么被折叠?



