Presto學習-presto的安裝

Xlucas發表於2017-11-08

presto是一個SQL on Hadoop 的產品,現在我們瞭解一下presto的安裝過程

我們使用的版本是presto-server-0.187.tar.gz

1、先解壓

tar -zxvf presto-server-0.187.tar.gz 

解壓以後再目錄下面的結構是

[root@druid presto-server-0.187]# ll
total 216
drwxr-xr-x.  3 root root   4096 Oct 20 03:17 bin
drwxr-xr-x.  2 root root  12288 Oct 20 03:17 lib
-rw-r--r--.  1 root root 191539 Oct 20 03:17 NOTICE
drwxr-xr-x. 26 root root   4096 Oct 20 03:17 plugin
-rw-r--r--.  1 root root    119 Oct 20 03:17 README.txt

2、建立目錄
在安裝目錄中建立一個etc目錄, 在這個etc目錄中放入以下配置檔案:
2.1、config.properties :Presto 服務配置
2.2、node.properties :環境變數配置,每個節點特定配置
2.3、jvm.config :Java虛擬機器的命令列選項
2.4、log.properties: 允許你根據不同的日誌結構設定不同的日誌級別
2.5、catalog目錄 :每個連線者配置(data sources)

3、每個檔案的配置資訊
3、1 config.properties 檔案修改
包含了Presto server的所有配置資訊。 每個Presto server既是一個coordinator也是一個worker。 但是在大型叢集中,處於效能考慮,建議單獨用一臺機器作為 coordinator,一個coordinator的etc/config.properties應該至少包含以下資訊:
1. coordinator:指定是否運維Presto例項作為一個coordinator(接收來自客戶端的查詢情切管理每個查詢的執行過程)
2. node-scheduler.include-coordinator:是否允許在coordinator服務中進行排程工作, 對於大型的叢集,在一個節點上的Presto server即作為coordinator又作為worke將會降低查詢效能。因為如果一個伺服器作為worker使用,那麼大部分的資源都會被worker佔用,那麼就不會有足夠的資源進行關鍵任務排程、管理和監控查詢執行
3. http-server.http.port:指定HTTP server的埠。Presto 使用 HTTP進行內部和外部的所有通訊
4. task.max-memory=1GB:一個單獨的任務使用的最大記憶體 (一個查詢計劃的某個執行部分會在一個特定的節點上執行)。 這個配置引數限制的GROUP BY語句中的Group的數目、JOIN關聯中的右關聯表的大小、ORDER BY語句中的行數和一個視窗函式中處理的行數。 該引數應該根據併發查詢的數量和查詢的複雜度進行調整。如果該引數設定的太低,很多查詢將不能執行;但是如果設定的太高將會導致JVM把記憶體耗光
5. discovery-server.enabled:Presto 通過Discovery 服務來找到叢集中所有的節點。為了能夠找到叢集中所有的節點,每一個Presto例項都會在啟動的時候將自己註冊到discovery服務。Presto為了簡化部署,並且也不想再增加一個新的服務程式,Presto coordinator 可以執行一個內嵌在coordinator 裡面的Discovery 服務。這個內嵌的Discovery 服務和Presto共享HTTP server並且使用同樣的埠
6. discovery.uri:Discovery server的URI。由於啟用了Presto coordinator內嵌的Discovery 服務,因此這個uri就是Presto coordinator的uri。注意:這個URI一定不能以“/“結尾
我這裡一臺機器進行測試,那麼這一臺機器將會即作為coordinator,也作為worker。配置檔案將會如下所示
[root@druid etc]# cat config.properties
coordinator=true
node-scheduler.include-coordinator=true
http-server.http.port=8001
query.max-memory=1GB
discovery-server.enabled=true
discovery.uri=http://192.168.18.145:8001

3、2 jvm.config 檔案修改
包含一系列在啟動JVM的時候需要使用的命令列選項。這份配置檔案的格式是:一系列的選項,每行配置一個單獨的選項。由於這些選項不在shell命令中使用。 因此即使將每個選項通過空格或者其他的分隔符分開,java程式也不會將這些選項分開,而是作為一個命令列選項處理,資訊如下:
[root@druid etc]# cat jvm.config
-server
-Xmx1G
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+UseGCOverheadLimit
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:+ExitOnOutOfMemoryError

3、3 log.properties 檔案修改
這個配置檔案中允許你根據不同的日誌結構設定不同的日誌級別。每個logger都有一個名字(通常是使用logger的類的全標示類名). Loggers通過名字中的“.“來表示層級和整合關係,資訊如下:
[root@druid etc]# cat log.properties
com.facebook.presto=INFO

3、4 node.properties 檔案修改
包含針對於每個節點的特定的配置資訊。 一個節點就是在一臺機器上安裝的Presto例項,etc/node.properties配置檔案至少包含如下配置資訊
1. node.environment: 叢集名稱, 所有在同一個叢集中的Presto節點必須擁有相同的叢集名稱
2. node.id: 每個Presto節點的唯一標示。每個節點的node.id都必須是唯一的。在Presto進行重啟或者升級過程中每個節點的node.id必須保持不變。如果在一個節點上安裝多個Presto例項(例如:在同一臺機器上安裝多個Presto節點),那麼每個Presto節點必須擁有唯一的node.id
3. node.data-dir: 資料儲存目錄的位置(作業系統上的路徑), Presto將會把日期和資料儲存在這個目錄下
[root@druid etc]# cat node.properties
node.environment=presto1
node.id=presto1
node.data-dir=/opt/presto/data

3、5 catalog 目錄增加檔案
配置catalog目錄下面的檔案
通過在etc/catalog目錄下建立catalog屬性檔案來完成catalogs的註冊。 例如:可以先建立一個etc/catalog/hive.properties檔案,檔案中的內容如下,完成在hive上掛載一個hiveconnector
[root@druid catalog]# pwd
/opt/presto-server-0.187/etc/catalog
[root@druid catalog]# cat hive.properties
connector.name=hive-hadoop2
hive.metastore.uri=thrift://192.168.18.145:9083

4、執行presto

4、1 在安裝目錄的bin/launcher檔案,就是啟動指令碼。Presto可以使用如下命令作為一個後臺程式啟動:
bin/launcher start

4、2 也可以在前臺執行, 可檢視具體的日誌
bin/launcher run

4、3 停止服務程式命令
bin/laucher stop

4、4 檢視程式: ps -aux|grep PrestoServer 或 jps

5、使用客戶端
1、 下載 presto-cli-0.188-executable.jar:Presto CLI為使用者提供了一個用於查詢的可互動終端視窗。CLI是一個 可執行 JAR檔案, 這也就意味著你可以像UNIX終端視窗一樣來使用CL
https://repo1.maven.org/maven2/com/facebook/presto/presto-cli/0.188/presto-cli-0.188-executable.jar

2、檔案下載後, 使用 chmod +x 命令設定可執行許可權

這裡需要先啟動 hive –service metastore

命令:./presto-cli-0.188-executable.jar –server 192.168.18.145:8001 –catalog hive –schema default
下面就是presto的操作了

presto:default> show tables;
 Table 
-------
 test  
 test1 
(2 rows)

Query 20171107_161804_00004_psubf, FINISHED, 1 node
Splits: 18 total, 18 done (100.00%)
0:02 [2 rows, 43B] [0 rows/s, 19B/s]

presto:default> select * from test1;
 id 
----
  0 
(1 row)

Query 20171107_161812_00005_psubf, FINISHED, 1 node
Splits: 17 total, 17 done (100.00%)
0:03 [1 rows, 2B] [0 rows/s, 0B/s]

6、可以使用quit退出

相關文章