2021-05-12 14:32:11
Presto 環境部署文件
2020-06-16 17:04:42
1. Presto簡介
Facebook presto是什麼,繼Facebook建立了HIVE神器後的又一以SQL語言作為介面的分散式實時查詢引擎,可以對PB級的資料進行快速的互動式查詢。它支援標準的ANSI SQL.包含查詢,聚合,JOIN以及視窗函數等。除了Facebook這個創造都在使用外,國內像京東,美團等也都有廣泛的使用。對於英文不好的同學可以存取由京東建立的這個中文翻譯站點:http://prestodb-china.com/,只是這個版本才0.100,現在最新版已到0.176。
2. Presto結構
Coordinator: 接入介面,解析SQL語句,生成查詢計劃,任務分發等。
Worker:負責與資料的讀寫互動以及執行查詢計劃
值得一提的是Presto以外掛形式對資料儲存層進行了抽象,它叫做聯結器,如:Cassandra Connector,Hive Connector,MySQL Connector等,可以看出它不僅預設提供了Hadoop相關元件的聯結器,還提供了Mysql, Postgresql等RDBMS的聯結器,同時也可以方便的通過自定義聯結器開發,達到適用於不同資料儲存層的擴充套件目的。
Presto提供以下幾種型別的使用介面:
Presto命令列
JDBC驅動
3.安裝Presto
3.1 環境要求
Linux or Mac OS X
Java 8, 64-bit
主機IP | coordinator | worker |
---|---|---|
10.0.10.82 | true | true |
10.0.10.83 | false | true |
10.0.10.85 | false | true |
10.0.10.84 | false | true |
10.0.10.86 | false | true |
3.2 下載presto
下載presto-server-0.175.tar.gz包,下載地址: > https://prestodb.io/docs/current/installation/deployment.html
解壓:
$ tar xzvf presto-server-0.175.tar.gz
$ ln -s presto-server-0.175 presto
$ cd presto
$ mkdir prestoData
Presto需要一個用於儲存紀錄檔、本地後設資料等的資料目錄。建議在安裝目錄的外面建立一個資料目錄。這樣方便Presto進行升級。
3.3 設定Presto
3.3.0 目錄結構
在安裝目錄中建立一個etc目錄(mkdir etc),所有的組態檔包含在 presto/etc/ 目錄下目錄結構如下。
presto/etc/
├── catalog
│ ├── hive.properties
│ └── jmx.properties
├── config.properties
├── jvm.config
├── log.properties
└── node.properties
在這個etc目錄中放入以下設定資訊:
node.properties : 環境變數設定,每個節點特定設定
jvm.config : Java虛擬機器的命令列選項
log.properties: 允許你根據不同的紀錄檔結構設定不同的紀錄檔級別
config.properties : Presto 服務設定
catalog目錄 : 每個連線者設定(data sources)
3.3.1 Node Properties 設定
節點屬性組態檔:etc/node.properties包含針對於每個節點的特定的設定資訊。 一個節點就是在一台機器上安裝的Presto範例。 這份組態檔一般情況下是在Presto第一次安裝的時候,由部署系統建立的。 一個etc/node.properties組態檔至少包含如下設定資訊:
node.environment=test
node.id=ffffffff-ffff-ffff-ffff-ffffffffff-01
node.data-dir=/opt/software/presto/prestoData
針對上面的設定資訊描述如下:
node.environment: 叢集名稱。所有在同一個叢集中的Presto節點必須擁有相同的叢集名稱。
node.id: 每個Presto節點的唯一標示。每個節點的node.id都必須是唯一的。在Presto進行重新啟動或者升級過程中每個節點的node.id必須保持不變。如果在一個節點上安裝多個Presto範例(例如:在同一台機器上安裝多個Presto節點),那麼每個Presto節點必須擁有唯一的node.id。
node.data-dir: 資料儲存目錄的位置(作業系統上的路徑)。Presto將會把日期和資料和紀錄檔儲存在這個目錄下。
3.3.2 JVM 設定
JVM組態檔,etc/jvm.config,包含一系列在啟動JVM的時候需要使用的命令列選項。
這份組態檔的格式是:一系列的選項,每行設定一個單獨的選項。由於這些選項不在shell命令中使用。 因此即使將每個選項通過空格或者其他的分隔符分開,java程式也不會將這些選項分開,而是作為一個命令列選項處理。
詳細設定如下:
-server
-Xmx6G
-XX:+UseConcMarkSweepGC
-XX:+ExplicitGCInvokesConcurrent
-XX:+CMSClassUnloadingEnabled
-XX:+AggressiveOpts
-XX:+HeapDumpOnOutOfMemoryError
-XX:OnOutOfMemoryError=kill -9 %p
-XX:ReservedCodeCacheSize=150M
3.3.3 Config Properties 設定
Presto的組態檔:etc/config.properties 包含了Presto server的所有設定資訊。 每個Presto server既是一個coordinator也是一個worker。但是在大型叢集中,處於效能考慮,建議單獨用一台機器作為 coordinator。
coordinator=true
node-scheduler.include-coordinator=true
http-server.http.port=9098
discovery-server.enabled=true
discovery.uri=http://10.0.10.82:9098
以下是最基本的worker設定:
coordinator=false
http-server.http.port=9098
discovery-server.enabled=true
discovery.uri=http://10.0.10.82:9098
對設定項解釋如下:
coordinator:
指定是否運維Presto範例作為一個coordinator(接收來自用戶端的查詢情切管理每個查詢的執行過程)。
node-scheduler.include-coordinator:
是否允許在coordinator服務中進行排程工作。對於大型的叢集,在一個節點上的Presto server即作為coordinator又作為worke將會降低查詢效能。因為如果一個伺服器作為worker使用,那麼大部分的資源都不會被worker占用,那麼就不會有足夠的資源進行關鍵任務排程、管理和監控查詢執行。
http-server.http.port:
指定HTTP server的埠。Presto 使用 HTTP進行內部和外部的所有通訊。
task.max-memory=1GB:
一個單獨的任務使用的最大記憶體(一個查詢計劃的某個執行部分會在一個特定的節點上執行)。 這個設定引數限制的GROUPBY語句中的Group的數目、JOIN關聯中的右關聯表的大小、ORDER BY語句中的行數和一個視窗函數中處理的行數。該引數應該根據並行查詢的數量和查詢的複雜度進行調整。如果該引數設定的太低,很多查詢將不能執行;但是如果設定的太高將會導致JVM把記憶體耗光。
discovery-server.enabled:
Presto 通過Discovery服務來找到叢集中所有的節點。為了能夠找到叢集中所有的節點,每一個Presto範例都會在啟動的時候將自己註冊到discovery服務。Presto為了簡化部署,並且也不想再增加一個新的服務進程,Prestocoordinator可以執行一個內嵌在coordinator 裡面的Discovery 服務。這個內嵌的Discovery 服務和Presto共用HTTP server並且使用同樣的埠。
discovery.uri:
Discovery server的URI。由於啟用了Presto coordinator內嵌的Discovery 服務,因此這個uri就是Prestocoordinator的uri。修改example.net:9098,根據你的實際環境設定該URI。注意:這個URI一定不能以“/“結尾。
3.3.4 log.properties 設定
紀錄檔組態檔:etc/log.properties。在這個組態檔中允許你根據不同的紀錄檔結構設定不同的紀錄檔級別。每個logger都有一個名字(通常是使用logger的類的全標示類名). Loggers通過名字中的“.“來表示層級和整合關???。 (像java裡面的包). 如下面的log設定資訊:
com.facebook.presto=INFO
紀錄檔級別分為:DEBUG, INFO, WARN and ERROR。
3.3.5 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的註冊。
a.建立etc/catalog/jmx.properties檔案,檔案中的內容如下,完成在jmxcatalog上掛載一個jmxconnector:
connector.name=jmx
b.建立etc/catalog/hive.properties檔案,包含資訊如下:
connector.name=hive-hadoop2
hive.metastore.uri=thrift://192.168.1.234:9083
hive.config.resources=/home/hadoop/software/jise/jise-server/conf/hdfs-site.xml/core-site.xml,/home/hadoop/software/jise/jise-server/conf/hdfs-site.xml/hdfs-site.xml
hive.allow-drop-table=true
設定項解釋:
hive.metastore.uri 內容對應 hive-site.xml 中新增的hive.metastore.uris設定:
<property>
<name>hive.metastore.local</name>
<value>false</value>
</property>
<property>
<name>hive.metastore.uris</name>
<value>thrift://192.168.1.234:9083</value>
</property>
hive.config.resources 對應hdfs 的 core-site.xml 和 hdfs-site.xml 檔案
4.啟動停止登入
4.1 啟動
啟動presto 前必須先啟動 hive用如下命令啟動:
$ bin/hive --service metastore &
執行 presto在安裝目錄的bin/launcher檔案,就是啟動指令碼。 Presto可以使用如下命令作為一個後台進程啟動:
$ presto/bin/launcher start
也可以在前台執行, 可檢視具體的紀錄檔
$ presto/bin/launcher run
檢視允許狀態
$ presto/bin/launcher status
4.2 停止
停止服務進程命令
$ presto/bin/laucher stop
4.3 登入
使用 presto 命令列介面登入,Presto CLI為使用者提供了一個用於查詢的可互動終端視窗。CLI是一個可執行 JAR檔案, 這也就意味著你可以像UNIX終端視窗一樣來使用CLI。
下載 presto-cli-0.175-executable.jar 連線地址為
https://repo1.maven.org/maven2/com/facebook/presto/presto-cli/0.176/presto-cli-0.176-executable.jar
,重名名為 presto 放到presto/bin/ 目錄下, 使用 chmod +x 命令設定可執行許可權,然後執行:
$ ./presto --server 10.0.10.82:9098 --catalog hive --schema default
presto:default> show tables;
Table
------------
cars
hb_bvpost
hb_bvpost2
hb_bvuser
hb_bvuser2
mycars
test
(7 rows)
Query 20170518_033102_00043_hj388, FINISHED, 2 nodes
Splits: 18 total, 18 done (100.00%)
0:00 [7 rows, 171B] [35 rows/s, 859B/s]
presto:default> select * from system.runtime.nodes; # 檢視當前叢集各個節點狀態
node_id | http_uri | node_version | coordinator | state
------------------------------------------+------------------------+--------------+-------------+--------
ffffffff-ffff-ffff-ffff-ffffffffffff-s82 | http://10.0.10.82:9098 | 0.175 | true | active
ffffffff-ffff-ffff-ffff-ffffffffffff-s83 | http://10.0.10.83:9098 | 0.175 | false | active
ffffffff-ffff-ffff-ffff-ffffffffffff-s85 | http://10.0.10.85:9098 | 0.175 | false | active
ffffffff-ffff-ffff-ffff-ffffffffffff-s84 | http://10.0.10.84:9098 | 0.175 | false | active
ffffffff-ffff-ffff-ffff-ffffffffffff-s86 | http://10.0.10.86:9098 | 0.175 | false | active
(5 rows)
Query 20170518_033113_00044_hj388, FINISHED, 2 nodes
Splits: 17 total, 17 done (100.00%)
0:01 [5 rows, 370B] [8 rows/s, 645B/s]
presto:default>
本文永久更新連結地址:http://www.linuxidc.com/Linux/2017-10/147625.htm
相關文章