Hive元数据存储的三种模式:
- 内嵌模式:将元数据保存在本地内嵌的derby数据库中,内嵌的derby数据库每次只能访问一个数据文件,也就意味着它不支持多会话连接
- 本地模式:将元数据保存在本地独立的数据库中(一般是MySQL),这可以支持多会话连接
- 远程模式:把元数据保存在远程独立的MySQL数据库中,避免每个客户端都去安装MySQL数据库
三种配置方式区别:
内嵌模式使用的是内嵌的Derby数据库来存储元数据,也不需要额外起Metastore服务。这个是默认的,配置简单,但是一次只能一个客户端连接,适用于用来实验,不适用于生产环境。
本地元存储和远程元存储都采用外部数据库来存储元数据。本地元存储和远程元存储的区别是:本地元存储不需要单独起metastore服务,用的是跟Hive在同一个进程里的metastore服务。远程元存储需要单独起metastore服务,然后每个客户端都在配置文件里配置连接到该metastore服务。远程元存储的metastore服务和Hive运行在不同的进程。
Metadata、Metastore作用:
- metadata即元数据。元数据包含用Hive创建的database、table等的元信息。元数据存储在关系型数据库中。如Derby、MySQL等
- Metastore的作用是:客户端连接metastore服务,metastore再去连接MySQL数据库来存取元数据。有了metastore服务,就可以有多个客户端同时连接,而且这些客户端不需要知道MySQL数据库的用户名和密码,只需要连接metastore 服务即可
Hive默认元数据表是存储在derby中的,但是derby是单session的,所以一般会修改hive-site.xml中的元数据库配置为MySQL。启用MySQL来管理元数据的配置:
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://<