一、環境:
操作系統:Linux CentOS Linux release 7.3.1611
Presto版本:0.217
Hadoop版本:3.1.1
HIve 版本:3.1.0
二、安裝Presto(單機版)
1. 解壓到指定目錄
tar -xzvf presto-server-0.217.tar.gz -C /data/app
2.配置Presto
2.1 在/data/app/presto-server-0.217 目錄下創建配置文件目錄etc
mkdir -p /data/app/presto-server-0.217/etc
2.2 創建日誌目錄
mkdir -p /data/app/presto-server-0.217/log
2.3 配置node.properties文件
vim node.properties
#集羣名稱。所有在同一個集羣中的Presto節點必須擁有相同的集羣名稱。
node.environment=production
#每個Presto節點的唯一標示。每個節點的node.id都必須是唯一的。在Presto進行重啓或者升級過程中每個節點的node.id必須保持不變。如果在一個節點上安裝多個Presto實例(例如:在同一臺機器上安裝多個Presto節點),那麼每個Presto節點必須擁有唯一的node.id。
node.id=ffffffff-ffff-ffff-ffff-ffffffffffff
# 數據存儲目錄的位置(操作系統上的路徑)。Presto將會把日期和數據存儲在這個目錄下。
node.data-dir=/data/app/presto-server-0.217/data
2.4 配置jvm.config文件
-server
-Xmx16G
-XX:+UseConcMarkSweepGC
-XX:+ExplicitGCInvokesConcurrent
-XX:+CMSClassUnloadingEnabled
-XX:+AggressiveOpts
-XX:+HeapDumpOnOutOfMemoryError
-XX:OnOutOfMemoryError=kill -9 %p
-XX:ReservedCodeCacheSize=150M
由於OutOfMemoryError將會導致JVM處於不一致狀態,所以遇到這種錯誤的時候我們一般的處理措施就是將dump headp中的信息(用於debugging),然後強制終止進程。
Presto會將查詢編譯成字節碼文件,因此Presto會生成很多class,因此我們我們應該增大Perm區的大小(在Perm中主要存儲class)並且要允許Jvm class unloading。
2.5 配置config.properties
coordinator=true
node-scheduler.include-coordinator=true
http-server.http.port=9999
query.max-memory=5GB
query.max-memory-per-node=1GB
query.max-total-memory-per-node=2GB
discovery-server.enabled=true
discovery.uri=http://10.70.19.52:9999
2.6 配置log.properties
com.facebook.presto=INFO
2.7 配置 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來訪問這張表。
通過在etc/catalog目錄下創建catalog屬性文件來完成catalogs的註冊。
例如:
如果要創建jmx數據源的連接器,可以創建一個etc/catalog/jmx.properties文件,文件中的內容如下,完成在jmxcatalog上掛載一個jmxconnector:
connector.name=jmx
如果要創建hive數據源的連接器,可以創建一個etc/catalog/hive.properties文件,文件中的內容如下,完成在hivecatalog上掛載一個hiveconnector:
#註明hadoop的版本,我安裝的是hadoop3,但是實際測試寫hadoop2也可以用
connector.name=hive-hadoop2
#hive-site中配置的地址
hive.metastore.uri=thrift://master01:9083
#hadoop的配置文件路徑
hive.config.resources=/etc/hadoop/3.0.1.0-187/0/core-site.xml,/etc/hadoop/3.0.1.0-187/0/hdfs-site.xml
三、啓動Presto
#後臺啓動Presto進程,並重定向日誌
nohup ./launcher run > /data/app/presto-server-0.217/log/server.log &
##其他操作命令
launcher stop
launcher --help
launcher status
四、驗證Presto
1.運行presto-cli
#下載presto-cli-0.217-executable.jar
https://prestodb.github.io/docs/current/installation/cli.html
#文件下載後,重名名爲 presto
#賦執行權限
chmod a+x presto
2.完成測試presto的先決條件
#使用beeline連接Hive
beeline -u jdbc:hive2://10.70.19.170:10000 -n root
use defalut;
#創建測試表
create table t1(
id int
,name string
,hobby array<string>
,add map<String,string>
)
row format delimited
fields terminated by ','
collection items terminated by '-'
map keys terminated by ':'
;
#查看錶是否成功創建
show tables;
3.啓動Presto-cli(9999端口要與config的discover.uri端口一致)
3.1 執行 ./presto --server 192.168.30.252:9999 --catalog hive --schema default
#--catalog hive 是指使用hive連接器
#--schema:指操作hive的哪個庫
3.2 執行show
show tables;
與hive中查詢的一致,說明presto部署成功可以使用
Presto多節點安裝配置
架構和集羣分配
我們在配置Presto多集羣時,首先就是要規劃架構和集羣分配。
一般來說 需要一個coordinator和多個worker。
我們的機子如下
則分配如下:
hadoop1 (192.169.30.250):coordinator調度節點
hadoop2 (192.169.30.251):worker節點
hadoop3 (192.169.30.252):worker節點
下載解壓
根據單點安裝時一樣的步驟每一臺機子進行下載解壓。(也可以把單點時配置好的進行打包上傳到其他機子解壓)
配置修改
根據每個節點的定位進行配置創建和修改。
因爲大部分配置一樣,所以我們把單點的配置打包下載分別上傳到其他節點。
需要修改的配置如下:
1.Node Properties
內容如下
node.environment=production(必須全部小寫)
node.id=ffffffff-ffff-ffff-ffff-ffffffffffff01
node.data-dir=/var/presto/data
這裏每個節點的node.id需要不一樣,比如在後面加上001、002等
2.Config Properties文件(coordinator節點)
coordinator調度節點使用命令vim 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://192.168.30.217:8080
discovery.uri與coordinator調度節點的ip對應。
調度節點只負責調度時node-scheduler.include-coordinator設置爲false
調度節點也作爲worker時node-scheduler.include-coordinator設置爲true
worker節點使用命令,vim etc/config.properties
coordinator=false
http-server.http.port=8080
query.max-memory=50GB
query.max-memory-per-node=1GB
discovery.uri=http://192.168.30.217:8080
啓動方式與單點的一樣,每臺都啓動起來即可使用。
管理
presto提供了Web的管理界面,可以查看多節點的情況。
根據端口來訪問,比如8080,則訪問
http://192.168.30.252:8080/