humidy
作者humidy2015-10-30 16:01
信息分析/架构师, 某公司

WebHCat使用之我见

字数 5729阅读 4486评论 0赞 0

本文为胡旻整理编写,版权所有,转载请注明

WebHCat简介

WebHCat为HCatalog提供REST API服务。整体架构如下:

2_1.png

使用WebHCat和其包含的安全模式,程序能够通过REST的API很安全的链接和操作HCatalog提供的服务。可提供以下操作:

基于REST的API调用可以管理数据库、表、分区、列和表的属性。

利用PUT调用来完成创建/更新(create/update)操作,利用GET调用来描述得到列表信息;DELETE调用可以用来删除数据库、表、分区和列。

 

WebHCat允许通过REST接口提供的操作如下:

数据库模式定义DDL 操作

执行数据库模式定义命令

列出和表述数据库中的属性及其表属性

创建/删除/修改数据库和表

管理表分区,包括创建和删除分区

管理表的属性

 

作业管理

远程启动和管理MapReduce作业

远程启动和管理Pig作业

执行Hive查询和命令

远程获取作业的状态和管理作业的执行

 

RESTAPI示例:这里只是演示GET调用

分类

资源(类型)

描述

举例

通用

:version (GET)

支持相应类型的返回格式

http://10.80.14.25:50111/templeton/v1

{"responseTypes":["application/json"]}

status (GET)

返回WebHCat服务器的状态

http://10.80.14.25:50111/templeton/v1/status

{"status":"ok","version":"v1"}

version (GET)

返回支持的版本和当前的版本

http://10.80.14.25:50111/templeton/v1/version

{"supportedVersions":["v1"],"version":"v1"}

version/hive (GET)

返回正在运行的Hive版本

http://10.80.14.25:50111/templeton/v1/version/hive?user.name=hive

{"module":"hive","version":"0.14.0.2.2.6.0-2800"}

version/hadoop (GET)

返回正在运行的Hadoop版本

http://10.80.14.25:50111/templeton/v1/version/hadoop?user.name=hdfs

{"module":"hadoop","version":"2.6.0.2.2.6.0-2800"}

DLL

ddl/database (GET)

显示HCatalog数据库

http://10.80.14.25:50111/templeton/v1/ddl/database?user.name=hive&like=d*

{"databases":["default"]}

ddl/database/:db(GET)

描述一个HCatalog数据库

http://10.80.14.25:50111/templeton/v1/ddl/database/default?user.name=hive'

{"location":"hdfs://hc-dream/apps/hive/warehouse","ownerType":"ROLE","owner":"public","comment":"Default Hive database","database":"default"}

ddl/database/:db/table (GET)

列出HCatalog数据库中的所有表

http://10.80.14.25:50111/templeton/v1/ddl/database/default/table?user.name=hive&like=*

{"tables":["student","test2"],"database":"default"}

ddl/database/:db/table/:table (GET)

列出HCatalog表的描述信息

http://10.80.14.25:50111/templeton/v1/ddl/database/default/table/student?user.name=hive

{"columns":[{"name":"name","type":"string"},{"name":"age","type":"int"},{"name":"gpa","type":"double"}],"database":"default","table":"student"}

ddl/database/:db/table/:table/partition (GET)

列出HCatalog表的所有分区

http://10.80.14.25:50111/templeton/v1/ddl/database/default/table/student/partition?user.name=hive

{"error":"FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Table student is not a partitioned table","sqlState":"08S01","errorCode":10241,"database":"default","table":"student"}

ddl/database/:db/table/:table/column (GET)

列出HCatalog表中的列

http://10.80.14.25:50111/templeton/v1/ddl/database/default/table/student/column?user.name=hive

{"columns":[{"name":"name","type":"string"},{"name":"age","type":"int"},{"name":"gpa","type":"double"}],"database":"default","table":"student"}

ddl/database/:db/table/:table/column/:column (GET)

描述HCatalog表中单一的列

http://10.80.14.25:50111/templeton/v1/ddl/database/default/table/student/column/age?user.name=hive

 

{"database":"default","table":"student","column":{"name":"age","type":"int"}}

 

ddl/database/:db/table/:table/property (GET)

列出表的属性

http://10.80.14.25:50111/templeton/v1/ddl/database/default/table/student/property?user.name=hive

 

{"properties":{"numFiles":"0","EXTERNAL":"TRUE","transient_lastDdlTime":"1445423154","COLUMN_STATS_ACCURATE":"false","totalSize":"0","numRows":"-1","rawDataSize":"-1"},"table":"student","database":"default"}

 

ddl/database/:db/table/:table/property/:property (GET)

列出表的属性

http://10.80.14.25:50111/templeton/v1/ddl/database/default/table/student/property/fruit?user.name=hive

 

{"table":"student","database":"default"}

 

 

 

 

 

遇到的问题

问题一:用户伪装(impersonate)问题

{"error":"User:hcat is not allowed to impersonate hive"}

这是需要将hcat进行用户的伪装

解决办法:

在主控Active节点、Standby节点、ResourceManager节点和webhcat节点的配置文件core-site.xml中添加以下信息

<property>

    <name>hadoop.proxyuser.hcat.groups</name>

    <value>*</value>

</property>

<property>

    <name>hadoop.proxyuser.hcat.hosts</name>

    <value>*</value>

</property>

 

添加完需要重启相关服务

在hcat的服务节点配置节点webhcat-site.xml中添加

    <property>

    <name>webhcat.proxyuser.hcat.groups</name>

    <value>*</value>

  </property>

    <property>

    <name>webhcat.proxyuser.hcat.hosts</name>

    <value>*</value>

  </property>

改完后需要重启webhcat服务

 

这样就可以解决我们遇到的这个问题

问题二:WebHCat的队列的设置

 

解决办法:

我们在hcat的服务节点配置节点中的webhcat-site.xml中添加

<property>

    <name>templeton.hadoop.queue.name</name>

    <value>operations</value>

    <description>

    MapReduce queue name where WebHCat map-only jobs will be

    submitted to. Can be used to avoid a deadlock where all map slots

    in the cluster are taken over by Templeton launcher tasks.

    </description>

  </property>

 

设置完要重启相关WebHcat服务

 

问题三:出现日志配置多次绑定的问题

2_2.png


解决办法:

提取出相应的程序,这里是

/usr/hdp/2.2.6.0-2800/hive/lib/hive-jdbc-0.14.0.2.2.6.0-2800-standalone.jar

解压并删除

2_3.png

然后替换服务器上的hive-jdbc-0.14.0.2.2.6.0-2800-standalone.jar,重启服务即可

 

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论0 条评论

Ctrl+Enter 发表

关于TWT  使用指南  社区专家合作  厂商入驻社区  企业招聘  投诉建议  版权与免责声明  联系我们
© 2019  talkwithtrend — talk with trend,talk with technologist 京ICP备09031017号-30