现场运维支撑(2)

mysql问题

  1. mysql datetime 不支持值0000-00-00 00:00:00

    装载hive数据到mysql数据中报错,无法插入0000...date值,就是由于
    mysql不支持0000为datetime的值.

    不要在table中或在数据中将datetime的默认值设置成0000..的形式

  2. mysql query默认会fetch所有的数据到内存中

    生产环境数据量非常大的时候,会导致OutOfMemoryError.

    解决方法为设置mysql每次获取一个block的数据而不是所有。

    stmt.setFetchSize(num);
    

    参考

hadoop作业查错

  1. 根据作业名或id找到对应的作业

    打开yarn RM对应的web地址,根据作业名搜索对应作业.

    作业在running状态时可以在RM web查看job状态,mr job执行结束日志会被收集到jobhistory server.

  2. 查看作业的具体配置

    在jobhistory界面可查看job的具体配置。点击左侧边栏job下的configuration链接,
    可查看job具体的参数配置,包括hadoop相关配置参数及用户自己配置的一些参数。

    其中source chain一栏指出了参数的来源,是来自于配置文件还是在程序中设置的(programatically)。

  3. 查看counters

    有job级别的counters,也有task级别的counters。 counters被分为多个group,
    有默认的统计group,也可看到用户自定义的group.

    通过查看counters的统计情况,可以确认读入写出的数据量,读入写出的记录数, task的执行时间等,可以帮助我们
    从宏观上判断作业的执行结果是否合理.

  4. 查看日志的时候一定要view full log

    开始展示的部分日志可能不是真实错误,一定要review full log查看错误.

关于日志查看的非常好的文章
https://discuss.pivotal.io/hc/en-us/articles/201925118-How-to-Find-and-Review-Logs-for-Yarn-MapReduce-Jobs

hadoop1 to hadoop2 drawbacks and improve
http://stackoverflow.com/questions/12992743/what-additional-benefit-does-yarn-bring-to-the-existing-map-reduce/35479769#35479769
四个方面分别是:scalable, avalability, resource utilization, multiple job types support

你可能感兴趣的:(现场运维支撑(2))