本文为胡旻整理编写,版权所有,转载请注明
WebHCat简介
WebHCat为HCatalog提供REST API服务。整体架构如下:
使用WebHCat和其包含的安全模式,程序能够通过REST的API很安全的链接和操作HCatalog提供的服务。可提供以下操作:
基于REST的API调用可以管理数据库、表、分区、列和表的属性。
利用PUT调用来完成创建/更新(create/update)操作,利用GET调用来描述得到列表信息;DELETE调用可以用来删除数据库、表、分区和列。
WebHCat允许通过REST接口提供的操作如下:
数据库模式定义DDL 操作
执行数据库模式定义命令
列出和表述数据库中的属性及其表属性
创建/删除/修改数据库和表
管理表分区,包括创建和删除分区
管理表的属性
作业管理
远程启动和管理MapReduce作业
远程启动和管理Pig作业
执行Hive查询和命令
远程获取作业的状态和管理作业的执行
RESTAPI示例:这里只是演示GET调用
分类 | 资源(类型) | 描述 | 举例 |
通用 | :version (GET) | 支持相应类型的返回格式 | |
{"responseTypes":["application/json"]} | |||
status (GET) | 返回WebHCat服务器的状态 | ||
{"status":"ok","version":"v1"} | |||
version (GET) | 返回支持的版本和当前的版本 | ||
{"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) | 列出表的属性 | |
| {"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服务 |
问题三:出现日志配置多次绑定的问题
解决办法: 提取出相应的程序,这里是 /usr/hdp/2.2.6.0-2800/hive/lib/hive-jdbc-0.14.0.2.2.6.0-2800-standalone.jar 解压并删除 然后替换服务器上的hive-jdbc-0.14.0.2.2.6.0-2800-standalone.jar,重启服务即可 |
如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!
赞0
添加新评论0 条评论