Hive启动报错解决合集

报错可以参考:https://blog.csdn.net/eason_oracle/article/details/52273954

一、报错:org.datanucleus.store.rdbms.connectionpool.DatastoreDriverNotFoundException:The 
specified datastore driver("com.mysql.jdb.Driver") was not found in the CLASSPATH.

解决方法:把tar.gz包解压,把里面的jar上传到hive的lib下

报错:at com.jolbox.bonecp.BoneCP.obtainRawInternalConnection(BoneCP.java:361)

解决:

原因: 同一个ip在短时间内产生太多(超过mysql数据库max_connect_errors的最大值)
中断的数据库连接而导致的阻塞;

解决方法:
   1、提高允许的max_connection_errors数量:

  ① 进入Mysql数据库查看max_connection_errors: 
show variables like '%max_connect_errors%'; 
   
 ② 修改max_connection_errors的数量为1000: set global max_connect_errors = 1000; 

  ③ 查看是否修改成功:show variables like '%max_connect_errors%'; 

  
 2、使用mysqladmin flush-hosts 命令清理一下hosts文件
(不知道mysqladmin在哪个目录下可以使用命令查找:whereis mysqladmin);
 
 ① 在查找到的目录下使用命令修改:
mysqladmin --socket=/tmp/kkimdb.sock --port=3306 -uhyman -p flush-hosts
 
 备注: 配置有master/slave主从数据库的要把主库和从库都修改一遍的
(我就吃了这个亏明明很容易的几条命令结果折腾了大半天); 
     
mysql> flush hosts; 也可以
      max_connect_errors是一个MySQL中与安全有关的计数器值,
它负责阻止过多尝试失败的客户端以防止暴力破解密码的情况。
max_connect_errors的值与性能并无太大关系。
     
 默认情况下,my.cnf文件中可能没有此行,如果需要设置此数值,手动添加即可

原文链接:https://blog.csdn.net/fanyun_01/article/details/50922922

 功能与作用
    
 一般来说建议数据库服务器不监听来自网络的连接,仅仅通过sock连接
这样可以防止绝大多数针对mysql的攻击;如果必须要开启mysql的网络连接,
则最好设置此值,以防止穷举密码的攻击手段。

由于是内网使用,
仅做Hive的元数据库使用,因此使用一下解决方案:


1、果断 set global max_connect_errors = 10000; 


2、同时,在crontab增加一个定时任务,
定时执行mysqladmin flush-hosts 命令清理一下hosts文件

修改完成后,问题解决

三、

安装hive和mysq完成后,将mysql的连接jar包拷贝到$HIVE_HOME/lib目录下
    如果出现没有权限的问题,在mysql授权(在安装mysql的机器上执行)
    mysql -uroot -p
    #(执行下面的语句  *.*:所有库下的所有表   %:任何IP地址或主机都可以连接)
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
    FLUSH PRIVILEGES;

6. Jline包版本不一致的问题,需要拷贝hive的lib目录中jline.2.12.jar的jar包替换掉hadoop中的 
/home/hadoop/app/hadoop-2.6.4/share/hadoop/yarn/lib/jline-0.9.94.jar
 

猜你喜欢

转载自blog.csdn.net/weixin_41126842/article/details/91394487
今日推荐