我是菜鸟:MapReduce编程模型
来源:互联网 发布:淘宝半自动机器人 编辑:程序博客网 时间:2024/06/03 16:12
编程方法
- 迭代。 遍历输入数据,并将之解析为key/value;
- 映射。 将输入key/value映射为另外的key/value;
- 分组。根据key对中间数据进行分组;
- 规约。 以组为单位对数据进行规约;
- 迭代。 将最终的key/value对保存在输出文件中。
编程接口体系结构
可以分为2层:
1. 编程接口层 InputFormat, Mapper, Partitioner, Reducer和outputFormat.
2. 工具层: JobControl, ChainMapper/ChainReducer, Hadoop Streaming 和 Hadoop pipes.
一些细节
- 参数要求: 用户输入的key/value必须是可以序列化的,且key必须是可以排序的。
- Reporter 接口。 提供完成进度,设置状态消息和更新计数器。
- 编程接口层中的5个组件都属于 回调接口, 以实现回调机制。 当用户按照预定实现这几个接口后,运行时环境会自动调用。
java API 解析
作业配置与提交
Hadoop 配置文件
Hadoop中 Common, HDFS 和MapReduce 都配置文件均为xml, 分为系统默认配置文件(core-default.xml, hdfs-defalult.xml, mapred-default.xml)和管理员自定义配置文件(core-site.xml….)。
每个配置文件包括三个配置属性:name,value 和 description. 另外这些参数有2个特性:final 和变量扩展。
final参数 可以防止用户在程序中修改这些属性。
变量扩展:就是将参数中对部分的值通过引用其他已近定义好的,有点如使用JAVA_HOME定义PATH。其格式为:${hadoop.tmp.dir}/mapred/temp
InputFormat 接口的实现
InputFormat<—FileInputFormat
InputFormat<—–DBInputFormat
针对FileInputForma而言,基类FileInputFormat 提供getSplits实现,派生类提供getRecordReader的实现。
getSplits中的算法:文件切分算法和host选择算法。
文件切分算法:
splitSize = max{minSize, min{goalSize, blockSize}}
host 选择算法
按照rack包含的数据量对rack排序,然后在rack内部按照每个node包含的数据量对node进行排序,最后取前N个node的host作为InputSplit的host列表,这里的N为副本数量。
当使用基于fileInputFormat实现InputFormat时候,为了提高Map Task的数据本地性,应当使用InputSize大小与block大小相同。
getRecordReader, 将InputSplit 解析为一个个key/value对。
需要考虑以下内容:
1. 定位记录边界: 用来识别完整的记录。如添加换行付。
2. 解析key/value: TextInputFormat每一行的内容作为value,而将改行在整个文件中的偏移量作为key。
OutputFormat 接口的设计
描述输出数据的格式,将用户提供的key/value对写入特定的文件中。
- 我是菜鸟:MapReduce编程模型
- 我是编程菜鸟!
- 软件编程 我是一个菜鸟
- 我是菜鸟:java并发编程
- mapreduce编程模型介绍
- MapReduce编程模型
- MapReduce编程模型
- MapReduce 编程模型
- MapReduce 编程模型概述
- MapReduce编程模型简介
- MapReduce 编程模型概述
- MapReduce编程模型
- MapReduce编程模型概述
- Hadoop MapReduce编程模型
- MapReduce 编程模型概述
- MapReduce编程模型
- 浅谈MapReduce编程模型
- MapReduce编程模型概述
- scala学习之map和tuple
- JPA入门例子(采用JPA的hibernate实现版本)
- 1030 - Discovering Gold (lightoj 1030 概率DP)
- 解决读取bitmap内存溢出问题
- swirl 3: Sequences of Numbers
- 我是菜鸟:MapReduce编程模型
- 使用GCD
- iOS学习(其他小控件的使用)
- Codeforces B - Berland National Library
- AndroidStudio单元测试——instrumentation
- 反转单向链表
- 在一个文件中有10G个整数,乱序排列,要求找出中位数
- Linux实际内存使用计算
- Activity的启动模式与flag详解