了解和解决从 HDInsight 上的 WebHCat 收到的错误

了解将 WebHCat 用于 HDInsight 时接收的错误以及如何解决错误。 WebHCat 由 Azure PowerShell 和 Data Lake Tools for Visual Studio 等客户端工具在内部使用。

什么是 WebHCat

WebHCat 是适用于 HCatalog(一个针对 Apache Hadoop 的表和存储管理层)的 REST API。 WebHCat 默认情况下在 HDInsight 群集上处于启用状态,可供各种工具在执行提交作业、获取作业状态等操作时使用,无需登录到群集中。

修改配置

本文档中列出的几大错误之所以发生,是因为超出了配置的最大值。 当解决步骤提到可以更改某个值时,请使用 Apache Ambari(Web 或 REST API)修改该值。 有关详细信息,请参阅使用 Apache Ambari 管理 HDInsight

默认配置

如果超过以下默认值,则可能降低 WebHCat 性能或导致错误:

设置 作用 默认值
[yarn.scheduler.capacity.maximum-applications][maximum-applications] 可以同时处于活动状态(挂起或运行)的最大作业数 10,000
templeton.exec.max-procs 可以同时处理的最大请求数 20
[mapreduce.jobhistory.max-age-ms][max-age-ms] 作业历史记录保留的天数 七天

请求过多

HTTP 状态代码:429

原因 解决方法
已超过 WebHCat 每分钟能够处理的最大并发请求数(默认值为 20) 减少工作负荷以确保提交的数量没有超出最大并发请求数,或者通过修改 templeton.exec.max-procs 来提高并发请求限制。 有关详细信息,请参阅修改配置

服务器不可用

HTTP 状态代码:503

原因 解决方法
此状态代码通常发生在群集的主要和辅助 HeadNode 之间进行故障转移时 等待两分钟,并重试该操作

请求内容错误: 找不到作业

HTTP 状态代码:400

原因 解决方法
作业详细信息已被作业历史记录清除器清除 作业历史记录的默认保留期为七天。 通过修改 mapreduce.jobhistory.max-age-ms 可更改默认保留期。 有关详细信息,请参阅修改配置
作业由于故障转移而终止 重试提交作业,重试时间最多两分钟
使用了无效的作业 ID 检查作业 ID 是否正确

网关错误

HTTP 状态代码:502

原因 解决方法
WebHCat 进程内发生内部垃圾回收 等待垃圾回收完成或重新启动 WebHCat 服务
在等待资源管理器服务的响应时超时。 当活动应用程序的数量达到配置的最大值(默认为 10,000)时,可能会发生此错误 等待当前正在运行的作业完成,或者通过修改 yarn.scheduler.capacity.maximum-applications 来提高并发作业限制。 有关详细信息,请参阅修改配置部分。
Fields 设置为 * 时,尝试通过 GET /jobs 调用来检索所有作业 不要检索全部作业详细信息。 而是改用 jobid 来仅检索作业 ID 大于特定作业 ID 的作业的详细信息。 或者,不要使用 Fields
在 HeadNode 故障转移期间 WebHCat 服务关闭 等待两分钟,并重试该操作
通过 WebHCat 提交的作业有超过 500 个处于挂起状态 等到当前挂起的作业完成再提交更多作业

后续步骤

如果你的问题未在本文中列出,或者无法解决问题,请访问以下渠道之一获取更多支持:

  • 如果需要更多帮助,可以从 Azure 门户提交支持请求。 从菜单栏中选择“支持” ,或打开“帮助 + 支持” 中心。