
目前最流行的大數(shù)據(jù)查詢引擎非hive莫屬,它是基于MR的類SQL查詢工具,會把輸入的查詢SQL解釋為MapReduce,能極大的降低使用大數(shù)據(jù)查詢的門檻, 讓一般的業(yè)務(wù)人員也可以直接對大數(shù)據(jù)進(jìn)行查詢。但因其基于MR,運行速度是一個弊端,通常運行一個查詢需等待很久才會有結(jié)果。對于此情況,創(chuàng)造了hive的facebook不負(fù)眾望,創(chuàng)造了新神器---presto,其查詢速度平均比hive快10倍,現(xiàn)在就來部署體驗一下吧。
一、 準(zhǔn)備工作
操作系統(tǒng): centos7
JAVA: JDK8(155版本及以上),我使用的是jdk1.8.0_191
presto server:presto-server-0.221.tar.gz
presto client: presto-cli-0.221-executable.jar
注:
1、本次是基于hive來進(jìn)行部署使用,因此相關(guān)節(jié)點已部署hadoop、hive。
2、presto官網(wǎng)地址為https://prestodb.github.io presto server、client及jdbc jar均可以從官網(wǎng)下載。
二、 部署階段
1、 將jdk、 presto server presto client 上傳至各服務(wù)器上
jdk包我上傳至/usr/local 目錄,并解壓、配置軟鏈接,配置環(huán)境變量,如不配置環(huán)境變量,也可在launcher里修改。

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

2、各節(jié)點信息如下
其中包含一個Coordinator節(jié)點及8個worker節(jié)點。
ip | 節(jié)點角色 | 節(jié)點名 |
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、創(chuàng)建presto數(shù)據(jù)及日志目錄
以下操作各節(jié)點均相同,只有配置文件處需根據(jù)各節(jié)點情況,對應(yīng)修改。
4、創(chuàng)建etc目錄
cd /opt/presto/presto-server-0.221
mkdir etc
5、創(chuàng)建所需的配置文件

(1)創(chuàng)建并配置 config.properties
如果是Coordinator節(jié)點,建議如下配置(內(nèi)存大小根據(jù)實際情況修改)
vim config.properties
## 添加如下內(nèi)容
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 節(jié)點:
vim config.properties ## 添加如下內(nèi)容
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
參數(shù)說明:
coordinator:是否運行該實例為coordinator(接受client的查詢和管理查詢執(zhí)行)。
node-scheduler.include-coordinator:coordinator是否也作為work。對于大型集群來說,在coordinator里做worker的工作會影響查詢性能。
http-server.http.port:指定HTTP端口。Presto使用HTTP來與外部和內(nèi)部進(jìn)行交流。
query.max-memory: 查詢能用到的最大總內(nèi)存
query.max-memory-per-node: 查詢能用到的最大單結(jié)點內(nèi)存
discovery-server.enabled: Presto使用Discovery服務(wù)去找到集群中的所有結(jié)點。每個Presto實例在啟動時都會在Discovery服務(wù)里注冊。這樣可以簡化部署, 不需要額外的服務(wù),Presto的coordinator內(nèi)置一個Discovery服務(wù)。也是使用HTTP端口。
discovery.uri: Discovery服務(wù)的URI。將192.168.11.22:8080替換為coordinator的host和端口。這個URI不能以斜杠結(jié)尾,這個錯誤需特別注意,不然會報404錯誤。
另外還有以下屬性:
jmx.rmiregistry.port: 指定JMX RMI的注冊。JMX client可以連接此端口
jmx.rmiserver.port: 指定JXM RMI的服務(wù)器??赏ㄟ^JMX監(jiān)聽。
(2)配置 jvm.config
vim jvm.config
# 添加如下內(nèi)容
-server
-Xmx20G
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+UseGCOverheadLimit
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:OnOutOfMemoryError=kill -9 %p
JVM配置文件包含啟動Java虛擬機(jī)時的命令行選項。格式是每一行是一個命令行選項。此文件數(shù)據(jù)是由shell解析,所以選項中包含空格或特殊字符會被忽略。
(3)配置log.properties
vim log.properties
# 添加如下內(nèi)容
com.facebook.presto=INFO
日志級別有四種,DEBUG, INFO, WARN and ERROR。
(4)配置node.properties
vim node.properties
## 添加如下內(nèi)容
node.environment=presto_ocean
node.id=node22
node.data-dir=/data/presto
參數(shù)說明:
node.environment: 環(huán)境名字,Presto集群中的結(jié)點的環(huán)境名字都必須是一樣的。
node.id: 唯一標(biāo)識,每個結(jié)點的標(biāo)識都必須是為一的。就算重啟或升級Presto都必須還保持原來的標(biāo)識。
node.data-dir: 數(shù)據(jù)目錄,Presto用它來保存log和其他數(shù)據(jù)
(5)配置catalog及hive.properties
創(chuàng)建 catalog目錄,因本次使用的hive,因此在此目錄下創(chuàng)建hive.properties 并配置對應(yīng)參數(shù)
mkdir catalog
vim hive.properties
# 添加如下內(nèi)容
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
至此 相關(guān)配置文件配置完成。
三、 啟動presto-server并連接
進(jìn)入/opt/presto/presto-server-0.221/bin,有l(wèi)auncher命令。

如果需要配置JAVA等環(huán)境變量也可以在此文件里修改。在此處修改的好處在于可以與不同版本的jdk共存 而不影響原有業(yè)務(wù)。
1、啟動presto-server
此時如果/data/presto/var日志生成,且無報錯信息,代表啟動正常。
2、presto-cli 連接
把下載的jar包:
presto-cli-0.221-executable.jar 重命名為:presto 并且賦予權(quán)限。
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/可查看整體狀態(tài)。??

至此,presto部署就完成了。其與hive的性能對比、工作原理及使用建議等后續(xù)有機(jī)會再介紹。