1.各种id释义

  1. 1jobId
  2. 描述:出自MapReduce,对作业的唯一标识。
  3. 格式:job_${clusterStartTime}_${jobid}
  4. 例子:job_1498552288473_2742
  5. 2applicationId
  6. 描述:在yarn中对作业的唯一标识。
  7. 格式:application_${clusterStartTime}_${applicationId}
  8. 例子:application_1498552288473_2742
  9. 3taskId
  10. 描述:作业中的任务的唯一标识
  11. 格式:task_${clusterStartTime}_${applicationId}_[m|r]_${taskId}
  12. 例子:task_1498552288473_2742_m_000000task_1498552288473_2742_r_000000
  13. 4attempId
  14. 描述:任务尝试执行的一次id
  15. 格式:attempt_${clusterStartTime}_${applicationId}_[m|r]_${taskId}_${attempId}
  16. 例子:attempt_1498552288473_2742_m_000000_0
  17. 5appAttempId
  18. 描述:ApplicationMaster的尝试执行的一次id
  19. 格式:appattempt_${clusterStartTime}_${applicationId}_${appAttempId}
  20. 例子:appattempt_1498552288473_2742_000001
  21. 6containerId
  22. 描述:containerid
  23. 格式:container_e*epoch*_${clusterStartTime}_${applicationId}_${appAttempId}_${containerId}
  24. 例子:container_e20_1498552288473_2742_01_000032container_1498552288473_2742_01_000032

2. 日志分类

  • 服务类日志
    • ResourceManager hadoop.log.dir, 默认为/var/log/hadoop-yarn
    • NodeManager hadoop.log.dir,默认为/var/log/hadoop-yarn
    • 存放在本地,可以查看服务运行过程中的异常,可以在CDH中配置最大日志大小及最大日志文件备份,来滚动删除
  • 作业日志
    • container日志,包含了作业运行的情况,由于一次作业可能包含多个container,在不同的节点上运行,日志也会分布在不同的节点上,不利于查看日志。所以可以开启日志聚合功能(默认关闭),当作业运行完毕后,上传至hdfs中,随即删除本地日志。
    • 日志上传前由nodemanager管理,上传后由jobhistory管理

      3. 日志相关参数

      ```bash

      是否开启日志聚合功能

      yarn.log-aggregation-enable

hdfs上的路径,前缀目录:/tmp/logs/

yarn.nodemanager.remote-app-log-dir

后缀目录:logs

yarn.nodemanager.remote-app-log-dir-suffix

所以实际路径为 /tmp/logs/${user}/logs

hdfs上的日志保留多久

yarn.log-aggregation.retain-seconds

多长时间检查一次日志,并将满足条件的删除

yarn.log-aggregation.retain-check-interval-seconds

每隔一段时间进行日志的聚合,默认为-1,任务执行完成后立刻聚合

yarn.nodemanager.log-aggregation.roll-monitoring-interval-seconds

application执行结束后延迟多久删除本地文件及日志

yarn.nodemanager.delete.debug-delay-sec ```

4. 日志聚合异常

问题描述
开启日志聚合后,日志没有写入hdfs中,本地日志堆积,导致磁盘空间不足,报警
解决方法
查看nodemanager日志,发现由于权限问题导致日志写入hdfs失败,用户是hive,hdfs上/tmp/logs/hive/logs的权限是 mapred :hadoop
更改为hive :hadoop hdfs dfs -chown hive:hadoop /tmp/logs/hive/logs
问题解决,在yarn jobhistory web界面可以看到日志

5. 参考文章

https://blog.csdn.net/peidezhi/article/details/105638705
https://www.jianshu.com/p/83fcf7478dd7
https://cloud.tencent.com/developer/article/1585727