启动hive时出现:Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient

本文解决了因使用高版本Hive遇到的无法实例化SessionHiveMetaStoreClient问题,通过将Hive版本从1.2.1降至0.9.0成功启动。
Exception in thread "main" java.lang.RuntimeException: 
java.lang.RuntimeException: Unable to instantiate 
org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
         at 
org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:449)
         at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:634)
         at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:578)
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
         at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
         at java.lang.reflect.Method.invoke(Method.java:601)
         at org.apache.hadoop.util.RunJar.main(RunJar.java:212)
Caused by: java.lang.RuntimeException: Unable to instantiate 
org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
         at 
org.apache.hadoop.hive.metastore.MetaStoreUtils.newInstance(MetaStoreUtils.java:1481)
         at 
org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.<init>(RetryingMetaStoreClient.java:64)
         at 
org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.getProxy(RetryingMetaStoreClient.java:74)
         at 
org.apache.hadoop.hive.ql.metadata.Hive.createMetaStoreClient(Hive.java:2674)
         at org.apache.hadoop.hive.ql.metadata.Hive.getMSC(Hive.java:2693)
         at 
org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:430)
         ... 7 more
 
解决方法:
网上对于这个问题的答案是众说纷纭,我也尝试了网上所说的各种办法可是问题依旧,我试着更换MySQL版本,错误继续、试着升级hive错误继续、修改配置文件,错误继续、总之试了很多方法还是不行。。。
于是想到我的hadoop版本是1.2.1,而用的hive第一次是1.0.1,第二次是1.2.1,这两次尝试均出现以上错误。所以试着把hive降级版本,选择了hive0.9.0,结果显示:



ok!成功了!果然是hive的版本过高导致的问题,所以其他伙伴有类似错误请考虑版本的问题!!


                
### 三级标题:问题分析 `java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.metastore.SessionHiveMetaStoreClient` 是一个常见的 Hive 元存储连接问题。该异常通常表明 Hive 客户端在尝试连接 Hive Metastore 服务失败,可能的原因包括配置错误、依赖缺失、Hive Metastore 服务未启动或网络问题等。 ### 三级标题:可能的原因及解决方法 1. **Hive Metastore 服务未启动** - 确保 Hive Metastore 服务已经启动并且正在运行。可以使用以下命令检查服务状态: ```bash sudo service hive-metastore status ``` - 如果服务未运行,可以使用以下命令启动服务: ```bash sudo service hive-metastore start ``` 2. **Hive 配置错误** - 检查 `hive-site.xml` 文件中的配置是否正确,特别是与 Hive Metastore 相关的配置项,例如 `hive.metastore.uris`。该配置项应指向正确的 Hive Metastore 服务地址。 - 示例配置: ```xml <property> <name>hive.metastore.uris</name> <value>thrift://<metastore-host>:9083</value> </property> ``` 3. **数据库连接问题** - Hive Metastore 依赖于一个外部数据库(如 MySQL、PostgreSQL 等)来存储元数据。确保数据库服务正在运行,并且 Hive Metastore 可以成功连接到数据库。 - 检查数据库的连接字符串、用户名和密码是否正确。例如,在 `hive-site.xml` 中: ```xml <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://<db-host>:3306/hive_metastore?createDatabaseIfNotExist=true</value> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>hiveuser</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>hivepassword</value> </property> ``` 4. **依赖库缺失** - 确保所有必要的依赖库(如 JDBC 驱动、Hive 相关 JAR 文件等)都已正确安装并配置。例如,如果使用 MySQL 作为 Hive Metastore 的数据库,需要确保 `mysql-connector-java` 驱动已放置在 Hive 的 `lib` 目录下。 - 示例命令: ```bash cp mysql-connector-java-5.1.32-bin.jar /usr/lib/hive/lib/ ``` 5. **权限问题** - 确保 Hive Metastore 服务有权限访问数据库,并且数据库用户具有足够的权限来创建和修改表。 - 可以使用以下 SQL 命令检查数据库用户的权限: ```sql GRANT ALL PRIVILEGES ON hive_metastore.* TO 'hiveuser'@'%'; FLUSH PRIVILEGES; ``` 6. **网络问题** - 确保客户端和 Hive Metastore 服务之间的网络连接正常。可以使用 `telnet` 或 `nc` 命令测试 Hive Metastore 的端口是否可达。 - 示例命令: ```bash telnet <metastore-host> 9083 ``` 7. **日志分析** - 检查 Hive Metastore 的日志文件(通常位于 `/var/log/hive/` 目录下),查找更详细的错误信息。日志文件可以帮助定位问题的具体原因。 ### 三级标题:验证问题是否解决 完成上述步骤后,重新启动 Hive Metastore 服务并尝试重新连接: ```bash sudo service hive-metastore restart ``` 然后使用 Hive 客户端工具(如 `hive` 命令行)尝试连接 Hive Metastore,检查是否仍然出现错误。 如果问题仍未解决,建议进一步检查 Hive 和数据库的版本兼容性,以及系统资源(如内存和磁盘空间)是否充足。 ### 三级标题:相关问题
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值