2.7.2 为啥要用 Mysql
Hive 默认使用 derby 来作为 metastore.
既然有了 derby, 为什么我们还需要 Mysql?
derby 数据库有一个严重的缺陷就是同时只能连接最多一个会话, 再有其他会话会抛出异常. 也即是说derby
只能提供有限的单进程的存储服务.
所以在生成环境中一般都会使用其他的数据库来替代:
比如: MySQL、Postgres、Oracle、MS SQL Server.
而且 Hive 对 Mysql 比较友好.
所以在生成环境中, 大部分公司都是使用 Mysql 作为 Metastor
备注:
可能有同学会问, 我们以前为啥可以用 beeline 同时打开多个客户端呢? 是不是意味着derby 也可以支持多个会话了呢?
其实我们以前用 beeline 客户端并没有直接连接 derby 数据库, 我们使用 beeline 连接的是 hiveserver2 这个 hive 服务器.
连接 derby 的其实是 hiveserver2.
其实如果直接使用 hive
命令启动就知道了. 这个每次启动一个客户端并连接 derby, 当你第二次启动的时候就会抛出异常.
开启不了新的异常.