您的位置:首页 > 运维架构

hadoop_6 : Hadoop的相关技术

2016-02-01 22:19 405 查看

序列化

对象序列化:用于将对象编码成一个字节流,以及从字节流重新构建

hadoop的序列化机制

org.apache.hadoop.io.Wirtable接口

org.apache.hadoop.io.Comparable接口

< < interface>>: Writable //输出序列化结果到流中
+write (对象状态写入到二进制DataOutput)
+readFields (从DataInput流中读取)
* RawComparator接口允许比较流中的未被反序列对象

Wirtable封装

继承自 WritableComparable接口

WritableComparable接口 继承自:Wirtable接口+Comparable接口


//基本类型是Wirtable类型的封装
BoolenWritable: 1(序列化后的长度)
ByteWritable: 1(序列化后的长度)
IntWritable: 4(序列化后的长度)
FloatWritable: 4(序列化后的长度)
LongWritable: 8(序列化后的长度)
DoubleWritable: 8(序列化后的长度)

//
继承自WritableComparable接口;都是可比较的,get()和set()方法


Writable的java基本类型

public class VIntWritable impelements WritableComparable
{
private int value;
//设置值
public void set(int value) {this.value=value;}
//获取值
public void get() {return value;}

public void read Fields(DataInput in) throws IOException
{
value=WritableUtils.read.Vint(in);
}

public void write(DataOutput in) throws IOException
{
WritableUtils.write.Vint(out,value);
}
}


ObjectWirtable 类的实现

适用于字段需要使用多种类型

保存不同类型的对象

压缩

bzip2可以对压缩文件直接分块split

hadoop的远程调用

原理和机制

远程调用:用户可以像调用本地方法一样调用其他应用程序的服务

hadoop IPC(inter-process communications)

A调用B,A是RPC的客户端;B是RPC的服务器端

1. theClient需要调用一个远程服务,将参数打包成消息,并附加被调用过程的名字,发生到服务器
2. theServer运行时会阻塞在接收消息的调用上,结束后返回消息


RPC: 客户存根+服务器骨架

java远程方法调用(RMI)

RMI: 容许一个java虚拟机上运行的java程序调用不同虚拟机上运行的对象中的方法

java动态代理

三个直接支持类

Proxy;InvocationHandler;Method


Java NIO

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: