Alluxio 快取服務¶
概觀¶
為了改善 Presto 查詢延遲的常見最佳化方式是快取工作集,以避免從遠端資料來源或透過緩慢的網路進行不必要的 I/O。本節說明如何利用 Alluxio 作為 Presto 的快取層。
Alluxio 檔案系統作為獨立的分散式快取檔案系統,為 Presto Hive 連接器提供服務,其位於 HDFS 或物件儲存(如 AWS S3、GCP、Azure Blob 儲存)之上。使用者可以透過檔案系統介面了解快取使用情況並明確控制快取。例如,可以預先載入 Alluxio 目錄中的所有檔案,以預熱 Presto 查詢的快取,並設定快取資料的 TTL(存活時間)以回收快取容量。
Presto Hive 連接器可以將 AlluxioFileSystem 連線為 Hadoop 相容的檔案系統,其位於其他永久儲存系統之上。
設定¶
首先,設定 ${PRESTO_HOME}/etc/catalog/hive.properties
以使用 Hive 連接器。
connector.name=hive-hadoop2
hive.metastore.uri=thrift://127.0.0.1:9083
其次,確保所有 Presto 伺服器上的 ${PRESTO_HOME}/plugin/hive-hadoop2/
中已存在 Alluxio 用戶端 jar。如果不是這種情況,請下載 Alluxio 二進位檔,將 tarball 解壓縮到 ${ALLUXIO_HOME}
並將 Alluxio 用戶端 jar ${ALLUXIO_HOME}/client/alluxio-<VERSION>-client.jar
複製到此目錄中。重新啟動 Presto 服務
$ ${PRESTO_HOME}/bin/launcher restart
第三,設定 Hive Metastore 在服務 Presto 時連線到 Alluxio 檔案系統。編輯 ${HIVE_HOME}/conf/hive-env.sh
以在 Hive 類別路徑中包含 Alluxio 用戶端 jar
export HIVE_AUX_JARS_PATH=${ALLUXIO_HOME}/client/alluxio-<VERSION>-client.jar
然後重新啟動 Hive Metastore
$ ${HIVE_HOME}/hcatalog/sbin/hcat_server.sh start
查詢¶
完成基本設定後,Presto 應該能夠存取指向 alluxio://
位址的表格的 Alluxio 檔案系統。請參閱 Hive 連接器 文件,以了解如何在 Presto 中設定 Alluxio 檔案系統。以下是一個簡單的範例
$ cd ${ALLUXIO_HOME}
$ bin/alluxio-start.sh local -f
$ bin/alluxio fs mount --readonly /example \
s3://apc999/presto-tutorial/example-reason/
啟動連接到上一步中啟動的伺服器的 Prest CLI。
下載 presto-cli-0.289-executable.jar,將其重新命名為 presto
,並使用 chmod +x
使其可執行,然後執行它
$ ./presto --server localhost:8080 --catalog hive --debug
presto> use default;
USE
根據 Alluxio 中掛載的檔案建立新表格
presto:default> DROP TABLE IF EXISTS reason;
DROP TABLE
presto:default> CREATE TABLE reason (
r_reason_sk integer,
r_reason_id varchar,
r_reason_desc varchar
) WITH (
external_location = 'alluxio://127.0.0.1:19998/example',
format = 'PARQUET'
);
CREATE TABLE
掃描 Alluxio 上新建立的表格
presto:default> SELECT * FROM reason LIMIT 3;
r_reason_sk | r_reason_id | r_reason_desc
-------------+------------------+---------------------------------------------
1 | AAAAAAAABAAAAAAA | Package was damaged
4 | AAAAAAAAEAAAAAAA | Not the product that was ordred
5 | AAAAAAAAFAAAAAAA | Parts missing
基本操作¶
使用 Alluxio 檔案系統,此方法支援以下功能
預先載入:除了根據資料存取模式透明地快取資料外,使用者還可以透過使用命令列(如 alluxio fs distributedLoad)主動將工作集載入 Alluxio。
讀/寫類型和資料原則:使用者可以自訂 Presto 從 Alluxio 讀取和寫入時的讀取和寫入模式。例如,告知 Presto 在從特定位置讀取時跳過快取資料並避免快取抖動,或使用 alluxio fs setTtl 在指定位置的檔案上設定 TTL。
檢查工作集:使用者可以驗證快取了哪些檔案,以了解和最佳化 Presto 效能。例如,使用者可以檢查 Alluxio 命令列 alluxio fs ls 的輸出,或在 Alluxio WebUI 上瀏覽對應的檔案。
檢查資源使用率:系統管理員可以使用 alluxio fsadmin report 監控每個節點上已使用的快取容量,並據此規劃資源。