Hive:使用当前的WebHCat并提供rest api功能

1.声明

当前内容主要用于本人学习和复习,当前内容主要为启动当前的WebHCat和测试和解决其中出现的问题

2.首先启动当前的WebHCat

cd hcatalog/sbin/
./webhcat_server.sh start

在这里插入图片描述

这表示启动成功了

3.查看官方的使用方式

在这里插入图片描述
在这里插入图片描述

通过示例发现:当前的WebHCat是占用的端口为:50111
通过命令查看端口

netstat -nltp

在这里插入图片描述

4.使用web方式访问

查看状态

http://192.168.1.102:50111/templeton/v1/status

在这里插入图片描述

测试

http://192.168.1.102:50111/templeton/v1/ddl/database/default/table/students?user.name=ctdean

在这里插入图片描述
{"error":"Unable to access program: ${env.PYTHON_CMD}"}

发现就是缺少python环境?通过使用python测试发现
在这里插入图片描述
本人具有python,应该是当前的PYTHON_CMD不存在的原因
在这里插入图片描述

修改当前的/etc/profile中添加export PYTHON_CMD
在这里插入图片描述

保存后,刷新配置:source /etc/profile

重新启动当前的webhcat_server

./webhcat_server.sh stop
./webhcat_server.sh start

在这里插入图片描述
结果再次执行:http://192.168.1.102:50111/templeton/v1/ddl/database/default/table/students?user.name=ctdean,发现错误:

在这里插入图片描述

又出现错误:{"statement":"use default; desc students; ","error":"unable to describe database: default","exec":{"stdout":"","stderr":"which: no /home/hy/hadoop-2.8.5/bin/hadoop in ((null))\ndirname: missing operand\nTry 'dirname --help' for more information.\n/home/hy/hadoop-2.8.5/bin/hadoop: line 27: /home/hy/apache-hive-2.3.7-bin/hcatalog/sbin/../libexec/hadoop-config.sh: No such file or directory\n/home/hy/hadoop-2.8.5/bin/hadoop: line 166: exec: : not found\n","exitcode":127}}

他说在/home/hy/hadoop-2.8.5/bin/hadoop的第27行又问题
编辑:vi /home/hy/hadoop-2.8.5/bin/hadoop
在这里插入图片描述
直接修改为/home/hy/hadoop-2.8.5/libexec
在这里插入图片描述
再次执行…
{"statement":"use default; desc students; ","error":"unable to describe database: default","exec":{"stdout":"","stderr":"which: no /home/hy/hadoop-2.8.5/bin/hadoop in ((null))\ndirname: missing operand\nTry 'dirname --help' for more information.\nSLF4J: Class path contains multiple SLF4J bindings.\nSLF4J: Found binding in [jar:file:/home/hy/hadoop-2.8.5/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]\nSLF4J: Found binding in [jar:file:/home/hy/apache-hive-2.3.7-bin/lib/log4j-slf4j-impl-2.6.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]\nSLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.\nSLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]\n20/06/22 14:26:35 INFO conf.HiveConf: Found configuration file null\n Command was terminated due to timeout(10000ms). See templeton.exec.timeout property","exitcode":143}}

通过百度发现这篇博文的修改方式:解决方式

  1. 进入$HIVE_HOME/hcatalog/etc/webhcat/中
  2. 复制当前的webhcat-default.xml为webhcat-site.xml
  3. 修改下面内容:
    在这里插入图片描述
    在这里插入图片描述
    重启当前的webhcat_server
./webhcat_server.sh stop
./webhcat_server.sh start

再次访问:
在这里插入图片描述

Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient,又出现了这个错误…(但是本人可以通过Hive访问当前的derby数据库,是不是当前数据库的问题)

通过百度得到结果:就是derby数据库只允许当前的一个连接,就是一个RunJar进程,而当前的运行使用ui界面时访问时,会产生两个RunJar进程导致不可用,解决办法切换为mysql数据库即可:切换derby为mysql数据库

再次测试结果:http://192.168.1.107:50111/templeton/v1/ddl/database/default/table/users?user.name=ctdean

在这里插入图片描述

访问成功!其他操作见:WebHCat文档

4.总结

1.使用当前的WebHCat方式提供了rest api的功能其中需要python环境的支持

2.当前的derby数据库是不支持多个会话的,建议使用mysql来测试

以上纯属个人见解,如有问题请联系本人!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值