10.hadoop序列化与编程规范

本文深入探讨Hadoop中的序列化机制,包括为何选择自定义序列化而非Java序列化,以及序列化在Hadoop通信中的关键作用。同时,详细讲解了MapReduce编程规范,涵盖Mapper、Reducer和Driver三个核心组件的实现细节。

1.序列化

JAVA 类型 HADOOP 类型

int IntWritable
float FloatWritable
long LongWritable
double DoubleWritable
string Text
boolean BooleanWritable
byte ByteWritable
map MapWritable
array ArrayWritable

为什么要序列化?
存储“活的对象”

什么是序列化?
序列化就是把内存当中的对象,转换成字节序列以便于存储和网络传输
反序列化就是将受到的字节序列或者硬盘的持久化数据,转换成内存中的对象

java的序列化->Serializable

为什么不使用java提供的序列化接口?
java的序列化是一个重量级的序列化框架,一个对象被序列化后会附带很多额外的信息(效验信息,header,继承体系等)。
不便于在网络中高效传输,所以hadoop开发了一套序列化机制(Writable),精简/高效.

为什么序列化在hadoop中很重要?
hadoop通信是通过远程调用(rpc)实现的,需要进行序列化

特点:
1)紧凑
2)快速
3)可拓展
4)互操作 //多语言之间交互

2.编程规范

用户编写mr程序主要分为三个部分:Mapper,Reducer,Driver

1.Mapper阶段

(1)用户自定义mapper类 要继承父类Mapper
(2)Mapper的输入数据的kv对形式(kv类型可以自定义)
(3)Mapper的map方法的重写(加入业务逻辑)
(4)Mapper的数据输出kv对的形式(kv类型可以自定义)
(5)map()方法(maptask进程)对每个<k,v>调用一次

2.Reducer阶段

(1)用户自定义reducer类 要继承父类Reducer
(2)Reducer的数据输入类型对应的是Mapper阶段的输出数据类型,也是kv对
(3)Reducer的reduce方法的重写(加入业务逻辑)
(4)ReduceTask进程对每组的k的<k,v>组调用一次reduce方法

3.Driver阶段

mr程序需要一个Driver来进行任务的提交,提交的任务是一个描述了各种重要信息的job对象
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值