Presto 0.217 部署(單節點與分佈式)

一、環境:

操作系統: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/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章