• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
导航菜单
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx
您的位置:首页 > 服务器 >云计算 > Hadoop 源代码分析(三)对象序列化,hadoop序列化

Hadoop 源代码分析(三)对象序列化,hadoop序列化

作者:网友 字体:[增加 减小] 来源:互联网

本文主要包含hadoop源代码,hadoop源代码下载,hadoop序列化,hadoop,hadoop是什么等服务器相关知识,网友希望可以进行参考

Hadoop 源代码分析(三)对象序列化,hadoop序列化


由于Hadoop 的MapReduce 和HDFS 都有通信的需求,需要对通信的对象进行序列化。Hadoop 并没有采用Java 的序列化,而是
引入了它自己的系统。
org.apache.hadoop.io 中定义了大量的可序列化对象,他们都实现了Writable 接口。实现了Writable 接口的一个典型例子如
下:
Java 代码
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 = in.readLong();
14. }
15.
16. public static MyWritable read(DataInput in) throws IOException {
17. MyWritable w = new MyWritable();
18. w.readFields(in);
19. return w;
20. }
21.}
其中的write 和readFields 分别实现了把对象序列化和反序列化的功能,是Writable 接口定义的两个方法。下图给出了庞大的
org.apache.hadoop.io 中对象的关系。
 

这里,我把ObjectWritable 标为红色,是因为相对于其他对象,它有不同的地位。当我们讨论Hadoop 的RPC 时,我们会提到RPC上交换的信息,必须是Java 的基本类型,String 和Writable 接口的实现类,以及元素为以上类型的数组。ObjectWritable 对象保存了一个可以在RPC 上传输的对象和对象的类型信息。这样,我们就有了一个万能的,可以用于客户端/服务器间传输的Writable 对象。例如,我们要把上面例子中的对象作为RPC 请求,需要根据MyWritable 创建一个ObjectWritable,ObjectWritable 往流里会写如下信息
对象类名长度,对象类名,对象自己的串行化结果
这样,到了对端,ObjectWritable 可以根据对象类名创建对应的对象,并解串行。应该注意到,ObjectWritable 依赖于WritableFactories,那存

储了Writable 子类对应的工厂。我们需要把MyWritable 的工厂,保存在WritableFactories 中(通过WritableFactories.setFactory)。

更多分享请关注:http://bbs.superwu.cn  关注超人学院微信:BJ-CRXY

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Hadoop源代码分析(三七),hadoop源代码
  • Hadoop 源代码分析(六)RPC-Client,hadooprpc-client
  • Hadoop 源代码分析(三)对象序列化,hadoop序列化
  • hadoop 多数据源连接之DataJoin,hadoopdatajoin

相关文章

  • MemStore刷写线程—MemStoreFlusher源代码分析,hbasememstore
  • Understanding Cubert Concepts(二)Co-Partitioned Blocks,partitioned
  • 使用simple json时遇到的一个小问题,simplejson
  • 生源再增 欲促寒门出贵子,生源促寒门贵子
  • win系统下启动linux上的kafka集群及使用,linuxkafka
  • 用Hello World校验Docker的安装,hellodocker
  • <转>linux上nagios安装完整版,linuxnagios
  • 关于Openstack的浅层次认知,openstack认知
  • [Hive]Hive分区表新增字段,hive分区表新增字段
  • OpenStack之swift安装笔记,openstackswift

文章分类

  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx

最近更新的内容

    • XenServer网卡Bonding,xenserverbonding
    • 用Bash Script编写Hadoop MapReduce Streaming,hadoopmapreduce
    • hive SymlinkTextInputFormat介绍及用法,textinputformat
    • input from 表单提交 使用 属性 disabled="disabled" 后台接收不到name="username"的值,disabledusername
    • <转>Openstack ceilometer 宿主机监控模块扩展,openstackceilometer
    • Hadoop知识汇总,hadoop汇总
    • Hadoop 源代码分析(六)RPC-Client,hadooprpc-client
    • 两款Docker管理UI:DockerUI & Shipyard,dockerdockerui
    • Docker exec与Docker attach,dockerexecattach
    • (Kilo)Devstack Kilo版本localrc推荐,devstacklocalrc

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有