使用 HCatalog REST API(WebHCat)

Version information

HCatalog 项目毕业于 Apache 孵化器,并于 2013 年 3 月 26 日与 Hive 项目合并。
Hive 版本 0.11.0 是第一个包含 HCatalog 及其 REST API WebHCat 的版本。

WebHCat 简介

本文档介绍了 HCatalog REST API * WebHCat ,以前称为 Templeton *。如果要查找 Hive GUI 而不是 API,请参阅Hive Web 界面(在 2.2.0 版中已删除)。

如下图所示,开发人员发出 HTTP 请求以从应用程序内部访问Hadoop MapReduce(或YARN),PigHiveHCatalog DDL。此 API 使用的数据和代码保存在HDFS中。 HCatalog DDL 命令在需要时直接执行。 WebHCat(Templeton)服务器将 MapReduce,Pig 和 Hive 作业放在队列中,并且可以根据需要监视它们的进度或停止它们。开发人员在 HDFS 中指定应放置 Pig,Hive 和 MapReduce 结果的位置。

WebHCat or Templeton?

为了向后兼容,在某些情况下,WebHCat 仍使用原始名称 Templeton。请参阅下面的#Project Name

URL Format

使用以下 URL 格式访问 HCatalog 的 REST 资源:

http:// 您的服务器 /templeton/v1/ 资源

其中,“ * yourserver *”替换为服务器名称,而“ * resource *”替换为 HCatalog 资源名称。

例如,要检查服务器是否正在运行,可以访问以下 URL:

ht tp://www.myserver.com/templeton/v1/status

有关各个 REST 资源的信息,请参见参考:WebHCat 资源

Security

当前版本支持两种类型的安全性:

  • 默认安全性(无需其他身份验证)

  • 通过Kerberos进行身份验证

Standard Parameters

每个 REST 资源都可以接受以下参数以帮助进行身份验证:

  • user.name:用户名(字符串)。仅在使用默认安全性时有效。

  • SPNEGO 凭据:使用 Kerberos 身份验证运行时。

Specifying user.name

user.name 参数是 POST 调用的 POST 参数的一部分,而其他调用是 URL 的一部分。

例如,要在 GET:table 命令中指定 user.name:

% curl -s 'http://localhost:50111/templeton/v1/ddl/database/default/table/my_table?user.name=ctdean'

并在 POST:table 命令中指定 user.name:

% curl -s -d user.name=ctdean \
       -d rename=test_table_2 \
       'http://localhost:50111/templeton/v1/ddl/database/default/table/test_table'

安全错误响应

如果在需要时未提供 user.name 参数,则将返回以下错误:

{
  "error": "No user found.  Missing user.name parameter."
}

WebHDFS 和代码推送

HCatalog 的 REST 资源使用的数据和代码必须首先放置在 Hadoop 中。当需要将文件放入 HDFS 时,您可以使用最方便的方法。我们建议使用 WebHDFS,因为它提供了一个 REST 接口,用于将文件移入和移出 HDFS。

错误代码和响应

服务器返回以下 HTTP 状态代码。

  • 200 OK: 成功!

  • 400 错误的请求: 该请求无效。

  • 401 未经授权: 凭证丢失或不正确。

  • 404 未找到: 所请求的 URI 无效或所请求的资源不存在。

  • 500 Internal Server Error: 我们收到了意外的结果。

  • 503 忙,请重试: 服务器忙。

服务器直接返回的其他数据以 JSON 格式返回。 JSON 响应的大小上限为 1MB。超过此限制的响应必须使用提供的选项存储到 HDFS 中,而不是直接返回。如果 HCatalog DDL 命令返回的结果可能大于 1MB,则建议执行相应的 Hive 请求。

Log Files

服务器在运行时会创建三个日志文件:

  • templeton.log 是 log4j 日志。这是应用程序写入的主日志。

  • templeton-console.log 是启动服务器时 Java 写到 stdout 的内容。它是少量数据,类似于“ hcat.out”。

  • tempelton-console-error.log 是 Java 写入 stderr 的内容,类似于“ hcat.err”。

在 tempelton-log4j.properties 文件中,可以使用变量 Templeton.log.dir 设置这些日志的位置。在服务器启动脚本中设置了此 log4j.properties 文件。

Hive 日志文件在Getting StartedHive Logging部分中描述。

Project Name

将 REST API 添加到 HCatalog 的原始工作称为 Templeton。为了向后兼容,该名称仍出现在 URL,日志文件名称等中。Templeton 名称取自 E. B. White 屡获殊荣的 child 小说《夏洛特网络》中的角色。小说的主角是一头名叫威尔伯的猪。邓普顿(Templeton)是一只老鼠,他在旋转网时按照夏洛特的要求,通过办事和交货来帮助威尔伯。

Navigation Links

Next: WebHCat Installation

一般:WebHCat ManualHCatalog ManualHive Wiki 主页Hive 项目 site