常用命令
#列出所有作业
hadoop job -list
#查看作业状态
hadoop job -status <job-id>
#查看作业日志
hadoop job -logs <job-id>
#杀死作业
hadoop job -kill <job-id>
#提交 MapReduce 作业
hadoop jar <jar-file> <main-class> <input-path> <output-path>
配置MapReduce任务日志归档和清理机制
执行一个MapReduce应用会产生两种类型日志文件:作业日志和任务日志。
- 作业日志由MRApplicationMaster产生,详细记录了作业启动时间、运行时间,每个任务启动时间、运行时间、Counter值等信息。此日志内容被HistoryServer解析以后用于查看作业执行的详细信息。
- 任务日志记录了每个运行在Container中的任务输出的日志信息。默认情况下,任务日志只会存放在各NodeManager的本地磁盘上。打开日志聚合功能后,NodeManager会在作业运行完成后将本地的任务日志进行合并,写入到HDFS中。
由于MapReduce的作业日志和任务日志(聚合功能开启的情况下)都保存在HDFS上。对于计算任务量大的集群,如果不进行合理的配置对日志文件进行定期归档和删除,日志文件将占用HDFS大量内存空间,增加集群负载。
作业日志参数
**操作:**TM-YARN-配置管理-mapred-site.xml
| 参数 | 描述 | 默认值 |
|---|---|---|
| mapreduce.jobhistory.cleaner.enable | 是否开启作业日志文件清理功能。 | true |
| mapreduce.jobhistory.cleaner.interval-ms | 作业日志文件清理启动周期。只有保留时间比“mapreduce.jobhistory.max-age-ms”更长的日志文件才会被清除。 | 604800000(7 天) |
| mapreduce.jobhistory.max-age-ms | 比此项设置的毫秒数保留时间更长的作业日志文件将被清理。 | 604800000(7 天) |
任务日志参数
| 参数 | 描述 | 默认值 |
|---|---|---|
| yarn.log-aggregation-enable | 是否启用日志聚合。日志聚合收集每个容器的日志,并在应用程序完成后将这些日志移动到文件系统(例如 HDFS)。 | true |
| yarn.nodemanager.remote-app-log-dir | 当应用程序运行结束后,日志被转移到的HDFS目录(启用日志聚集功能时有效) | /emr/logs |
| yarn.log-aggregation.retain-seconds | 设置MapReduce任务日志在HDFS上的保留时间。设置为“-1”时日志文件永久保存。 | 604800(7 天) |
| yarn.log-aggregation.retain-check-interval-seconds | 设置MapReduce任务日志清理任务的检查周期(秒)。设置为“-1”时检查周期为日志保留时间的十分之一。 | 604800(7 天) |