hive配置了元数据存储的介质是mysql数据库,这时候还是local模式,hiveserver2是通过自己的JDBC程序直接访问MySQL,从而获取元数据。
但是如果一旦配置了metastore服务,就必须先启动metastore服务进程,hiveserver2才能正常启动,否则会一直等待,而10000端口一直没起来。
具体步骤如下:
1、hive-site.xml配置元存储介质
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://bigdata:3306/hive?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.cj.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>
2、hive-site.xml配置metastore服务
<!-- 指定 metastore 的地址和端口 -->
<property>
<name>hive.metastore.uris</name>
<value>thrift://bigdata:9083</value>
</property>
<property>
<name>hive.metastore.client.socket.timeout</name>
<value>3600</value>
</property>
3、启动metastore服务:
# 后台启动 metastore 服务器端,默认使用 9083 端口
nohup hive --service metastore &
# 或者使用指定的端口号:
nohup hive --service metastore -p 9083 &
4、启动hiveserver2服务:
# 后台启动 metastore 服务器端,默认使用 10000 端口
nohup hive --service hiveserver2 &
# 或者使用指定的端口号:
nohup hive --service hiveserver2 --hiveconf hive.server2.thrift.port 10001 &