搭配快取和下修訂範圍使用 Ranger

啟用快取

本節列出啟用 Ranger 快取的步驟,以減少 Ranger Key Management System (KMS) 往返次數,進而加密及解密權杖。

  1. 在 Dataproc 叢集 VM 上安裝 memcached。根據預設,memcached 伺服器會在 VM 通訊埠 11211 (localhost:11211) 上啟動。

    sudo apt-get install -y memcached
    

  2. 在 Dataproc 叢集 VM 的 /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 連線至 VM 通訊埠 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 叢集 VM 的 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.enabledtrue 後, 擴大範圍的存取權杖路徑:warehouse/hive/table/