yarn日志搜索

命令:

yarn logs -applicationId application_1528275740373_0604 | grep -10 '###'

 

日志过大时添加参数:

yarn logs -applicationId application_1540869695351_0146  --size_limit_mb -1 

参考文章:

https://www.jianshu.com/p/6f3b901bd520

<think>好的,用户现在问的是如何查看YARN日志。之前他们遇到了Hive执行MapReduce任务返回错误码2的问题,我之前已经给出了一些排查步骤,其中包括查看YARN日志。现在用户可能按照之前的指导,想更详细地了解如何具体操作查看这些日志,所以需要详细解答。 首先,我需要确定用户的使用场景。他们可能是在处理Hive任务时遇到了问题,需要查看YARN日志来诊断错误原因。用户可能是数据分析师或者开发人员,对Hadoop生态有一定了解,但可能不熟悉具体的日志查看命令和步骤。 接下来,用户的真实需求是获取查看YARN日志的方法。他们可能需要具体的命令示例和步骤,包括如何找到Application ID,如何通过命令行或Web UI查看日志,以及如何处理常见问题比如日志被清理的情况。此外,用户可能还希望了解如何调整日志级别或配置日志聚合,以便未来更方便地排查问题。 需要考虑到用户可能对YARN的架构不太熟悉,所以解释的时候要简明扼要。例如,Application Master和NodeManager的区别,以及日志聚合的作用。同时,提供不同的方法,比如命令行和Web界面,满足不同用户的操作习惯。 还要注意用户可能遇到的权限问题,比如是否有权限访问YARN的Web界面或执行yarn logs命令。此外,如果日志已经被聚合到HDFS,可能需要指导用户如何从HDFS中提取日志文件。对于日志被清理的情况,给出解决方案,比如调整保留时间或手动触发聚合。 另外,用户可能不知道如何调整日志级别,这时候需要给出具体的配置参数和示例,帮助他们启用调试日志,以便更详细地排查问题。 最后,总结关键点,确保用户能够抓住重点,按照步骤操作。同时提醒常见问题,帮助他们避免常见陷阱,比如权限不足或日志未聚合的情况。</think>--- ### 一、核心操作流程 #### 1. 获取YARN Application ID - **从Hive日志中提取** 在Hive客户端执行查询后,错误日志会直接显示`Application ID`,格式为: `application_<timestamp>_<序列号>` ```bash # 在Hive日志搜索(默认路径:/tmp/${username}/hive.log) grep "Application ID" /tmp/your_username/hive.log ``` - **通过YARN Web UI查看** 访问YARN ResourceManager Web界面(默认端口:8088): `http://<resourcemanager-host>:8088/cluster/apps` 按时间排序找到对应的任务。 #### 2. 查看日志的三种方法 ##### 方法1:命令行直接查看 ```bash # 标准查询(需开启日志聚合功能) yarn logs -applicationId application_XXXX_XX # 强制查看未聚合的日志(需SSH到对应节点) yarn logs -applicationId application_XXXX_XX -am ALL -log_files stdout ``` ##### 方法2:通过HDFS查看聚合日志 ```bash # 定位HDFS聚合日志路径(需先启用日志聚合) hdfs dfs -ls /tmp/logs/<user>/logs/application_XXXX_XX # 下载全部日志到本地 hdfs dfs -get /tmp/logs/<user>/logs/application_XXXX_XX /local/path ``` ##### 方法3:Web界面查看 1. 访问YARN ResourceManager Web UI:`http://<rm-host>:8088` 2. 找到对应Application ID,点击`Logs`按钮 3. 直接查看`stdout/stderr`或下载完整日志--- ### 二、关键配置验证 #### 1. 确认日志聚合已启用 检查`yarn-site.xml`配置: ```xml <property> <name>yarn.log-aggregation-enable</name> <value>true</value> <!-- 必须为true --> </property> <property> <name>yarn.nodemanager.remote-app-log-dir</name> <value>/tmp/logs</value> <!-- 聚合日志存储路径 --> </property> ``` #### 2. 日志保留时间设置 ```xml <!--yarn-site.xml中定义保留时长(默认7天) --> <property> <name>yarn.log-aggregation.retain-seconds</name> <value>604800</value> </property> ``` --- ### 三、典型问题解决方案 #### 场景1:`Log aggregation has not completed` ```log ERROR: Log aggregation has not completed or is not enabled. ``` - **原因**:日志尚未完成聚合(任务结束到聚合完成有延迟) - **解决**: ```bash # 等待1-5分钟后重试 yarn logs -applicationId application_XXXX_XX # 或直接访问对应NodeManager节点日志 ssh nodemanager-host cat /var/log/hadoop-yarn/containers/application_XXXX_XX/*/stdout ``` #### 场景2:`No logs available` ```log ERROR: The logs are not available for application_XXXX_XX ``` - **原因**:日志已被清理或未启用聚合 - **解决**: ```bash # 检查HDFS聚合目录是否存在 hdfs dfs -ls /tmp/logs/<user>/logs/application_XXXX_XX # 如果目录不存在,手动触发日志转储(需管理员权限) yarn rmadmin -refreshNodes ``` --- ### 四、调试技巧 #### 1. 重点查看位置 | 日志文件 | 关键信息定位 | |----------------|----------------------------------| | **stdout** | MapReduce计数器、任务进度 | | **stderr** | Java堆栈跟踪、系统错误代码 | | **syslog** | 容器启动失败原因、资源分配问题 | #### 2. 过滤关键错误 ```bash # 查找OOM错误 yarn logs -applicationId app_XXXX | grep -i "outofmemory" # 查找容器退出码 yarn logs -applicationId app_XXXX | grep "Exit code" ``` --- ### 五、日志分析示例 ```log Container: container_XXXX_01_000002 on nodehost_123 LogType:stderr LogLength:1582 Log Contents: Error: Java heap space Dump of the process-state... ``` - **诊断**:Map/Reduce任务内存不足 - **解决**:调整内存配置 ```sql SET mapreduce.map.memory.mb=4096; SET mapreduce.reduce.memory.mb=8192; ``` --- 通过以上方法,可以快速定位YARN任务失败的根本原因。建议优先使用`yarn logs`命令配合Web UI交叉验证,同时注意检查日志聚合功能是否正常启用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值