比hive快10倍的大數據查詢利器presto部署


目前最流行的大數據查詢引擎非hive莫屬,它是基於MR的類SQL查詢工具,會把輸入的查詢SQL解釋為MapReduce,能極大的降低使用大數據查詢的門檻, 讓一般的業務人員也可以直接對大數據進行查詢。但因其基於MR,運行速度是一個弊端,通常運行一個查詢需等待很久才會有結果。對於此情況,創造了hive的facebook不負眾望,創造了新神器---presto,其查詢速度平均比hive快10倍,現在就來部署體驗一下吧。

一、 准備工作

操作系統: centos7

JAVA:         JDK8(155版本及以上),我使用的是jdk1.8.0_191

presto server:presto-server-0.221.tar.gz  

presto client: presto-cli-0.221-executable.jar

注:

a)本次是基於hive來進行部署使用,因此相關節點已部署hadoop、hive;

b)  presto官網地址為https://prestodb.github.io   presto server、client及jdbc jar均可以從官網下載。

二、 部署階段

1.  將jdk、 presto server  presto client 上傳至各服務器上

jdk包我上傳至/usr/local 目錄,並解壓、配置軟鏈接,配置環境變量,如不配置環境變量,也可在launcher里修改

presto server及client上傳至 /opt/presto下,同時解壓server包

 

2.  各節點信息如下

其中包含一個Coordinator節點及8個worker節點

ip 節點角色 節點名
192.168.11.22 Coordinator node22
192.168.11.50 Worker node50
192.168.11.51 Worker node51
192.168.11.52 Worker node52
192.168.11.53 Worker node53
192.168.11.54 Worker node54
192.168.11.55 Worker node55
192.168.11.56 Worker node56
192.168.11.57  Worker node57

 3.  創建presto數據及日志目錄

以下操作各節點均相同,只有配置文件處需根據各節點情況,對應修改

mkdir -p /data/presto

4.  創建etc目錄

cd  /opt/presto/presto-server-0.221
mkdir etc

5. 創建所需的配置文件

1)創建並配置  config.properties

如果是Coordinator節點,建議如下配置(內存大小根據實際情況修改)

vim   config.properties
## 添加如下內容
coordinator=true datasources=hive node-scheduler.include-coordinator=false http-server.http.port=8080 query.max-memory=80GB query.max-memory-per-node=10GB query.max-total-memory-per-node=10GB discovery-server.enabled=true discovery.uri=http://192.168.11.22:8080

如果是worker 節點:

vim config.properties ## 添加如下內容
coordinator=false #datasources=hive #node-scheduler.include-coordinator=false http-server.http.port=8080 query.max-memory=80GB query.max-memory-per-node=10GB query.max-total-memory-per-node=10GB #discovery-server.enabled=true discovery.uri=http://192.168.11.22:8080

參數說明:

coordinator: 是否運行該實例為coordinator(接受client的查詢和管理查詢執行)。
node-scheduler.include-coordinator:coordinator是否也作為work。對於大型集群來說,在coordinator里做worker的工作會影響查詢性能。
http-server.http.port:指定HTTP端口。Presto使用HTTP來與外部和內部進行交流。
query.max-memory: 查詢能用到的最大總內存
query.max-memory-per-node: 查詢能用到的最大單結點內存
discovery-server.enabled: Presto使用Discovery服務去找到集群中的所有結點。每個Presto實例在啟動時都會在Discovery服務里注冊。這樣可以簡化部署, 不需要額外的服務,Presto的coordinator內置一個Discovery服務。也是使用HTTP端口。
discovery.uri: Discovery服務的URI。將192.168.11.22:8080替換為coordinator的host和端口。這個URI不能以斜杠結尾,這個錯誤需特別注意,不然會報404錯誤。
另外還有以下屬性:
jmx.rmiregistry.port: 指定JMX RMI的注冊。JMX client可以連接此端口
jmx.rmiserver.port: 指定JXM RMI的服務器。可通過JMX監聽。

 

2)  配置 jvm.config

vim jvm.config 
# 添加如下內容
-server -Xmx20G -XX:+UseG1GC -XX:G1HeapRegionSize=32M -XX:+UseGCOverheadLimit -XX:+ExplicitGCInvokesConcurrent -XX:+HeapDumpOnOutOfMemoryError -XX:OnOutOfMemoryError=kill -9 %p

 JVM配置文件包含啟動Java虛擬機時的命令行選項。格式是每一行是一個命令行選項。此文件數據是由shell解析,所以選項中包含空格或特殊字符會被忽略。

3) 配置log.properties

vim log.properties
# 添加如下內容
com.facebook.presto=INFO

日志級別有四種,DEBUG, INFO, WARN and ERROR

 4)  配置node.properties

vim  node.properties

## 添加如下內容
node.environment=presto_ocean
node.id=node22
node.data-dir=/data/presto

參數說明:

node.environment: 環境名字,Presto集群中的結點的環境名字都必須是一樣的。

node.id: 唯一標識,每個結點的標識都必須是為一的。就算重啟或升級Presto都必須還保持原來的標識。

node.data-dir: 數據目錄,Presto用它來保存log和其他數據

5)  配置catalog及hive.properties

創建 catalog目錄,因本次使用的hive,因此在此目錄下創建hive.properties 並配置對應參數

mkdir  catalog

vim hive.properties
# 添加如下內容

connector.name=hive-hadoop2
hive.metastore.uri=thrift://192.168.11.22:9083
hive.config.resources=/opt/hadoop/hadoop-3.2.0/etc/hadoop/core-site.xml,/opt/hadoop/hadoop-3.2.0/etc/hadoop/hdfs-site.xml
hive.allow-drop-table=true

 至此 相關配置文件配置完成。

 

三、 啟動presto-server並連接

進入/opt/presto/presto-server-0.221/bin,有launcher命令

如果需要配置JAVA等環境變量也可以在此文件里修改。在此處修改的好處在於可以與不同版本的jdk共存 而不影響原有業務。

1. 啟動presto-server

./launcher start

此時如果/data/presto/var日志生成,且無報錯信息,代表啟動正常。

2. presto-cli 連接

把下載的jar包:presto-cli-0.221-executable.jar 重命名為:presto 並且賦予權限

ln -s presto-cli-0.221-executable.jar   presto
chmod +x presto
./presto --server localhost:8080 --catalog hive --schema default

 此時可以查看到hive里的庫及表

 

 

 3. 查看web界面

登錄http://192.168.11.22:8080/ui/可查看整體狀態。

 

至此,presto部署就完成了。其與hive的性能對比及使用建議等后續有機會再介紹。

 

耿小廚已開通個人微信公眾號,想進一步溝通或想了解其他文章的同學可以關注我

 

我的博客即將同步至騰訊雲+社區,邀請大家一同入駐:https://cloud.tencent.com/developer/support-plan?invite_code=33ja5r1x478ks

 


免責聲明!

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



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