你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
使用 Azure HDInsight 对 Apache Hadoop YARN 进行故障排除
了解处理 Apache Ambari 中的 Apache Hadoop YARN 有效负载时的最常见问题及其解决方法。
如何在群集上创建新的 YARN 队列?
解决步骤
在 Ambari 中使用以下步骤可以创建新的 YARN 队列,并在所有队列之间均衡容量分配。
在此示例中,两个现有队列(default 和 thriftsvr)的容量都从 50 % 更改为 25%,因此,新队列 (Spark) 具有 50% 的容量。
队列 | 容量 | 最大容量 |
---|---|---|
default | 25% | 50% |
thrftsvr | 25% | 50% |
Spark | 50% | 50% |
依次选择“Abari 视图”图标和网格模式。 接下来,选择“YARN 队列管理器”。
选择 default 队列。
将 default 队列的容量从 50% 更改为 25%。 将 thriftsvr 队列的容量更改为 25%。
若要创建新队列,请选择“添加队列”。
为新队列命名
将容量值保留为 50%,并选择“操作”按钮。
选择“保存并刷新队列”。
YARN 计划程序 UI 中会立即显示这些更改。
延伸阅读
如何从群集下载 YARN 日志?
解决步骤
使用安全外壳 (SSH) 客户端连接到 HDInsight 群集。 有关详细信息,请参阅延伸阅读。
若要列出当前正在运行的 YARN 应用程序的所有应用程序 ID,请运行以下命令:
yarn top
ID 会列在 APPLICATIONID 列中。 可从 APPLICATIONID 列下载日志。
YARN top - 18:00:07, up 19d, 0:14, 0 active users, queue(s): root NodeManager(s): 4 total, 4 active, 0 unhealthy, 0 decommissioned, 0 lost, 0 rebooted Queue(s) Applications: 2 running, 10 submitted, 0 pending, 8 completed, 0 killed, 0 failed Queue(s) Mem(GB): 97 available, 3 allocated, 0 pending, 0 reserved Queue(s) VCores: 58 available, 2 allocated, 0 pending, 0 reserved Queue(s) Containers: 2 allocated, 0 pending, 0 reserved APPLICATIONID USER TYPE QUEUE #CONT #RCONT VCORES RVCORES MEM RMEM VCORESECS MEMSECS %PROGR TIME NAME application_1490377567345_0007 hive spark thriftsvr 1 0 1 0 1G 0G 1628407 2442611 10.00 18:20:20 Thrift JDBC/ODBC Server application_1490377567345_0006 hive spark thriftsvr 1 0 1 0 1G 0G 1628430 2442645 10.00 18:20:20 Thrift JDBC/ODBC Server
若要下载所有应用程序主机的 YARN 容器日志,请使用以下命令:
yarn logs -applicationIdn logs -applicationId <application_id> -am ALL > amlogs.txt
此命令创建名为 amlogs.txt 的日志文件。
若只要下载最新应用程序主机的 YARN 容器日志,请使用以下命令:
yarn logs -applicationIdn logs -applicationId <application_id> -am -1 > latestamlogs.txt
此命令创建名为 latestamlogs.txt 的日志文件。
若要下载前两个应用程序主机的 YARN 容器日志,请使用以下命令:
yarn logs -applicationIdn logs -applicationId <application_id> -am 1,2 > first2amlogs.txt
此命令创建名为 first2amlogs.txt 的日志文件。
若要下载所有 YARN 容器日志,请使用以下命令:
yarn logs -applicationIdn logs -applicationId <application_id> > logs.txt
此命令创建名为 logs.txt 的日志文件。
若要下载特定容器的 YARN 容器日志,请使用以下命令:
yarn logs -applicationIdn logs -applicationId <application_id> -containerId <container_id> > containerlogs.txt
此命令创建名为 containerlogs.txt 的日志文件。
附加阅读材料
如何检查 Yarn 应用程序诊断信息?
Yarn UI 中的诊断是一项功能,支持你查看在 Yarn 上运行的应用程序的状态和日志。 诊断有助于排查应用程序的问题并对其进行调试,以及监视其性能和资源使用情况。
要查看特定应用程序的诊断,可以在应用程序列表中单击应用程序 ID。 在应用程序详细信息页上,还可以查看为运行应用程序而进行的所有尝试的列表。 可以单击任何尝试查看更多详细信息,例如尝试 ID、容器 ID、节点 ID、开始时间、完成时间和诊断
如何对 YARN 常见问题进行故障排除?
Yarn UI 未加载
如果 YARN UI 无法加载或无法访问,并且返回“HTTP 错误 502.3 - 网关错误”,很有可能指示资源管理器服务运行不正常。 若要减少此错误,请执行以下步骤:
- 转到“Ambari UI”>“YARN”>“SUMMARY”,检查是否只有活动资源管理器处于“已启动”状态。 如果不是,请尝试通过重启运行不正常或已停止的资源管理器来缓解问题。
- 如果步骤 1 未解决问题,请通过 SSH 连接活动的资源管理器头节点并使用
jstat -gcutil <Resource Manager pid> 1000 100
检查垃圾回收状态。 如果发现 FGCT 在几秒钟内大幅增加,表明资源管理器正忙于处理完整垃圾回收,而无法处理其他请求。 - 转到“Ambari UI”>“YARN”>“CONFIGS”>“高级”,然后增加
Resource Manager java heap size
。 - 在 Ambari UI 中重启所需的服务。
两个资源管理器都处于待机模式
- 检查资源管理器日志,查看是否存在类似错误。
Service RMActiveServices failed in state STARTED; cause: org.apache.hadoop.service.ServiceStateException: com.google.protobuf.InvalidProtocolBufferException: Could not obtain block: BP-452067264-10.0.0.16-1608006815288:blk_1074235266_494491 file=/yarn/node-labels/nodelabel.mirror
如果存在错误,请检查某些文件是否正在复制中,或者 HDFS 中是否存在缺失块。 可以运行
hdfs fsck hdfs://mycluster/
运行
hdfs fsck hdfs://mycluster/ -delete
以强制清理 HDFS,并消除 RM 待机问题。 或者,在一个头节点上运行 PatchYarnNodeLabel 以修补群集。
后续步骤
如果你的问题未在本文中列出,或者无法解决问题,请访问以下渠道之一获取更多支持:
通过 Azure 社区支持获取 Azure 专家的解答。
联系 @AzureSupport,这是用于改进客户体验的官方 Microsoft Azure 帐户。 它可以将 Azure 社区成员连接到适当的资源,为他们提供解答、支持和专家建议。
如果需要更多帮助,可以从 Azure 门户提交支持请求。 从菜单栏中选择“支持”,或打开“帮助 + 支持”中心。 有关更多详细信息,请参阅如何创建 Azure 支持请求。 Microsoft Azure 订阅中带有对订阅管理和计费支持的访问权限,技术支持通过 Azure 支持计划之一提供。