zoukankan      html  css  js  c++  java
  • 读书笔记Hadoop实战5

     注:之前写过MapReduce程序,所以对Hadoop和MapReduce编程有一些了解,现在正在阅读《Hadoop实战》一书,这里主要是记下对自己有用的一些点,完全不能覆盖书中的全部要点。想要学习MapReduce入门的同学请移尊步,勿浪费时间。

    这里是我觉得不错的几个入门文章:

    http://www.cnblogs.com/forfuture1978/category/300670.html

    http://blog.csdn.net/aidayei/article/details/6580277

    http://www.cnblogs.com/mdyang/category/307547.html

    http://www.cnblogs.com/wycg1984/category/238035.html

     -----------------------------------------------------------敌我分割线------------------------------------------------------------

     

    回归测试:修改了旧代码之后,重新进行测试,以确保没有新的错误引入。对比改动前后的两个程序的输出,通过差异看逻辑对不对。对比过程可以使用diff工具(命令)。

    记得大一上Java课的时候,那个老师讲过数据类型之后说,如果不好选择,那么整形通常选int,浮点数通常选double,这里书上说,优先使用long(longwritable…)类型,因为hadoop面临的环境是大规模数据处理。这个还有点不习惯。

    hadoop在伪分布模式下,Java程序中的System.out和System.err输出的内容会被保存到文件stdout和stderr中(HADOOP_DIR/logs/userlogs/)。这些信息可以用来调试。另外可以再程序中使用Report类的setStatus()方法(map和reduce函数都有一个Report参数)传送实时状态信息。

    使用计数器:

    程序员可以在作业中插入计数器来分析其整体运行。在程序中定义不同的计数器,分别累计特定时间的发生次数。对于来自同一个作业的所有任务的相同计数器,Hadoop会自动求和。

    程序示例:

    static enum CounterType { EVENT_A, EVENT_B};
    
    public void map(K k, V v,OutputCollector<T1,T2> output,Report r){
        if(testValueA(v)){
            r.incrCounter(CounterType.EVENT_A, 1);
        }
        if(testValueB(v)){
            r.incrCounter(CounterType.EVENT_B, 1);
        }
    }

     

    典型应用是用来跟踪不同的输入记录类型,特别是坏的记录。

    跳过坏记录:

    如果数据中有坏记录,而你又不想因为这几个坏记录影响作业的执行,可以设置跳过坏记录。skipping机制在Hadoop 0.19中已经被支持,默认关闭该特性。如果打开这一特性,Hadoop会在任务失效两次之后进入skipping模式,并将被跳过的坏记录记录在HDFS中以供程序员后续分析。skipping的设置由 SkipBadRecord负责。

    IsolationRunner:

    IsolationRunner工具允许程序员隔离失败的任务,并在同一节点上用完全一样的输入数据重新运行它,还可以添加一个调试器,收集运行信息。

    猜测执行:

    Hadoop会注意到执行的慢的任务,并安排在另一个节点上并行执行相同的任务。这些并行执行的任务只要有一个完成就可以了(其他的被kill)。

     

  • 相关阅读:
    RedisPlugin
    微信、支付宝授权与支付
    在手机上预览h5项目
    localStorage
    fluter中json的处理
    flutter路由
    一个类实现多个接口
    抽象类、接口
    dart中的类
    方法
  • 原文地址:https://www.cnblogs.com/apprentice89/p/2674038.html
Copyright © 2011-2022 走看看