我之前有一个疑惑就是,为什么hive的metastore服务没有开启,我依然可以通过连接hiveserver2来连接MySQL数据库去访问hive所需要的元数据?
后来才突然明白了hiveserver2和metasore的配置文件都在同一个hive-site.xml中进行配置的,我把hive默认的Derby数据库改成了Mysql数据库来存储hive需要的元数据,将连接Mysql的四要素(URL、Driver、User、PassWord)配置到了hive-site.xml当中就可以连接MySQL了。因为我们在hive-site.xml中有了MySQL的访问四要素,所以我们不用开启metastore服务,客户端直接连接hiveserver2依然是可以访问到Mysql数据库获取hive需要的元数据,用来操作hive。
但是我们仔细回想一下, 虽然我们配置了MySQL的连接四要素可以直接通过连接hiveserver2来连接MySQL数据库来获取hive所需要的元数据,那如果我们没有开启metastore服务会怎么样?
这样就会存在一个潜在的问题,如果不开启metastore服务,将无法监视和管理元数据的一致性和完整性,也无法提供元数据的并发控制和事务管理功能,因此建议始终开启hive的metastore服务来管理hive元数据!