更新时间:2022-12-14 GMT+08:00

HiveMetaStore支持基于Redis的CacheStore

操作场景

Hive中Metastore服务支持将部分表的元数据缓存在Redis上。

前提条件

集群已安装Redis服务。

配置Metastore的相关参数

  1. 登录FusionInsight Manager,具体请参见访问FusionInsight Manager,选择“集群 > 待操作集群名 > 服务 > Hive > 配置 > 全部配置 > MetaStore(角色) > 自定义”,修改以下参数,使MetaStore的cache对接到Redis服务上。

    表1 参数说明

    参数名

    描述

    hive.metastore.rawstore.impl

    org.apache.hadoop.hive.metastore.cache.redis.RedisCachedStore

    CachedStore的实现类,使用自定义的RedisCachedStore(必要配置)。

    redis.cluster.host.and.port

    xxx.xxx.xxx.xxx:22400;xxx.xxx.xxx.xxx.xxx:22401

    配置redis集群中任意节点的ip和port,格式为:ip:port;ip:port,值尾部不可以分号结尾(必要配置)。

    metastore.cached.rawstore.cached.object.whitelist

    catalog.database.table,catalog.database.table

    缓存表白名单,缓存配置的表到redis中,多张表之间以逗号分隔,默认为.* 代表缓存所有表(可选配置)。

    说明:

    表名由catalog.database.table三组成,catalog默认为hive。

    metastore.cached.rawstore.cached.object.blacklist

    catalog.database.table,catalog.database.table

    缓存表黑名单,将配置了的表不在redis中缓存,多张表之间以逗号分隔,默认为空(可选配置)。

    说明:

    表名由catalog.database.table三组成,catalog默认为hive。

    redis.cache.prewarm.cron

    cronTab表达式, 比如:0 0 16 * * ?

    定时执行prewarm的corn表达式,指将元数据库中缓存的数据刷新一次到redisCache中进行同步(可选配置)。

    metastore.cached.rawstore.catalogs

    hive

    需要缓存的catalog,默认为hive,可不配置(可选配置)。

    jedis.pool.max.wait.mills

    30000

    获取redis连接的超时时间,安全模式下可以长一些,单位ms,默认30000ms,可不配(可选配置)。

    jedis.pool.max.idle

    200

    jedis连接池中的最大空闲连接数,建议与max.total相同,默认200(可选配置)。

    jedis.pool.max.total

    200

    jedis连接池中的最大连接数,默认200(可选配置)。

    redis.security.enabled

    true或false

    是否开启redis cacahe安全模式,默认为true开启安全模式(可选配置)。

    当集群安装为非安全模式时,查看"集群 > 待操作集群名 > 服务 > Redis > 配置 > 全部配置 > Redis> 安全",查看参数“REDIS_SECURITY_ENABLED”是否为“false”,如果不是“false”则Redis服务不符合当前Metastore的非安全模式。

  2. 保存配置,选择“概览 > 更多 > 重启服务”重启Hive服务。

注意事项

使用Redis过程中如果切换回原生非缓存模式,执行一段时间后再切换回Redis,由于在使用数据库期间元数据的增删改是同步不到Redis的,所以再切回Redis前必须将Redis上缓存表清空然后重新同步元数据的数据,清空方式有两种方式。

  • 登录Redis客户端,手动将所有Redis节点上执行flushall命令。
  • 登录Redis客户端,修改Redis的两个标识,执行以下命令修改,其中{hiveServiceName}为Metastore配置文件“ENV_VARS”中“HIVE_DEFAULT_GROUP”参数的值,默认为“hive”。

    set {hiveServiceName}-hive-isRedisAvailable false

    del {hiveServiceName}-hive-isCanPrewarm