CentOS 安裝Presto

前言

Presto是一個開源的分佈式SQL查詢引擎,適用於交互式分析查詢,數據量支持GB到PB字節。Presto支持在線數據查詢,包括Hive, Cassandra, 關係數據庫以及專有數據存儲。 一條Presto查詢可以將多個數據源的數據進行合併,可以跨越整個組織進行分析。

估計是中國人維護的,英文文檔十分通俗易懂:https://prestodb.io/docs/current/index.html
實在無力的,可以看中文版的,大致內容不會差太多:http://prestodb.jd.com/docs/current/index.html

下載解壓

目前最新版本(0.237):https://repo1.maven.org/maven2/com/facebook/presto/presto-server/0.237/presto-server-0.237.tar.gz

解壓:

tar -xzvf presto-server-0.237.tar.gz

設置環境變量:

cd presto-server-0.237
export PRESTO_HOME=`pwd`

配置Presto

在安裝目錄中創建一個etc目錄。 在這個etc目錄中放入以下配置信息:

  • Node Properties
    節點屬性配置文件:etc/node.properties包含針對於每個節點的特定的配置信息。 一個節點就是在一臺機器上安裝的Presto實例。 這份配置文件一般情況下是在Presto第一次安裝的時候,由部署系統創建的。 一個etc/node.properties配置文件至少包含如下配置信息:

    node.environment=production
    node.id=ffffffff-ffff-ffff-ffff-ffffffffffff
    node.data-dir=/var/presto/data
    

    node.environment: 集羣名稱。所有在同一個集羣中的Presto節點必須擁有相同的集羣名稱。
    node.id: 每個Presto節點的唯一標示。每個節點的node.id都必須是唯一的。在Presto進行重啓或者升級過程中每個節點的node.id必須保持不變。如果在一個節點上安裝多個Presto實例(例如:在同一臺機器上安裝多個Presto節點),那麼每個Presto節點必須擁有唯一的node.id。
    node.data-dir: 數據存儲目錄的位置(操作系統上的路徑)。Presto將會把日誌和數據存儲在這個目錄下。

  • JVM配置

    -server
    -Xmx16G
    -XX:+UseConcMarkSweepGC
    -XX:+ExplicitGCInvokesConcurrent
    -XX:+CMSClassUnloadingEnabled
    -XX:+AggressiveOpts
    -XX:+HeapDumpOnOutOfMemoryError
    -XX:OnOutOfMemoryError=kill -9 %p
    -XX:ReservedCodeCacheSize=150M
    
  • Config Properties
    Presto的配置文件:etc/config.properties包含了Presto server的所有配置信息。 每個Presto server既是一個coordinator也是一個worker。 但是在大型集羣中,處於性能考慮,建議單獨用一臺機器作爲 coordinator。

    一個coordinator的etc/config.properties應該至少包含以下信息:

    coordinator=true
    node-scheduler.include-coordinator=false
    http-server.http.port=8080
    task.max-memory=1GB
    discovery-server.enabled=true
    discovery.uri=http://example.net:8080
    

    以下是最基本的worker配置:

    coordinator=false
    http-server.http.port=8080
    task.max-memory=1GB
    discovery.uri=http://example.net:8080
    

    但是如果你用一臺機器進行測試,那麼這一臺機器將會即作爲coordinator,也作爲worker。配置文件將會如下所示:

    coordinator=true
    node-scheduler.include-coordinator=true
    http-server.http.port=8080
    task.max-memory=1GB
    discovery-server.enabled=true
    discovery.uri=http://example.net:8080
    

    對配置項解釋如下:

    • coordinator:指定是否運維Presto實例作爲一個coordinator(接收來自客戶端的查詢情切管理每個查詢的執行過程)。
    • node-scheduler.include-coordinator:是否允許在coordinator服務中進行調度工作。對於大型的集羣,在一個節點上的Presto server即作爲coordinator又作爲worke將會降低查詢性能。因爲如果一個服務器作爲worker使用,那麼大部分的資源都不會被worker佔用,那麼就不會有足夠的資源進行關鍵任務調度、管理和監控查詢執行。
    • http-server.http.port:指定HTTP server的端口。Presto 使用 HTTP進行內部和外部的所有通訊。
    • task.max-memory=1GB:一個單獨的任務使用的最大內存 (一個查詢計劃的某個執行部分會在一個特定的節點上執行)。 這個配置參數限制的GROUP BY語句中的Group的數目、JOIN關聯中的右關聯表的大小、ORDER BY語句中的行數和一個窗口函數中處理的行數。 該參數應該根據併發查詢的數量和查詢的複雜度進行調整。如果該參數設置的太低,很多查詢將不能執行;但是如果設置的太高將會導致JVM把內存耗光。
    • discovery-server.enabled:Presto 通過Discovery 服務來找到集羣中所有的節點。爲了能夠找到集羣中所有的節點,每一個Presto實例都會在啓動的時候將自己註冊到discovery服務。Presto爲了簡化部署,並且也不想再增加一個新的服務進程,Presto coordinator 可以運行一個內嵌在coordinator 裏面的Discovery 服務。這個內嵌的Discovery 服務和Presto共享HTTP server並且使用同樣的端口。
    • discovery.uri:Discovery server的URI。由於啓用了Presto coordinator內嵌的Discovery 服務,因此這個uri就是Presto coordinator的uri。修改example.net:8080,根據你的實際環境設置該URI。注意:這個URI一定不能以“/“結尾。
  • 日誌級別

    com.facebook.presto=INFO
    
  • Catalog Properties
    Presto通過connectors訪問數據。這些connectors掛載在catalogs上。 connector 可以提供一個catalog中所有的schema和表。 例如: Hive connector 將每個hive的database都映射成爲一個schema, 所以如果hive connector掛載到了名爲hive的catalog, 並且在hive的web有一張名爲clicks的表, 那麼在Presto中可以通過hive.web.clicks來訪問這張表。
    詳細配置信息參照:https://prestodb.io/docs/current/connector.html(英文)
    http://prestodb.jd.com/docs/current/connector.html(中文)

運行Presto

  • 後臺進程啓動:

    $PRESTO_HOME/bin/launcher start
    # 查看日誌 node.data-dir配置的路徑/var/log/server.log
    
  • 前臺運行:

    $PRESTO_HOME/bin/launcher run
    
  • 幫助

    $PRESTO_HOME/bin/launcher-help
    

Presto客戶端

下載地址:https://repo1.maven.org/maven2/com/facebook/presto/presto-cli/0.237/presto-cli-0.237-executable.jar

  • 改名並賦予執行權限

    mv presto-cli-0.237-executable.jar presto
    chmod +x presto
    
  • 連接服務器

    presto --server <host>:<port>
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章