Alluxio SDK 快取¶
概觀¶
Presto 支援使用內建的 Alluxio SDK 快取來快取輸入資料,以減少使用 Hive 連接器的查詢延遲。此內建快取利用每個工作節點上的本機儲存空間(例如 SSD),並具有可設定的容量和位置。若要了解其內部結構和延遲改善的基準測試結果,請閱讀這篇文章。請注意,這是讀取快取,對使用者而言是完全透明的,並且完全由個別 Presto 工作節點管理。若要為 Presto 提供獨立的分散式快取服務,以處理具有自訂資料快取原則的讀寫工作負載,請參閱Alluxio 快取服務。
設定¶
啟用 Alluxio SDK 快取非常簡單。在 etc/catalog/hive.properties
中包含以下組態,並重新啟動 Presto 協調器和工作節點
hive.node-selection-strategy=SOFT_AFFINITY
cache.enabled=true
cache.type=ALLUXIO
cache.alluxio.max-cache-size=500GB
cache.base-directory=/tmp/alluxio-cache
在上述範例組態中,
hive.node-selection-strategy=SOFT_AFFINITY
指示 Presto 排程器在將任務排程至工作節點時,將資料親和性納入考量,以實現有意義的資料快取效果。此組態屬性預設為NO_PREFERENCE
,並且僅在設定為SOFT_AFFINITY
時才會啟用 SDK 快取。協調器上其他可能會影響資料親和性的組態包括node-scheduler.max-pending-splits-per-task
(每個任務的最大待處理分割數)和node-scheduler.max-splits-per-node
(每個節點的最大分割數)。cache.enabled=true
會開啟 SDK 快取,而cache.type=ALLUXIO
則會將其設定為 Alluxio。cache.alluxio.max-cache-size=500GB
將儲存空間設定為 500GB。cache.base-directory=/tmp/alluxio-cache
指定本機目錄/tmp/alluxio-cache
。請注意,此 Presto 伺服器必須具有讀取和寫入權限才能存取此本機目錄。
啟用親和性排程時,會將一組偏好的節點指派給某個檔案區段。預設檔案區段大小為 256MB
。例如,如果檔案大小為 512MB,則會指派兩種不同的親和性偏好設定
[0MB..256MB] -> NodeA, NodeB
[256MB+1B..512MB] -> NodeC, NodeD
該區段是根據分割起始偏移量來選取的。其第一個位元組位於第一個區段中的分割,偏好排程在 NodeA
或 NodeB
上。
您可以透過設定 hive.affinity-scheduling-file-section-size
組態屬性或 affinity_scheduling_file_section_size
工作階段屬性來變更區段的大小。
監控¶
此 Alluxio SDK 快取對使用者而言是完全透明的。若要驗證快取是否正常運作,您可以檢查 cache.base-directory
所設定的目錄,並查看其中是否建立了暫存檔案。此外,Alluxio 在執行與快取相關的操作時,會匯出各種 JMX 指標。系統管理員可以透過檢查下列指標來監控整個叢集的快取使用情況
Client.CacheBytesEvicted
:從用戶端快取中逐出的位元組總數。Client.CacheBytesReadCache
:從用戶端快取讀取的位元組總數(例如,快取命中)。Client.CacheBytesRequestedExternal
:使用者要求讀取的位元組總數,導致快取未命中。由於區塊讀取,此數字可能會小於 Client.CacheBytesReadExternal。Client.CacheHitRate
:依據(從快取讀取的位元組數)/(要求的位元組數)所測量的命中率。Client.CacheSpaceAvailable
:用戶端快取中可用的位元組數量。Client.CacheSpaceUsed
:用戶端快取使用的位元組數量。
如需可用指標的完整清單,請參閱 Alluxio 用戶端指標。