1、单用户模式
元数据保存在内嵌的 derby中,允许一个会话连接,尝试多个会话连接会报错
只修改了 hive-env.sh情况下,并且拷贝了一份 hive-site.xml,什么都不改
内嵌模式参数
javax.jdo.option.ConnectionURL jdbc:derby:;databaseName=metastore_db;create=true 描述了hive元数据存储的位置
如果使用默认的derby 数据库作为元数据存储。在用户当前目录下新出现了一个名为 metastore_db的目录,这个目录是在起点hive会话时由derby创建的
如何为元数据存储数据库配置一个永久的路径?
配置hive-site.xml:
通过这个文件,设置每次运行hive时希望hive使用的选项
配置 hive.exec.local.scratchdir --值 /opt/hive-2.3.5/iotmp
配置 hive.downloaded.resources.dir — 值 /opt/hive-2.3.5/iotmp
属性 hive.execution.engine说明,指明hive使用哪种执行引擎,默认值是 mr
属性 hive.metastore.warehouse.dir 说明,指明托管表存储位置,告诉hive在本地文件系统中使用哪个路径来存储hive表中的数据,默认 /user/hive/warehouse,指明hive数据仓库的数据存储在HDFS上的目录
属性hive.metastore.local
2、多用户模式
多会话模式,这种配置称为 本地metastaore配置,因为 metastore服务仍然和hive服务运行在同一个进程中,但连接的却是另一个进程中的数据库
本地安装mysql,替代 derby存储元数据
hive的元数据:表信息、表属性、分区、列等信息,owner
hive的实际数据:在hdfs上
四个配置项 :
1> 配置hive连接数据库的连接字符串
参数:javax.jdo.option.ConnectionURL
值:jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true
(hive需要在mysql下面创建hive数据库
如果hive数据库不存在,创建hive数据库
/告诉hive如何连接metastore server)
指定MySQL驱动类的入口:
参数:javax.jdo.option.ConnectionDriver --值:com.mysql.jdbc.Driver
指定数据库的用户名:
参数:javax.jdo.option.ConnectionUserName — 值:连接的mysql用户名
指定数据库的密码:
参数:javax.jdo.option.ConnectionPassword – 值:连接的mysql密码
拷贝mysql去掉到 $HIVE_HOME/lib下面
3、远程模式
远程安装 mysql,替代 derby存储元数据