CDH HIVE报错引发的一系列血案

今天偶尔发现一个CDH集群中的Hive MetaStore Server发生了异常,于是检查相关日志,具体日志为Hive MetaStore Server所在节点的/var/log/hive/hadoop-cmf-hive-HIVEMETASTORE-sbh01.esgyn.cn.log.out,日志报错如下,

2019-10-31 06:22:51,467 INFO  org.apache.hadoop.hive.metastore.HiveMetaStore: [pool-5-thread-199]: 199: source:172.31.232.22 get_table : db=cloudera_manager_metastore_canary_test_db_hive_HIVEME
TASTORE_89c6545c32a1b6da390011bba5c4799a tbl=CM_TEST_TABLE
2019-10-31 06:22:51,467 INFO  org.apache.hadoop.hive.metastore.HiveMetaStore.audit: [pool-5-thread-199]: ugi=hue        ip=172.31.232.22        cmd=source:172.31.232.22 get_table : db=cloudera_
manager_metastore_canary_test_db_hive_HIVEMETASTORE_89c6545c32a1b6da390011bba5c4799a tbl=CM_TEST_TABLE
2019-10-31 06:22:51,470 ERROR org.apache.hadoop.hive.metastore.RetryingHMSHandler: [pool-5-thread-199]: Retrying HMSHandler after 2000 ms (attempt 4 of 10) with error: javax.jdo.JDOException: E
xception thrown when executing query
        at org.datanucleus.api.jdo.NucleusJDOHelper.getJDOExceptionForNucleusException(NucleusJDOHelper.java:596)
        at org.datanucleus.api.jdo.JDOQuery.execute(JDOQuery.java:275)
        at org.apache.hadoop.hive.metastore.ObjectStore.getMTable(ObjectStore.java:1217)
        at org.apache.hadoop.hive.metastore.ObjectStore.getTable(ObjectStore.java:1024)
        at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcce
### Hive 中无法找到驱动类的解决方案 当遇到 `Unable to find driver class` 错误时,通常是因为缺少必要的 JDBC 驱动程序或者配置不正确。以下是可能的原因以及对应的解决方法: #### 1. **确认 Hive 的 JDBC 驱动** 如果使用的是 MySQL 数据库作为元数据存储,则需要确保 Hive 能够访问到正确的 MySQL 连接器 JAR 文件[^3]。 - 将新的 MySQL Connector JAR 文件(如 `mysql-connector-java-8.0.15.jar`)放置在 Hive 的 lib 目录下。 - 替换旧版本的 JAR 文件以避免冲突。 ```bash cp mysql-connector-java-8.0.15.jar $HIVE_HOME/lib/ ``` #### 2. **验证 HBase 兼容性问题** 如果是由于 HBase 和 Hive 的兼容性引发的问题,可以尝试上传所需的依赖包至 HDFS 并将其加载到 Spark 或其他计算框架中使用的外部库路径上[^2]。 例如: ```bash hadoop fs -mkdir -p /user/spark/extlib/ hadoop fs -put hbase-hadoop-compat-1.2.0-cdh5.14.2.jar /user/spark/extlib/ ``` 随后,在启动环境变量设置时加入该路径支持动态加载所需 jar 包。 #### 3. **检查临时文件夹权限** 某些情况下,错误也可能由 `/tmp` 文件夹缺失引起。这会阻止日志目录创建并间接影响驱动加载过程[^4]。因此建议执行以下操作恢复默认状态: ```bash sudo mkdir -p /tmp sudo chmod a+rwx /tmp ``` #### 4. **修改 hive-site.xml 配置** 最后一步是核对 `hive-site.xml` 是否正确定义了数据库连接参数及其关联驱动名称。例如对于 MySQL 应指定如下属性值: ```xml <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost:3306/metastore?createDatabaseIfNotExist=true</value> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.cj.jdbc.Driver</value> </property> ``` 以上调整完成后重启服务测试效果如何改善此状况。 ```python import os os.system('service hive-server2 restart') ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据源的港湾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值