代码之家  ›  专栏  ›  技术社区  ›  aiman

Hive-2.3.2 metastore with MySQL无法启动

  •  0
  • aiman  · 技术社区  · 6 年前

    我已经用MySQL安装了apache-hive-2.3.2。
    每当我想做 SHOW DATABASES 或任何配置单元命令,都会引发错误:

    hive> show databases;
    FAILED: SemanticException org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
    

    我已配置配置单元站点。类似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.jdbc.Driver</value>
        <description>Driver class name for a JDBC metastore</description>
      </property>
     <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
        <description>Username to use against metastore database</description>
      </property>
     <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>tomtom</value>
        <description>password to use against metastore database</description>
      </property>
    

    在MySQL中,我已授予“root”权限:

    [root@localhost gdm]# mysql -u root -p
    mysql> grant all on *.* to 'root'@'localhost';
    Query OK, 0 rows affected (0.21 sec)
    
    mysql> flush privileges;
    Query OK, 0 rows affected (0.03 sec)
    mysql> select user,host from mysql.user;
    +------------------+-----------+
    | user             | host      |
    +------------------+-----------+
    | mysql.infoschema | localhost |
    | mysql.session    | localhost |
    | mysql.sys        | localhost |
    | root             | localhost |
    +------------------+-----------+
    4 rows in set (0.11 sec)
    

    我还创建了数据库 metastore 在MySQL中:

    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | metastore          |
    | mysql              |
    | performance_schema |
    | sys                |
    +--------------------+
    5 rows in set (0.53 sec)
    

    我还有 mysql-connector-java-5.1.30.jar 在蜂房里 lib 目录
    我尝试手动启动配置单元元存储: hive --service metastore ,但其引发异常:

    2018-05-05T14:29:38,987 INFO [main] org.apache.hadoop.hive.metastore.HiveMetaStore - Starting hive metastore on port 9083
    2018-05-05T14:29:39,882 INFO [main] org.apache.hadoop.hive.metastore.HiveMetaStore - 0: Opening raw store with implementation class:org.apache.hadoop.hive.metastore.ObjectStore
    2018-05-05T14:29:41,298 WARN [main] org.apache.hadoop.hive.metastore.HiveMetaStore - Retrying creating default database after error: Unable to open a test connection to the given database. JDBC url = jdbc:mysql://localhost:3306/metastore?createDatabaseIfNotExist=true, username = root. Terminating connection pool (set lazyInit to true if you expect to start your database after your app). Original Exception: ------
    com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server.
            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:409)
            at com.mysql.jdbc.Util.getInstance(Util.java:384)
            at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1013)
            at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987)
            at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:973)
            at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:918)
            at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2588)
            at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2321)
            at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:832)
            at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:46)
            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:409)
            at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:417)
            at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:344)
            at java.sql.DriverManager.getConnection(DriverManager.java:664)
            at java.sql.DriverManager.getConnection(DriverManager.java:208)
            at com.jolbox.bonecp.BoneCP.obtainRawInternalConnection(BoneCP.java:361)
            at com.jolbox.bonecp.BoneCP.<init>(BoneCP.java:416)
            at com.jolbox.bonecp.BoneCPDataSource.getConnection(BoneCPDataSource.java:120)
            at org.datanucleus.store.rdbms.ConnectionFactoryImpl$ManagedConnectionImpl.getConnection(ConnectionFactoryImpl.java:483)
            at org.datanucleus.store.rdbms.RDBMSStoreManager.<init>(RDBMSStoreManager.java:297)
            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 org.datanucleus.plugin.NonManagedPluginRegistry.createExecutableExtension(NonManagedPluginRegistry.java:606)
            at org.datanucleus.plugin.PluginManager.createExecutableExtension(PluginManager.java:301)
            at org.datanucleus.NucleusContextHelper.createStoreManagerForProperties(NucleusContextHelper.java:133)
            at org.datanucleus.PersistenceNucleusContextImpl.initialise(PersistenceNucleusContextImpl.java:422)
            at org.datanucleus.api.jdo.JDOPersistenceManagerFactory.freezeConfiguration(JDOPersistenceManagerFactory.java:817)
            at org.datanucleus.api.jdo.JDOPersistenceManagerFactory.createPersistenceManagerFactory(JDOPersistenceManagerFactory.java:334)
            at org.datanucleus.api.jdo.JDOPersistenceManagerFactory.getPersistenceManagerFactory(JDOPersistenceManagerFactory.java:213)
            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 javax.jdo.JDOHelper$16.run(JDOHelper.java:1965)
            at java.security.AccessController.doPrivileged(Native Method)
            at javax.jdo.JDOHelper.invoke(JDOHelper.java:1960)
            at javax.jdo.JDOHelper.invokeGetPersistenceManagerFactoryOnImplementation(JDOHelper.java:1166)
            at javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:808)
            at javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:701)
            at org.apache.hadoop.hive.metastore.ObjectStore.getPMF(ObjectStore.java:519)
            at org.apache.hadoop.hive.metastore.ObjectStore.getPersistenceManager(ObjectStore.java:548)
            at org.apache.hadoop.hive.metastore.ObjectStore.initializeHelper(ObjectStore.java:403)
            at org.apache.hadoop.hive.metastore.ObjectStore.initialize(ObjectStore.java:340)
            at org.apache.hadoop.hive.metastore.ObjectStore.setConf(ObjectStore.java:301)
            at org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:76)
            at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:136)
            at org.apache.hadoop.hive.metastore.RawStoreProxy.<init>(RawStoreProxy.java:58)
            at org.apache.hadoop.hive.metastore.RawStoreProxy.getProxy(RawStoreProxy.java:67)
            at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.newRawStoreForConf(HiveMetaStore.java:624)
            at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.getMSForConf(HiveMetaStore.java:590)
            at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.getMS(HiveMetaStore.java:584)
            at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.createDefaultDB(HiveMetaStore.java:651)
            at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.init(HiveMetaStore.java:427)
            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.hive.metastore.RetryingHMSHandler.invokeInternal(RetryingHMSHandler.java:148)
            at org.apache.hadoop.hive.metastore.RetryingHMSHandler.invoke(RetryingHMSHandler.java:107)
            at org.apache.hadoop.hive.metastore.RetryingHMSHandler.<init>(RetryingHMSHandler.java:79)
            at org.apache.hadoop.hive.metastore.RetryingHMSHandler.getProxy(RetryingHMSHandler.java:92)
            at org.apache.hadoop.hive.metastore.HiveMetaStore.newRetryingHMSHandler(HiveMetaStore.java:6887)
            at org.apache.hadoop.hive.metastore.HiveMetaStore.newRetryingHMSHandler(HiveMetaStore.java:6882)
            at org.apache.hadoop.hive.metastore.HiveMetaStore.startMetaStore(HiveMetaStore.java:7140)
            at org.apache.hadoop.hive.metastore.HiveMetaStore.main(HiveMetaStore.java:7067)
            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:221)
            at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
    Caused by: java.lang.NullPointerException
            at com.mysql.jdbc.ConnectionImpl.getServerCharacterEncoding(ConnectionImpl.java:3307)
            at com.mysql.jdbc.MysqlIO.sendConnectionAttributes(MysqlIO.java:1985)
            at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1911)
            at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1288)
            at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2506)
            at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2539)
            ... 70 more
    ------
    

    我在 here here
    但没什么帮助。
    我尝试的连接URL:
    jdbc:mysql://localhost:3306/metastore?createDatabaseIfNotExist=true 以及
    jdbc:mysql://localhost/metastore?createDatabaseIfNotExist=true .但两者都不起作用。

    1 回复  |  直到 6 年前
        1
  •  1
  •   aiman    6 年前

    已修复此问题。
    mysql连接器java。jar不兼容。我在使用 MySQLv8.0.11 连接器版本为 v5.1
    我用版本更改了连接器 v8.0.11 .仍面临时区CEST问题。
    更改了系统时区(参考: Change Timezone )
    重新启动MySQL: /etc/init.d/mysqld restart