码迷,mamicode.com
首页 > 其他好文 > 详细

《Hadoop权威》学习笔记五:MapReduce应用程序

时间:2015-05-11 17:37:18      阅读:117      评论:0      收藏:0      [点我收藏+]

标签:

一、API的配置---Configuration类

  • API的配置:Hadoop提供了专门的API对资源进行配置,Configuration类的实例(在org.apache.hadoop.conf包)包括配置属性及其值的集合。每个属性是一个String类型,值的类型可能是以以下的多种类型:包括了Java基本类型(如boolean、int、long、float)和其他一些有用的类型。配置从给定资源中读取它们的属性,通常是名-值对构成的结构简单的XML文件
     1 <?xml version="1.0"?>
     2 <configuration>
     3     <property>
     4         <name>color</name>
     5         <value>yellow</value>
     6         <description>Color</description>
     7     </property>
     8 
     9     <property>
    10         <name>size</name>
    11         <value>10</value>
    12         <description>Size</description>
    13     </property>
    14 
    15     <property>
    16         <name>weight</name>
    17         <value>heavy</value>
    18         <final>true</final>
    19         <description>Weight</description>
    20     </property>
    21 
    22     <property>
    23         <name>size-weigth</name>
    24         <value>${size},${weight}</value>
    25         <description>Size and weight</description>
    26     </property>
    27 </configuration>
    1 Configuration conf = new Configuration();
    2 conf.addResource("configuration-1.xml");
    3 System.out.println(conf.get("color"));
    4 System.out.println(conf.getInt("size",0));
    5 System.out.println(conf.get("breadth","wide"));

  • 合并配置文件:在Hadoop中,core-default.xml文件定义系统的默认属性,而core-site.xml定义特定重写的属性。如果同时定义多个配置文件,那么后来加入的属性将会覆盖之前定义的属性,但是如果final被标记为true的时候,该属性将无法被覆盖,系统会报配置出错。
  • 扩展属性
    1. 配置的属性可以由其他属性或者系统属性来定义,如${size},${weigth}
    2. 系统属性定义属性,即System.setProperty("size",14),并且优先级高于文件资源所定义的属性
    3. 在命令行中使用JVM参数-Dproperty=value来重写属性

二、配置开发环境

  • conf选项:可以方便地切换配置文件
  • GenericOptionsParser,Tool和ToolRunner:GenericOptionsParser一个解释普通Hadoop命令行选项的类,可以根据应用需要在Configuration对象中进行设置,不过通常不这样使用,而是使用ToolRunnner,因为其实现了Tool接口,运行比较方便。
    1 public interface Tool extends Configurabel{
    2     int run(String [] args) throws Exception;
    3 }
     1 public class ConfigurationPrinter extends Configured implements Tool {
     2     static{
     3       Configuration.addDefaultResource("hdfs-default.xml");
     4       Configuration.addDefaultResource("hdfs-site.xml");
     5       Configuration.addDefaultResource("mapred-default.xml");
     6       Configuration.addDefaultResource("mapred-site.xml");
     7     }
     8 
     9     @Override
    10     public int run(String[] args) throw Exception{
    11          Configuration conf = getconf();
    12          for(Entry<String,String> entry:conf){
    13              System.out.printf("%s=%s\n",entry.getKey(),entry.getValue());
    14          }
    15          return 0;
    16     }
    17 
    18     public static void main(String[] args) throw Exception {
    19          int exitcode = ToolRunner.run(new ConfigurationPrinter,args);
    20          System.exit(exitCode);
    21     }
    22 
    23 
    24 }

三、编写单元测试

四、本地运行测试数据

五、在集群上运行

六、作业调优

七、MapReduce的工作流

《Hadoop权威》学习笔记五:MapReduce应用程序

标签:

原文地址:http://www.cnblogs.com/ChenKeng/p/4494869.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!