Presto部署指南


1.Presto簡介說明

  Presto是一個開源的分布式SQL查詢引擎,適用於交互式分析查詢,數據量支持GB到PB字節。

  Presto的設計和編寫完全是為了解決像Facebook這樣規模的商業數據倉庫的交互式分析和處理速度的問題。

  Presto支持在線數據查詢,包括Hive, Cassandra, 關系數據庫以及專有數據存儲。一條Presto查詢可以將多個數據源的數據進行合並,可以跨越整個組織進行分析。

  Presto是一個分布式SQL查詢引擎,用於查詢分布在一個或多個不同數據源中的大數據集

  Presto被設計為數據倉庫和數據分析產品:數據分析、大規模數據聚集和生成報表。這些工作經常通常被認為是線上分析處理操作。

  所以說,當公司業務有跨庫分析時(一般情況是,業務數據庫分布在各個部門),一些數據需要配合其他部門的數據進行關聯查詢,這個時候可以考慮Presto。但是目前,對於MySQL統計查詢在性能上有瓶頸。可考慮將數據按時間段歸檔到HDFS中,以提高統計效率。

  如果需要對業務數據庫進行較為實時的統計,而且不需要跨庫操作的時候,建議還是直連數據庫。

  Presto上使用SQL遇到的一些坑:https://segmentfault.com/a/1190000013120454?utm_source=tag-newest

  Presto是一個運行在多台服務器上的分布式系統。 完整安裝包括一個coordinator和多個worker。 由客戶端提交查詢,從Presto命令行CLI提交到coordinator。 coordinator進行解析,分析並執行查詢計划,然后分發處理隊列到worker。

  

 

2.官方文檔:https://prestodb.github.io/docs/current/installation.html

3.下載:wget https://repo1.maven.org/maven2/com/facebook/presto/presto-server/0.220/presto-server-0.220.tar.gz

4.解壓,創建文件夾及文件

cd /data/bigdata/presto && mkdir etc && touch etc/{config.properties,jvm.config,log.properties,node.properties} && mkdir etc/catalog

5.修改配置文件

vim 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
query.max-memory=50GB
query.max-memory-per-node=1GB
discovery-server.enabled=true
discovery.uri=http://ip_地址:8080

以下是最基本的worker配置:
coordinator=false
http-server.http.port=8080
query.max-memory=50GB
query.max-memory-per-node=1GB
discovery.uri=http://ip_地址:8080

但是如果你用一台機器進行測試,那么這一台機器將會即作為coordinator,也作為worker。配置文件將會如下所示:
coordinator=true
node-scheduler.include-coordinator=true
http-server.http.port=8080
query.max-memory=5GB
query.max-memory-per-node=1GB
discovery-server.enabled=true
discovery.uri=http://ip_地址: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一定不能以“/“結尾。

vim etc/jvm.config  #JVM 配置:JVM的命令行選項

-server
-Xmx4G
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+UseGCOverheadLimit
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:+ExitOnOutOfMemoryError

vim etc/log.properties  #日志級別

com.facebook.presto=INFO

vim etc/node.properties  #節點屬性:每個節點的環境配置信息

node.environment=production  #集群名稱。所有在同一個集群中的Presto節點必須擁有相同的集群名稱
node.id=ffffffff-ffff-ffff-ffff-ffffffffffff  #每個Presto節點的唯一標示。每個節點的node.id都必須是唯一的。在Presto進行重啟或者升級過程中每個節點的node.id必須保持不變。如果在一個節點上安裝多個Presto實例(例如:在同一台機器上安裝多個Presto節點),那么每個Presto節點必須擁有唯一的node.id
node.data-dir=/data/bigdata/presto_data  #數據存儲目錄的位置,最好獨立存放,便於presto升級

vim etc/catalog/jmx.properties  #Catalog屬性:configuration forConnectors(數據源)的配置信息

connector.name=jmx

vim etc/catalog/mysql.properties  #數據源,連接mysql

connector.name=mysql
connection-url=jdbc:mysql://mysql_ip:3336
connection-user=root
connection-password=xxxxx

6.運行Presto

  后台運行:cd /data/bigdata/presto/bin && ./launcher start

  前台運行:cd /data/bigdata/presto/bin && ./launcher run

  web監控界面:http://ip_地址:8080/ui/

7.部署presto client:https://prestodb.github.io/docs/current/installation/cli.html

  下載:wget https://repo1.maven.org/maven2/com/facebook/presto/presto-cli/0.220/presto-cli-0.220-executable.jar

  重命名:cp -r presto-cli-0.220-executable.jar presto-cli

  賦予執行權限:chmod +x presto-cli

  連接源數據mysql:

/data/bigdata/presto-cli --server localhost:8080 --catalog mysql --schema moodscat

參數說明:
--catalog:指定連接數據源,在etc/catalog/mysql.properties中的connector.name指定
--schema:指定連接這個數據實例的具體某個數據庫

8.執行數據查詢:

 

推薦用法:

連接全局庫:presto-cli --server localhost:8080

查詢:

select * from 文件名.庫名.表明;

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM