你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
了解将 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 社区支持获取 Azure 专家的解答。 
- 联系 @AzureSupport,这是用于改进客户体验的官方 Microsoft Azure 帐户。 它可以将 Azure 社区成员连接到适当的资源,为他们提供解答、支持和专家建议。 
- 如果需要更多帮助,可以从 Azure 门户提交支持请求。 从菜单栏中选择“支持”,或打开“帮助 + 支持”中心。 有关更多详细信息,请参阅如何创建 Azure 支持请求。 Microsoft Azure 订阅中带有对订阅管理和计费支持的访问权限,技术支持通过 Azure 支持计划之一提供。