草庐IT

用Hadoop管理界面来分析Map-Reduce作业

charles_wang888 2023-03-28 原文
 如果我们只是在IDE里面跑Hadoop作业,那么这个作业的运行过程不会显示在Hadoop  管理界面上,但是如果我们把作业上传到服务器上运行,那么作业的运行过程就会显示在管理界面上。

还是以上次的分析最高气温的Map-Reduce为例,源代码可以见 http://supercharles888.blog.51cto.com/609344/878422 这篇博客的内容。我们将其打包成jar包,然后上传到/home/hadoop-user/hadoop-0.20.2/charlestest 目录中:

我们在命令行中执行MaxTemperature类中定义的作业:

 

hadoop jar ParseWeatherFile.jar com.charles.parseweather.MaxTemperature  input/1901.txt output-001

这里我们执行的入口为 WeatherFile的 jar包中的MaxTemperature类,最后2个参数分别是输入文件位置和输出目录:

运行结果如图:

 

现在我们就可以去控制台去看整个过程了:

我们去http://192.168.129.35:50030/jobtracker.jsp 来看map-reduce过程。

在Completed Job部分,我们看到了刚才运行的作业:

对比Job Name刚好是我们在job类中设定的名字,见第43行所示:

  1. package com.charles.parseweather; 
  2.  
  3.  
  4. import org.apache.hadoop.conf.Configuration; 
  5. import org.apache.hadoop.fs.Path; 
  6. import org.apache.hadoop.io.IntWritable; 
  7. import org.apache.hadoop.io.Text; 
  8. import org.apache.hadoop.mapreduce.Job; 
  9. import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; 
  10. import org.apache.hadoop.mapreduce.lib.input.TextInputFormat; 
  11. import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; 
  12. import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat; 
  13.  
  14.  
  15. /** 
  16.  *  
  17.  * 
  18.  * Description: 这个类定义并且运行作业 
  19.  * 
  20.  * @author charles.wang 
  21.  * @created May 24, 2012 5:29:12 PM 
  22.  * 
  23.  */ 
  24.  
  25. public class MaxTemperature { 
  26.  
  27.     /** 
  28.      * @param args 
  29.      */ 
  30.     public static void main(String[] args) throws Exception{ 
  31.         // TODO Auto-generated method stub 
  32.  
  33.          
  34.         if (args.length !=2){ 
  35.             System.err.println("Usage: MaxTemperature <input path> <output path>"); 
  36.             System.exit(-1); 
  37.         } 
  38.          
  39.         //创建一个Map-Reduce的作业 
  40.         Configuration conf = new Configuration(); 
  41.         conf.set("hadoop.job.ugi""hadoop-user,hadoop-user"); 
  42.          
  43.         Job job = new Job(conf,"Get Maximum Weather Information! ^_^"); 
  44.          
  45.         //设定作业的启动类/  
  46.         job.setJarByClass(MaxTemperature.class); 
  47.          
  48.         //解析输入和输出参数,分别作为作业的输入和输出,都是文件 
  49.         FileInputFormat.addInputPath(job, new Path(args[0])); 
  50.         FileOutputFormat.setOutputPath(job, new Path(args[1])); 
  51.         
  52.         //配置作业,设定Mapper类,Reducer类 
  53.         job.setMapperClass(MaxTemperatureMapper.class); 
  54.         job.setReducerClass(MaxTemperatureReducer.class); 
  55.         job.setOutputKeyClass(Text.class); 
  56.        job.setOutputValueClass(IntWritable.class); 
  57.          
  58.         System.exit(job.waitForCompletion(true)?0:1); 
  59.         
  60.          
  61.          
  62.          
  63.          
  64.  
  65.     } 
  66.  
 

我们点进去,则可以看到Map-Reduce的更多细节:

 

有关用Hadoop管理界面来分析Map-Reduce作业的更多相关文章

  1. ruby - i18n Assets 管理/翻译 UI - 2

    我正在使用i18n从头开始​​构建一个多语言网络应用程序,虽然我自己可以处理一大堆yml文件,但我说的语言(非常)有限,最终我想寻求外部帮助帮助。我想知道这里是否有人在使用UI插件/gem(与django上的django-rosetta不同)来处理多个翻译器,其中一些翻译器不愿意或无法处理存储库中的100多个文件,处理语言数据。谢谢&问候,安德拉斯(如果您已经在ruby​​onrails-talk上遇到了这个问题,我们深表歉意) 最佳答案 有一个rails3branchofthetolkgem在github上。您可以通过在Gemfi

  2. ruby-on-rails - 获取 inf-ruby 以使用 ruby​​ 版本管理器 (rvm) - 2

    我安装了ruby​​版本管理器,并将RVM安装的ruby​​实现设置为默认值,这样'哪个ruby'显示'~/.rvm/ruby-1.8.6-p383/bin/ruby'但是当我在emacs中打开inf-ruby缓冲区时,它使用安装在/usr/bin中的ruby​​。有没有办法让emacs像shell一样尊重ruby​​的路径?谢谢! 最佳答案 我创建了一个emacs扩展来将rvm集成到emacs中。如果您有兴趣,可以在这里获取:http://github.com/senny/rvm.el

  3. ruby-on-rails - 事件管理员日期过滤器日期格式自定义 - 2

    是否有简单的方法来更改默认ISO格式(yyyy-mm-dd)的ActiveAdmin日期过滤器显示格式? 最佳答案 您可以像这样为日期选择器提供额外的选项,而不是覆盖js:=f.input:my_date,as::datepicker,datepicker_options:{dateFormat:"mm/dd/yy"} 关于ruby-on-rails-事件管理员日期过滤器日期格式自定义,我们在StackOverflow上找到一个类似的问题: https://s

  4. hadoop安装之保姆级教程(二)之YARN的配置 - 2

    1.1.1 YARN的介绍 为克服Hadoop1.0中HDFS和MapReduce存在的各种问题⽽提出的,针对Hadoop1.0中的MapReduce在扩展性和多框架⽀持⽅⾯的不⾜,提出了全新的资源管理框架YARN. ApacheYARN(YetanotherResourceNegotiator的缩写)是Hadoop集群的资源管理系统,负责为计算程序提供服务器计算资源,相当于⼀个分布式的操作系统平台,⽽MapReduce等计算程序则相当于运⾏于操作系统之上的应⽤程序。 YARN被引⼊Hadoop2,最初是为了改善MapReduce的实现,但是因为具有⾜够的通⽤性,同样可以⽀持其他的分布式计算模

  5. ruby - (Ruby || Python) 窗口管理器 - 2

    我想用这两种语言中的任何一种(最好是ruby​​)制作一个窗口管理器。老实说,除了我需要加载某种X模块外,我不知道从哪里开始。因此,如果有人有线索,如果您能指出正确的方向,那就太好了。谢谢 最佳答案 XCB,X的下一代API使用XML格式定义X协议(protocol),并使用脚本生成特定语言绑定(bind)。它在概念上与SWIG类似,只是它描述的不是CAPI,而是X协议(protocol)。目前,C和Python存在绑定(bind)。理论上,Ruby端口只是编写一个从XML协议(protocol)定义语言到Ruby的翻译器的问题。生

  6. ruby-on-rails - 在所有延迟的作业之前 Hook - 2

    是否可以在所有delayed_job任务之前运行一个方法?基本上,我们试图确保每个运行delayed_job的服务器都有我们代码的最新实例,所以我们想运行一个方法来在每个作业运行之前检查它。(我们已经有了“check”方法并在别处使用它。问题只是关于如何从delayed_job中调用它。) 最佳答案 现在有一种官方方法可以通过插件来做到这一点。这篇博文通过示例清楚地描述了如何执行此操作http://www.salsify.com/blog/delayed-jobs-callbacks-and-hooks-in-rails(本文中描述

  7. ruby-on-rails - 事件管理员和自定义方法 - 2

    这是我在ActiveAdmin中的自定义页面ActiveAdmin.register_page"Settings"doaction_itemdolink_to('Importprojects','settings/importprojects')endcontentdopara"Text"endcontrollerdodefimportprojectssystem"rakedataspider:import_projects_ninja"para"OK"endendend我想做的是,当我单击“导入项目”按钮时,我想在Controller中执行rake任务。但是我无法访问该方法。可能是什

  8. ruby - 在 ruby​​ 中使用 .try 函数和 .map 函数 - 2

    我需要从json记录中获取一些值并像下面这样提取curr_json_doc['title']['genre'].map{|s|s['name']}.join(',')但对于某些记录,curr_json_doc['title']['genre']可以为空。所以我想对map和join()使用try函数。我试过如下curr_json_doc['title']['genre'].try(:map,{|s|s['name']}).try(:join,(','))但是没用。 最佳答案 你没有正确传递block。block被传递给参数括号外的方法

  9. ruby-on-rails - (Ruby,Rails) 基于角色的身份验证和用户管理...? - 2

    我正在寻找用于Rails的优质管理插件。似乎大多数现有的插件/gem(例如“restful_authentication”、“acts_as_authenticated”)都围绕着self注册等展开。但是,我正在寻找一种功能齐全的基于管理/管理角色的解决方案——但不是简单地附加到另一个非基于角色的解决方案。如果我找不到,我想我会自己动手......只是不想重新发明轮子。 最佳答案 RyanBates最近做了两个关于授权的railscast(注意身份验证和授权之间的区别;身份验证检查用户是否如她所说的那样,授权检查用户是否有权访问资源

  10. ruby - 不能将 `each` 的所有或大多数情况替换为 `map` 吗? - 2

    Enumerable#each和Enumerable#map的区别在于返回的是接收者还是映射后的结果。回到接收者是微不足道的,你通常不需要在each之后继续一个方法链,比如each{...}.another_method(我可能没见过这样的案例。即使你想回到接收者那里,你也可以通过tap来实现)。所以我认为所有或者大部分使用Enumerable#each的情况都可以用Enumerable#map代替。我错了吗?如果我是对的,each的目的是什么?map是否比each慢?编辑:我知道当您对返回值不感兴趣时​​使用each是一种常见的做法。我对这种做法是否存在不感兴趣,但感兴趣的是,除了从

随机推荐