Presto安裝與使用

Markble發表於2020-09-27

目錄

一、Presto概述

二、Presto架構

三、Presto優缺點

四、 Presto、Impala效能比較

五、安裝

5.1 Presto Server安裝

5.2 Presto命令列Client安裝

5.3 Presto視覺化Client安裝


一、Presto概述

Presto是由Facebook開發的,是一個執行在多臺伺服器上的分散式查詢引擎,本身並不儲存資料,但是可以接入多種資料來源(Hive、Oracle、MySql、Kafka、Redis等),並且支援跨資料來源的級聯查詢。

Presto是一個開源的分散式SQL查詢引擎,資料量支援GB到PB位元組,主要用來處理秒級查詢的場景。

注意:雖然Presto可以解析SQL,但它不是一個標準的資料庫。不是MySQLOracle的代替品,也不能用來處理線上事務(OLTP)。

二、Presto架構

三、Presto優缺點

優勢(相對於Hive):
    Presto是一個低延遲高併發的記憶體計算引擎,相比Hive,執行效率要高很多。
    Presto以分析師的需求作為目標,他們期望響應時間小於1秒到幾分鐘。 Presto終結了資料分析的兩難選擇,要麼使用速度快的昂貴的商業方案,要麼使用消耗大量硬體的慢速的“免費”方案。

那麼,為什麼presto查詢速度比Hive快?
    Presto是常駐任務,接受請求立即執行,全記憶體平行計算;hive需要用yarn做資源排程,接受查詢需要先申請資源,啟動程式,並且採用mapreduce計算模型,中間結果會經過磁碟

四、 Presto、Impala效能比較

https://blog.csdn.net/u012551524/article/details/79124532

測試結論:Impala效能稍領先於Presto,但是Presto在資料來源支援上非常豐富,包括Hive、圖資料庫、傳統關係型資料庫、Redis等。

五、安裝

5.1 Presto Server安裝

-- 1.官網地址
https://prestodb.github.io/

-- 2.下載地址
https://repo1.maven.org/maven2/com/facebook/presto/presto-server/0.196/presto-server-0.196.tar.gz 

-- 3.將presto-server-0.196.tar.gz匯入hadoop102的/opt/software目錄下,並解壓到/opt/module目錄
[@hadoop102 software]$ tar -zxvf presto-server-0.196.tar.gz -C /opt/module/

-- 4.修改名稱為presto
[@hadoop102 module]$ mv presto-server-0.196/ presto

-- 5.進入到/opt/module/presto目錄,並建立儲存資料資料夾
[@hadoop102 presto]$ mkdir data

-- 6.進入到/opt/module/presto目錄,並建立儲存配置檔案資料夾
[@hadoop102 presto]$ mkdir etc

-- 7.配置在/opt/module/presto/etc目錄下新增jvm.config配置檔案
[@hadoop102 etc]$ vim jvm.config
新增如下內容
-server
-Xmx16G
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+UseGCOverheadLimit
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:+ExitOnOutOfMemoryError

-- 8.Presto可以支援多個資料來源,在Presto裡面叫catalog,這裡我們配置支援Hive的資料來源,配置一個Hive的catalog
[@hadoop102 etc]$ mkdir catalog
[@hadoop102 catalog]$ vim hive.properties 
新增如下內容
connector.name=hive-hadoop2
hive.metastore.uri=thrift://hadoop102:9083

-- 9.將hadoop102上的presto分發到hadoop103、hadoop104
[u@hadoop102 module]$ xsync presto

-- 10.分發之後,分別進入hadoop102、hadoop103、hadoop104三臺主機的/opt/module/presto/etc的路徑。配置node屬性,node id每個節點都不一樣。
[@hadoop102 etc]$ vim node.properties
node.environment=production
node.id=ffffffff-ffff-ffff-ffff-ffffffffffff
node.data-dir=/opt/module/presto/data

[@hadoop103 etc]$ vim node.properties
node.environment=production
node.id=ffffffff-ffff-ffff-ffff-fffffffffffe
node.data-dir=/opt/module/presto/data

