Lecture11_ML_MapReduce
- 格式:pptx
- 大小:593.14 KB
- 文档页数:51


Mapreduce程序设计报告姓名:学号:题目:Eclipse下开发MapReduce1、实验环境联想pc机虚拟机:VM 10.0操作系统:Centos 6.4Hadoop版本:hadoop 1.2.1Jdk版本:jdk-7u25Eclipse版本:eclipse-SDK-4.2.2-linux-gtk-x86_642、安装配置eclipse开发环境2.1安装eclipse文件将压缩包解压,文件夹位于/usr/eclipse2.2下载eclipse-hadoop插件下载与hadoop版本对应的插件hadoop-eclipse-plugin-1.2.1.ja,然后解压放置在usr/eclipse/plugins下2.3打开hadoop的守护程序,打开eclipse,进行配置(1)在终端下输入start-all.sh,启动hadoop的守护程序,然后打开eclipse(2)如果安装插件成功,那么打开Window-->Preferens,Hadoop Map/Reduce选项,在这个选项需要配置Hadoop installation directory。
(3)新建Map/Reduce Locations。
在Window-->Show View中打开Map/Reduce Locations。
在Map/Reduce Locations中新建一个Hadoop Location。
在这个View中,右键-->New Hadoop Location,然后在弹出的对话框中需要配置Location name,这里面的Host、Port分别为你在mapred-site.xml、core-site.xml中配置的ip地址及端口(伪分布模式下为localhost或者127.0.0.1)。
接着点击"Advanced parameters"从中找见"hadoop.tmp.dir",修改成为Hadoop集群中我们设置的地址,我的Hadoop集群是"/usr/hadoop/tmp",这个参数在"core-site.xml"进行了配置(hadoop.tmp.dir是hadoop文件系统依赖的基础配置,很多路径都依赖它。
7.1mapreduce的⼯作机制任务流程执⾏步骤1.1 Mapreduce任务流程Mapreduce是⼤量数据并发处理的编程模型,主要包括下⾯五个实体,客户端将作业⽂件复制到分布式⽂件系统,向资源管理器提交mapreduce作业,资源管理器向节点管理器分配容器资源,节点管理器启动application Master,application master启动另外⼀个节点管理器,向资源管理器申请容器资源,⽤来运⾏作业任务。
客户端提交mapreduce作业资源管理器管理分配资源节点管理器启动、管理、监视集群中的container容器⼯作Application Master每个程序对应⼀个AM,负责程序的任务调度,本⾝也是运⾏在NM的Container中分布式⽂件系统存储作业⽂件mapreduce流程图mapreduce的⼯作流程(1)客户端调⽤Job实例的Submit()或者waitForCompletion()⽅法提交作业;(2)客户端向ResourceManage请求分配⼀个Application ID,客户端会对程序的输出路径进⾏检查,如果没有问题,进⾏作业输⼊分⽚的计算。
(3)将作业运⾏所需要的资源拷贝到HDFS中,包括jar包、配置⽂件和计算出来的输⼊分⽚信息等;(4)调⽤ResourceManage的submitApplication⽅法将作业提交到ResourceManage;(5) ResourceManage收到submitApplication⽅法的调⽤之后会命令⼀个NM启动⼀个Container,.在该NodeManage的Container上启动管理该作业的ApplicationMaster进程;(6) .AM对作业进⾏初始化操作,并将会接收作业的处理和完成情况报告;(7) AM从HDFS中获得输⼊数据的分⽚信息;根据分⽚信息确定要启动的map任务数,reduce任务数则根据mapreduce.job.reduces属性或者Job实例的setNumReduceTasks⽅法来决定。
Hadoop Map/Reduce教程[一]编辑| 删除| 权限设置| 更多▼更多▲∙设置置顶∙推荐日志∙转为私密日志开心延年发表于2009年11月02日00:15 阅读(10) 评论(1) 分类:搜索与存储权限: 公开今天浏览了下hadoop的 map/reduce文档,初步感觉这东西太牛逼了,听我在这里给你吹吹。
你可以这样理解,假设你有很多台烂机器(假设1000台)1.利用hadoop他会帮你组装成一台超级计算机(集群),你的这台计算机是超多核的(很多个CPU),一个超级大的硬盘,而且容错和写入速度都很快。
2.如果你的计算任务可以拆分,那么通过map/Reduce,他可以统一指挥你的那一帮烂机器,让一堆机器帮你一起干活(并行计算),谁干什么,负责什么,他来管理,通常处理个几T的数据,只要你有机器那就小CASE。
3.hadoop要分析的数据通常都是巨大的(T级),网络I/O开销不可忽视,但分析程序通常不会很大,所以他传递的是计算方法(程序),而不是数据文件,所以每次计算在物理上都是在相近的节点上进行(同一台机器或同局域网),大大降低的IO消耗,而且计算程序如果要经常使用的话也是可以做缓存的。
4.hadoop是一个分布式的文件系统,他就像一个管家,管理你数据的存放,在物理上较远的地方会分别存放(这样一是不同的地方读取数据都很快,也起到了异地容灾的作用),他会动态管理和调动你的数据节点,高强的容错处理,最大程度的降低数据丢失的风险。
比较著名的应用:nutch搜索引擎的蜘蛛抓取程序,数据的存储以及pageRank(网页重要程序)计算。
QQ空间的日志分析处理(PV,UV)咋样,给他吹的够牛了吧。
下面是别人翻译的官方文档,经常做日志分析处理的同学可以研究下。
目的这篇教程从用户的角度出发,全面地介绍了Hadoop Map/Reduce框架的各个方面。
先决条件请先确认Hadoop被正确安装、配置和正常运行中。
第8章 MapReduce 相关特性详解184 if(key.toString().equals("hello")){ //判断计数条件 context.setStatus("BadKey is coming!"); //写入Reduce 状态context.getCounter(ReportTest.ReduceReport).increment(1); //计数增加 }context.write(key, new IntWritable(sum));};}}从以上程序的黑体部分中可以看到,使用了大量的关键字进行计数器的设置,因此可以通过触发条件对计数值进行增加。
图8-4展示了最终结果。
图8-4 程序8-1运行结果计数器视图最上面部分是设置的计数器计数,根据获取条件产生了若干个计数器对结果进行输出。
8.1.3 动态计数器对于设定的计数器,可以通过在初始处设置枚举,使得计数器能够引用枚举中的类型,从而提供计数的功能。
小提示:有些时候,某些问题的产生并不适合在枚举处提供,例如一些产生的错误并不能在一开始定义,因此需要一个动态定义计数器的方法对数据进行定义。
除了前面所述的使用getCounter 方法获取枚举中值的方式外,Context 类中还有一个重载的方法能够对当前计数器进行动态定义,其源码如下所示:public Counter getCounter(String groupName, String counterName) { return reporter.getCounter(groupName, counterName);}此方法通过重新动态定义计数器实现对信息的动态捕获。
代码如程序8-2所示。