【筆記】Presto實作 (二)架設

09 12月, 2019

【筆記】Presto實作 (二)架設









「presto」建置筆記,主要流程從官方的文件


https://prestodb.io/docs/current/installation/deployment.html


照著官方文件走,就可以順利完成大部分流程:





以下是筆記紀錄:



(一)下載程序包

去官網連結下載最新的程序包,https://prestodb.io/download.html


※下載檔案
sudo wget https://repo1.maven.org/maven2/com/facebook/presto/presto-server/0.227/presto-server-0.227.tar.gz
解壓縮檔案
sudo tar -zxvf presto-server-0.227.tar.gz




(二)更改用戶組


sudo chgrp -R centos presto
sudo chown -R centos presto


(三)目錄檔案配置

presto
      └── presto-server-0.227
                              ├── lib
                              ├── bin
                              ├── plugin
                              └── etc
                                        ├── jvm.config
                                     ├── config.properties
                                       ├── log.properties
                                        ├── node.properties
                                        └── catalog
                                                       └── http.properties
 

其中etc目錄一開始如果是不存在的。
我們必須創建。並且配置上述的各種檔案。
etc檔案主要配置共有5個配置:
正常來說檔案都是不存在,請手動配置,以下配置都已經添加註解上去。

(1) jvm.config  (java配置檔案)
由於presto是java base,會需要有java啟動的相關配置。
以下是demo用的參數設定,實際大小情況還是視個人專案決定。


(2) config.properties   (presto相關設定)
關於presto的基礎配置,像是如何定義presto的角色。
(3) node.properties   (節點設定檔案)
由於presto是一個分散式架構,需要定義每一個機台所代表的唯一id。
(4) log.properties  (log檔案配置)
java log的設定相關。

(5) catalog    目錄,(放入connector相關的設定檔)
catalog是一個目錄。由於presto有非常多的connector可以選擇。
每一個connector的設定也不盡相同,但都放在此目錄下。

(四)配置Connector

connector 對presto來說是一個很重要的存在。


可以從上圖看出,connector是連接不同的 storge 的重要介接層。

也正是因為有它的存在,presto才可以讀取各種不同的 storge (s3,mysql,hive...等ˇ等)

要知道有那些connector可以使用,或是怎麼用。

https://prestodb.io/docs/current/

官方文檔上都說得非常詳細。



目前由於demo的需求,是透過 presto 去讀取「csv」類型檔案。

這部分,presto的 http connector可以解決這個需求。

這裡就舉例配置http的connector,其他類型都是如法炮製,可以舉一反多。




如上圖,這次demo大概流程如上

(1) 透過http connector, presto去對一個伺服器讀取檔案的schema  (json格式)。

(2) presto獲得schema後,得知檔案來源與解析格式。

(3) presto知道如何去讀取data.csv



配置方式如下:


(1)在webserver 新建schema 與 csv 檔案


這個json的用意,是在定義檔案讀取的schema,讓presto知道如何去解讀csv,

在此先定義一個叫做schema.json檔案。



可以看出這邊定義了二個Table,在結構裡面也很清楚,csv的檔案路徑,欄位解析方式。


以下是這個csv的檔案:

data.csv


(2)新建一個 http.properties

在第三步驟的 catalog目錄下新建一個檔案,並將內容更改為下
上面的metadata-uri 將會指向一個json。

做到這邊,基本上connector都已經配置完畢。


(五)啟動伺服器

安裝目錄的bin/launcher文件,就是啟動腳本。
啟動方式有以下兩種:
(1)作為一個後台進程啟動:bin/launcher start
(2)也可以在前台運行, 可查看具體的日誌:bin/launcher run

如需要提停止服務,進程命令:bin/launcher stop

查看進程:ps -aux|grep PrestoServer 或 jps


(六)測試執行

presto有提供CLI可以供測試。

https://prestodb.io/docs/current/installation/cli.html

官方也有提供載點可以下載,

須注意的是,在Linux,要將檔案jar的副檔名去除,更名為presto

將CLI的JAR重新命名為 presto(副檔名JAR需去掉) (executable with chmod +x,)

並放在跟bin同一層的目錄裡。

之後下cli指令


 ./presto --server localhost:8080 --catalog http --schema default
這樣就可以連上了。

再來我們測試sql語法,查詢csv裡面的資料。

select * from http.schema.table1;
資料就會顯示出來。


(七)後記

由於presto是java base,理所當然它的支援性都是對java比較友善。

如果需要跟presto做介接查詢,當然還是有很多人有提供其他語言的plugin

但官方主要還是提供java的jar檔做引入。

如果寫java的人,需要連上presto,其實很簡單,只需要引入jar,然後如下就可以了。



張貼留言