Hive 为什么要需要 mysql

已解决 hivemysqlhadoop
0

这个问题其实很多人不明白,Hive 是 Hadoop 上的数据仓库,为什么在安装 Hive 的时候要费老大的劲去安装和配置 MySQL 呢?

为什么 Hive 离不开 MySQL 这样的数据库?

我在这里自问自答一把。

如果觉得这对你有用,请随意赞赏,给与作者支持
回答 (1)
1 个回答

0

已采纳

Hive 只是个工具,包括它的数据分析,依赖于 MapReduce,它的数据管理,依赖于外部系统。

这一步其实不是必须的,因为 Hive 默认的 metadata(元数据)是存储在 Derby 里面的,但是有一个弊端就是同一时间只能有一个 Hive 实例访问,这适合做开发程序时做本地测试。

Hive 提供了增强配置,可将数据库替换成 MySQL 等关系型数据库,将存储数据独立出来在多个服务示例之间共享。

也就说其实你可以把 MySQL 替换成 PostgreSQL 这些数据库等。

总计起来,Hive 需要 MySQL 这样的关系型数据库的原因是这几点:

  • metastore 是 hive 元数据的集中存放地
  • metastore 默认使用内嵌的 Derby 数据库作为存储引擎
  • Derby 引擎的缺点:一次只能打开一个会话,限制了多用户访问
  • 使用 MySQL 作为外置存储引擎,可以提供给多用户同时访问

Hive 安装模式:

  • 内嵌模式:元数据保持在内嵌的 Derby 模式,只允许一个会话连接
  • 本地独立模式:在本地安装 MySQL,把元数据放到 MySQL 内
  • 远程模式:元数据放置在远程的 MySQL 数据库。

由此可见,你在哪路径下,执行 hive 指令,就在哪路径下生成 metastore_db,建一套数据库文件,这样是极其不合适的,公司里每个人若不一样,则会显得非常混杂。导致员工之间无法公用交流。为此,需要一个公用的数据库,那就是 MySQL 来存储。

这也是为什么,在安装 Hive 时,也需要配置 MySQL 了。