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}}
通过百度发现这篇博文的修改方式:解决方式
- 进入$HIVE_HOME/hcatalog/etc/webhcat/中
- 复制当前的webhcat-default.xml为webhcat-site.xml
- 修改下面内容:
重启当前的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来测试
以上纯属个人见解,如有问题请联系本人!