[@hadoop104 etc]$ vim node.properties
node.environment=production
node.id=ffffffff-ffff-ffff-ffff-fffffffffffd
node.data-dir=/opt/module/presto/data

-- 11.Presto是由一個coordinator節點和多個worker節點組成。在hadoop102上配置成coordinator,在hadoop103、hadoop104上配置為worker。
(1)hadoop102上配置coordinator節點
[@hadoop102 etc]$ vim config.properties
新增內容如下
coordinator=true
node-scheduler.include-coordinator=false
http-server.http.port=8881
query.max-memory=50GB
discovery-server.enabled=true
discovery.uri=http://hadoop102:8881
(2)hadoop103、hadoop104上配置worker節點
[@hadoop103 etc]$ vim config.properties
新增內容如下
coordinator=false
http-server.http.port=8881
query.max-memory=50GB
discovery.uri=http://hadoop102:8881

[@hadoop104 etc]$ vim config.properties
新增內容如下
coordinator=false
http-server.http.port=8881
query.max-memory=50GB
discovery.uri=http://hadoop102:8881

-- 12.在hadoop102的/opt/module/hive目錄下,啟動Hive Metastore,用atguigu角色
[atguigu@hadoop102 hive]$
nohup bin/hive --service metastore >/dev/null 2>&1 &

-- 13.分別在hadoop102、hadoop103、hadoop104上啟動Presto Server
(1)前臺啟動Presto,控制檯顯示日誌
[@hadoop102 presto]$ bin/launcher run
[@hadoop103 presto]$ bin/launcher run
[@hadoop104 presto]$ bin/launcher run
(2)後臺啟動Presto
[@hadoop102 presto]$ bin/launcher start
[@hadoop103 presto]$ bin/launcher start
[@hadoop104 presto]$ bin/launcher start

-- 14.日誌檢視路徑/opt/module/presto/data/var/log

5.2 Presto命令列Client安裝

-- 1.下載Presto的客戶端
https://repo1.maven.org/maven2/com/facebook/presto/presto-cli/0.196/presto-cli-0.196-executable.jar

-- 2.將presto-cli-0.196-executable.jar上傳到hadoop102的/opt/module/presto資料夾下

-- 3.修改檔名稱
[@hadoop102 presto]$ mv presto-cli-0.196-executable.jar  prestocli

-- 4.增加執行許可權
[@hadoop102 presto]$ chmod +x prestocli

-- 5.啟動prestocli
[@hadoop102 presto]$ ./prestocli --server hadoop102:8881 --catalog hive --schema default

-- 6.Presto命令列操作
Presto的命令列操作,相當於Hive命令列操作。每個表必須要加上schema。
例如:
select * from schema.table limit 100

5.3 Presto視覺化Client安裝

 

-- 1.將yanagishima-18.0.zip上傳到hadoop102的/opt/module目錄

-- 2.解壓縮yanagishima

[@hadoop102 module]$ unzip yanagishima-18.0.zip
cd yanagishima-18.0

-- 3.進入到/opt/module/yanagishima-18.0/conf資料夾,編寫yanagishima.properties配置
[@hadoop102 conf]$ vim yanagishima.properties
	新增如下內容
jetty.port=7080
presto.datasources=atguigu-presto
presto.coordinator.server.atguigu-presto=http://hadoop102:8881
catalog.atguigu-presto=hive
schema.atguigu-presto=default
sql.query.engines=presto

-- 4.在/opt/module/yanagishima-18.0路徑下啟動yanagishima
[@hadoop102 yanagishima-18.0]$
nohup bin/yanagishima-start.sh >y.log 2>&1 &

-- 5.啟動web頁面
http://hadoop102:7080 
看到介面,進行查詢了。

-- 6.檢視錶結構

比如執行select * from hive.gmall.ads_user_topic limit 5,這個句子裡Hive這個詞可以刪掉,是上面配置的Catalog

每個表後面都有個複製鍵,點一下會複製完整的表名,然後再上面框裡面輸入sql語句,ctrl+enter鍵或者執行Run按鈕,檢視顯示結果