同时打开两个个客户端窗口启动 hive,会产生 java.sql.SQLException 异常。
SemanticException org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
原因是,Metastore 默认存储在自带的 derby 数据库中,推荐使用 MySQL 存储 Metastore。
配置说明:https://cwiki.apache.org/confluence/display/Hive/AdminManual+Metastore+Administration
这里使用 MySQL:https://www.cnblogs.com/jhxxb/p/11156902.html
下载 mysql 的 jar 包,然后放入 Hive 的 lib 目录。
curl -o /opt/apache-hive-2.3.6-bin/lib/mysql-connector-java-5.1.48.jar https://repo1.maven.org/maven2/mysql/mysql-connector-java/5.1.48/mysql-connector-java-5.1.48.jar vim /opt/apache-hive-2.3.6-bin/conf/hive-site.xml
hive-site.xml 中添加
<property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://h136:3306/metastore?createDatabaseIfNotExist=true&useSSL=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>root</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>root</value> </property>
执行初始化
schematool -dbType mysql -initSchema