自定义Mapper类classtokenizerMapperextendsmapperobject、Text、Text和IntWritable{ … }所有自定义mapper类都必须实现maper类,4 分别为object:input keytype---v1 text 3360 input value type---v1 text 3360 output keytype
执行一次map函数,即处理一行数据; 自定义Reducer类classintsumReducerextendsReducertext,IntWritable,text,int writable { . }所有自定义reducer类都需要实现reducer类分别为: text:input keytype-------k2 int writable 3360 input value type---- v2 text 3360 output key
执行一次Reduce函数,即处理一个密钥的数据(values ); Hadoop的序列化格式序列化是指将结构化对象转化为字节流。 逆序列化(Deserialization )是序列化的逆过程。 也就是说,将字节返回到结构化对象。 Java序列化(java.io.Serializable ) Hadoop序列化格式的特点:
紧凑:高效使用存储空间。 快速:读写数据开销小、可扩展:透明读取旧格式数据的互操作性:多语言交互式Hadoop序列化的作用
序列化在分布式环境中的作用:进程间通信、永久存储。 Hadoop节点间通信Writable接口Writable接口是基于数据输入和数据输出实现的简单高效的序列化对象。
MR中的任意密钥和Value必须实现可写接口MR中的任意密钥,并且必须实现可写兼容接口。
Hadoop序列化类型、与java基本类型的转换操作: get、set
自定义类型
Context这是映射器的内部类,简单来说就是映射和
在reduce任务中跟踪App状态的记录是自然的MapContext
可以记录map执行的上下文,并在mapper类中保存此上下文
保存运行时参数、输入文件切片信息等job conf的信息
等待
输入格式文本格式,默认格式,每行一个
只记录的记录,作为value,将文件的偏移值设为key
• KeyValueInputFormat,此格式为每行一个
虽然是单独的记录,但Key和Value由选项卡分隔,是默认的
的OutputFormat可用作中间结果,如下所示
输入步骤MapReduce。
• SequenceFileInputFormat
基于块的压缩格式可以使用几种类型的数据序列化和反序列化操作将数据快速导入Mapper类中。 当Map作业完成时,每个Map函数都会返回Partitioner类的结果
将“转发”到对应的Reducer所在的节点。 在这种情况下,用户可以提供以下Partitioner类
确定对于给定(key,value )传输的具体位置;
Combiner系Map侧会输出大量的输出。 组合器的作用是
为了减少传输目的地,映射端将输出合并一次
重做器的数据量
输出格式
Maper、Reducer类的setup和cleaup方法在run方法中调用了三个方法: setup方法。
映射方法,清除up方法。 其中包括setup方法和
缺省情况下,cleanup方法不执行任何操作。 另外,它们
只执行一次。 但是,setup方法通常在map中
函数曾执行作业等准备工作
配置信息等; cleanup方法由map方法承载
行结束后最后运行。 这个方法是完成几个结
最后的清理工作,例如释放资源