logo资料库

在Eclipse下的Hadoop0.17.0(MapReduce)的统计作业指导书.pdf

第1页 / 共23页
第2页 / 共23页
第3页 / 共23页
第4页 / 共23页
第5页 / 共23页
第6页 / 共23页
第7页 / 共23页
第8页 / 共23页
资料共23页,剩余部分请下载后查看
1. 导言
1.1. 预备条件
2. 作业目标
2.1. 实现常用的统计度量
2.2. 性能要接近线性加速比
3. 作业方案
3.1. 处理对象
3.2. 期望结果
4. 作业流程
4.1. MapReduce插件
下载和安装
用MapReduce插件编程
新建Mapper类
新建Reducer类
新建主类
在Hadoop上运行
MapReduce透视图
操作DFS的目录
4.2. 统计度量的MapReduce实现
设计
Mapper代码
Reducer代码
Main代码
4.3. 中间数据part-00000
4.4. 控制台输出结果
5. 注意
5.1. 范型的问题
Mapper的范型
Reducer的范型
5.2. Hadoop-0.17.0的变化
6. 统计知识
MAX()
SUM()
SUM2()
STD()
AVG()
CNT()
在 Eclipse 下的 Hadoop0.17.0(MapReduce)作业指导书 杨来 dillony@gmail.com 1. 导言 Hadoop 为分布式编程提供了一个理想的平台,普通的程序员只要理解了分布式的特点,就可以 轻易地实现分布式计算,而不需要理解分布式的细节。本文用实例讲解了在 Eclipse 下,使用 Hadoop 对数据集的统计度量的实现过程。 1.1. 预备条件 熟悉 java 编程和 Eclipse,了解 Hadoop,MapReduce,了解 linux; 已经建立了 Hadoop-0.17.0 环境;本文中 master 的 ip 为 10.63.0.60,用户为 root; 数据为实数。 2. 作业目标 2.1. 实现常用的统计度量 具体是对数据集的每个属性进行最小值、最大值、计数、求和、均值、方差等统计,相对应于 SQL操作中的min(), max(), cnt(), sum(), avg(), std()(参见6统计知识); 2.2. 性能要接近线性加速比 由于最小值、最大值、计数、求和 等操作为分布度量,必须遍历每个数据,算法复杂度为 O(n)。 均值、方差等代数度量 依赖于计数、求和,复杂度为 O(1),需要最后执行。 3. 作业方案 3.1. 处理对象 我们希望对.csv 文件格式的实型数据,如下表,进行列向的统计。各种小数形式、科学计数表 示的实型数据均应能识别。 9.0000000e+000 3.0000000e+000 6.0000000e+000 5.0000000e+000 9.0000000e+000 7.0000000e+000 5.0000000e+000 1.0000000e+000 8.0000000e+000 5.0000000e+000 6.0000000e+000 8.0000000e+000 9.0000000e+000 7.0000000e+000 2.0000000e+000 4.0000000e+000 9.0000000e+000 9.0000000e+000 4.0000000e+000 9.0000000e+000 1.0000000e+000 4.0000000e+000 8.0000000e+000 1.0000000e+000 2.0000000e+000 2.0000000e+000 2.0000000e+000 6.0000000e+000 3.2. 期望结果
理想的输出结果应该是如下:第一行为最小值、第二行为最大值、第三行为求和、第四行为 平方和、第五行为均值、第六行为方差计数。列的数目与输入数据一致。输出的格式为标准的.csv 文件,其以逗号为分隔符。 3.0,1.0,1.0,1.0 9.0,9.0,9.0,8.0 44.0,44.0,38.0,25.0 306.0,320.0,280.0,129.0 6.285714,6.285714,5.428571,3.5714285 2.2146692,2.6903703,3.505098,2.572751 4. 作业流程 4.1. MapReduce 插件 下载和安装 在 http://www.ibm.com/developerworks/cn/opensource/os-cn-hadoop2/mapreduce_plugin.zip 下 载 MapReduce 插件,并拷贝到 Eclipse 的 plugin。地址可能会过期失效,尝试查找。可能需要填写某些 资料和同意其声明。 用 MapReduce 插件编程
如图,在“新建”时,会出现“选择向导”,选择“MapReduce Project”,点击“下一步”; 对话框会提示没有 Hadoop 的运行库,也就是外部 JAR;选择“Specify Hadoop library location”, 给出“hadoop-xxxxx.core.jar”所在的目录;“xxxxx”表示版本。 MapReduce 透视图必须要选“是”,否则后续流程无法进行。
新建 Mapper 类 在“项目资源管理器”中对刚产生的项目点右键,出现如图菜单,选择“其他”。之后又会出 现“选择向导”,如下图,找到“Mapper”,点击“下一步”; 在下图中,提示“建议不要使用缺省包”。应该为类指定一个包的路径,方便代码的封装。本 例的名称为“WordM”,包为“src”。
之后,该插件会为新类生成必要的框架,如下图。 新建 Reducer 类
在新建的对话框中,选择“Reducer”。 如上图,程序架构已经产生,按照设计添加代码即可。 新建主类
在新建的对话框中,选择“MapReduce Driver”,即可生成必要的代码。 如上图,代码都已经产生,需要按照设计,更改输入和输出。向导产生的代码是用于计算词频 的,所以“KeyClass”为“Text.class”,“ValueClass”为“IntWritable.class”,实际可以按照需要, 使用其它 Writable 类。
注意,要将缺省的“setMapperClass”和“setReducerClass”改为刚才自己产生的类,比如“WordM” 和“WordR”。 在 Hadoop 上运行 如上图,在主类的窗口点击鼠标右键,出现菜单。选择“Run on Hadoop”,程序执行的情况将 会在控制台反映出来,相当方便。 MapReduce 透视图 为了能够使用该插件诸多功能,必须选择 MapReduce 透视图,如下。
分享到:
收藏