将 Ranger 与缓存和下限范围设置搭配使用

启用缓存

本部分列出了使用 Ranger 启用缓存的步骤,以减少 Ranger 密钥管理系统 (KMS) 加密和解密令牌的往返次数。

  1. 在 Dataproc 集群虚拟机上安装 memcached。默认情况下,memcached 服务器会在虚拟机端口 11211 (localhost:11211) 上启动。

    sudo apt-get install -y memcached
    

  2. 在 Dataproc 集群虚拟机上的 /etc/dataproc-ranger-gcs-plugin/conf/ranger-gcs-site.xml Ranger 配置文件中设置以下属性。

    <property>
    <name>authorization.service.remoteCaching.address</name>
    <value>localhost:11211</value>
    </property>
    <property> <name>authorization.service.remoteCaching.class</name> <value>com.google.cloud.hadoop.ranger.gcs.authorization.caching.MemcachedCache</value> </property>
    <property> <name>authorization.service.remoteCaching.encryption.key.uri</name> <value>gcp-kms://projects/PROJECT_ID_OF_KMS_KEY/locations/REGION/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME</value> </property>

  3. 重启授权服务。

    sudo systemctl restart ranger-gcs-plugin-authorization-server 
    

查看缓存状态

您可以使用 telnet 查看 Ranger 缓存状态。

  1. 安装 telnet

    sudo apt-get install -y telnet 
    

  2. 使用 telnet 连接到虚拟机端口 11211 上的 memcache

    sudo telnet 127.0.0.1 11211
    

  3. 使用 telnet 命令查看缓存状态,包括以下命令:

    • stats items:列出缓存项的状态。示例输出:
      STAT items:17:number 2
      STAT items:17:number_hot 0
      STAT items:17:number_warm 0
      STAT items:17:number_cold 2
      
    • stats cachedump:列出缓存中存储的键。示例输出:
      stats cachedump 17 2
      ITEM 0616eeeeb54e23a09505da5bf75cd7fafe733eacf0d07bd7b1ac9cf46d17c188 [3051 b; 1707948281 s]
      ITEM d23645df9c79290d59ddb1b9710ff04fee37aa0b5de866b9b6d56b54641d68b4 [3078 b; 1707948281 s]
      
    • flush_all:使缓存项失效。

缩小 Cloud Storage 访问令牌的范围

您可能需要缩小 Ranger 访问令牌的范围,以向上移动(上限范围)外部 Hive 表指向的 Cloud Storage 路径。

如需将所有分区和子分区移至表级,请在 Dataproc 集群虚拟机上的 ranger-gcs-site.xml 配置文件中将 downscope.table.partition-name.pruning.enabled 属性设置为 true

<property>
  <name>downscope.table.partition-name.pruning.enabled</name>
  <value>true</value>
</property>

示例:

  • Cloud Storage 存储桶名称:gs://warehouse
  • 原始访问令牌路径:warehouse/hive/table/type=debit/year=2017/month=Aug/day=01/
  • downscope.table.partition-name.pruning.enabled 设置为 true 后,访问令牌路径范围扩大:warehouse/hive/table/