1.报错信息:
Initializing the schema to: 3.1.1000Metastore connection URL: jdbc:mysql://xx.xx.xx.1:3306/hiveMetastore Connection Driver : com.mysql.jdbc.DriverMetastore connection User: hiveFailed to get schema version.Underlying cause: java.sql.SQLException : null, message from server: "Host 'hdp02.unicom.com' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'"SQL Error code: 1129org.apache.hadoop.hive.metastore.HiveMetaException: Failed to get schema version.at org.apache.hadoop.hive.metastore.tools.HiveSchemaHelper.getConnectionToMetastore(HiveSchemaHelper.java:94)at org.apache.hadoop.hive.metastore.tools.MetastoreSchemaTool.getConnectionToMetastore(MetastoreSchemaTool.java:250)at org.apache.hadoop.hive.metastore.tools.MetastoreSchemaTool.testConnectionToMetastore(MetastoreSchemaTool.java:333)at org.apache.hadoop.hive.metastore.tools.SchemaToolTaskInit.execute(SchemaToolTaskInit.java:53)at org.apache.hadoop.hive.metastore.tools.MetastoreSchemaTool.run(MetastoreSchemaTool.java:446)at org.apache.hive.beeline.schematool.HiveSchemaTool.main(HiveSchemaTool.java:138)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at org.apache.hadoop.util.RunJar.run(RunJar.java:318)at org.apache.hadoop.util.RunJar.main(RunJar.java:232)Caused by: java.sql.SQLException: null, message from server: "Host 'hdp02.unicom.com' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'"at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:996)at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:935)at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:924)at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1037)at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2234)at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2265)at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2064)at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:790)at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:44)at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)at java.lang.reflect.Constructor.newInstance(Constructor.java:423)at com.mysql.jdbc.Util.handleNewInstance(Util.java:377)at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:395)at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:325)at java.sql.DriverManager.getConnection(DriverManager.java:664)at java.sql.DriverManager.getConnection(DriverManager.java:247)at org.apache.hadoop.hive.metastore.tools.HiveSchemaHelper.getConnectionToMetastore(HiveSchemaHelper.java:88)... 11 more
2.分析原因
同一个ip在短时间内产生太多(超过mysql数据库max_connection_errors的最大值)中断的数据库连接而导致的阻塞;
3.解决办法
方式一:提高允许的max_connection_errors数量(治标不治本)
- ① 进入Mysql数据库查看max_connection_errors: show variables like “max_connection_errors”;
- ② 修改max_connection_errors的数量为1000: set global max_connect_errors = 1000;
- ③ 修改 max_connections 的数量为1000 :set global max_connections = 1000;
方式二:root登录后,直接使用 mysql> flush hosts; 命令
