目前最流行的大數據查詢引擎非hive莫屬,它是基於MR的類SQL查詢工具,會把輸入的查詢SQL解釋為MapReduce,能極大的降低使用大數據查詢的門檻, 讓一般的業務人員也可以直接對大數據進行查詢。但因其基於MR,運行速度是一個弊端,通常運行一個查詢需等待很久才會有結果。對於此情況,創造了hive ...
目前最流行的大數據查詢引擎非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