OLAP引擎:基於Presto元件進行跨資料來源分析

知了一笑發表於2021-04-18

一、Presto概述

1、Presto簡介

Presto是一個開源的分散式SQL查詢引擎,適用於互動式分析查詢,資料量支援GB到PB位元組,Presto雖然具備解析SQL的能力,但它並不屬於標準的資料庫範疇。

Presto支援線上資料查詢,包括Hive,關聯式資料庫以及專有資料儲存。一條Presto查詢可以將多個資料來源的資料進行合併,可以跨越整個組織進行分析,Presto主要用來處理響應時間小於1秒到幾分鐘的場景。

2、Presto架構

Presto查詢引擎是基於Master-Slave的架構,執行在多臺伺服器上的分散式系統,由一個Coordinator節點和多個Worker節點組成,Coordinator負責解析SQL語句,生成執行計劃,分發執行任務給Worker節點執行,Worker節點負責實際執行查詢任務。

Coordinator節點

Coordinator伺服器是用來解析查詢語句,執行計劃分析和管理Presto的Worker結點,跟蹤每個Work的活動情況並協調查詢語句的執行。Coordinator為每個查詢建立模型,模型包含多個Stage,每個Stage再轉為Task分發到不同的Worker上執行,協調通訊基於REST-API,Presto安裝必須有一個Coordinator節點。

Worker節點

Worker負責執行查詢任務和處理資料,從Connector獲取資料,Worker間會交換中間資料。Coordinator從Worker獲取結果並返回最終結果給Client端,當Worker啟動時會廣播自己並發現Coordinator,告知Coordinator可用狀態,協調通訊基於REST-API,Presto通常會安裝多個Worker節點。

資料來源適配

Presto可以適配多種不同的資料來源,可以和資料來源連線和互動,Presto是通過表的完全限定名處理table,Catalog對應類資料來源,Schema對應資料庫,Table對應資料表。

Presto中處理的最小資料單元是一個Page物件,一個Page物件包含多個Block物件,每個Block物件是一個位元組陣列,儲存一個欄位的若干行,多個Block橫切的一行是真實的一行資料。

二、Presto安裝

1、安裝包管理

[root@hop01 presto]# pwd
/opt/presto
[root@hop01 presto]# ll
presto-cli-0.196-executable.jar
presto-server-0.189.tar.gz
[root@hop01 presto]# tar -zxvf presto-server-0.189.tar.gz

2、配置管理

在presto安裝目錄中建立etc資料夾,並新增以下配置資訊:

/opt/presto/presto-server-0.189/etc

節點屬性

每個節點的特定環境配置:etc/node.properties;

[root@hop01 etc]# vim node.properties
node.environment=production
node.id=presto01
node.data-dir=/opt/presto/data

配置內容:環境名稱,唯一ID,資料目錄。

JVM 配置

JVM的命令列選項,用於啟動Java虛擬機器的命令列選項列表:etc/jvm.config。

[root@hop01 etc]# vim jvm.config
-server
-Xmx16G
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+UseGCOverheadLimit
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:+ExitOnOutOfMemoryError

配置屬性

Presto伺服器的配置,每個Presto伺服器都可以充當協調器和工作器,如果單獨使用一臺機器來執行協調工作可以在更大的叢集上提供最佳效能,這裡PrestoServer既當一個coordinator也是一個worker節點:etc/config.properties。

[root@hop01 etc]# vim config.properties
coordinator=true
node-scheduler.include-coordinator=true
http-server.http.port=8083
query.max-memory=3GB
query.max-memory-per-node=1GB
discovery-server.enabled=true
discovery.uri=http://hop01:8083

這裡coordinator=true表示當前Presto例項充當協調器角色。

日誌配置

[root@hop01 etc]# vim log.properties
com.facebook.presto=INFO

Catalog屬性

/opt/presto/presto-server-0.189/etc/catalog

配置hive適配:

[root@hop01 catalog]# vim hive.properties
connector.name=hive-hadoop2
hive.metastore.uri=thrift://192.168.37.133:9083

配置MySQL適配:

[root@hop01 catalog]# vim mysql.properties
connector.name=mysql
connection-url=jdbc:mysql://192.168.37.133:3306
connection-user=root
connection-password=123456

3、執行服務

啟動命令

[root@hop01 /]# /opt/presto/presto-server-0.189/bin/launcher run

啟動日誌

這樣presto就啟動成功了。

三、客戶端安裝

1、Jar包管理

[root@hop01 presto-cli]# pwd
/opt/presto/presto-cli
[root@hop01 presto-cli]# ll
presto-cli-0.196-executable.jar
[root@hop01 presto-cli]# mv presto-cli-0.196-executable.jar presto-cli.jar

2、連線MySQL

java -jar presto-cli.jar --server ip:9000 --catalog mysql --schema sq_export

四、原始碼地址

GitHub·地址
https://github.com/cicadasmile/big-data-parent
GitEE·地址
https://gitee.com/cicadasmile/big-data-parent

閱讀標籤

Java基礎】【設計模式】【結構與演算法】【Linux系統】【資料庫

分散式架構】【微服務】【大資料元件】【SpringBoot進階】【Spring&Boot基礎

資料分析】【技術導圖】【 職場

相關文章