OLAP引擎:基于Presto组件进行跨数据源分析
一、Presto概述
1、Presto簡介
Presto是一個開源的分布式SQL查詢引擎,適用于交互式分析查詢,數(shù)據(jù)量支持GB到PB字節(jié),Presto雖然具備解析SQL的能力,但它并不屬于標(biāo)準(zhǔn)的數(shù)據(jù)庫范疇。
Presto支持在線數(shù)據(jù)查詢,包括Hive,關(guān)系數(shù)據(jù)庫以及專有數(shù)據(jù)存儲。一條Presto查詢可以將多個數(shù)據(jù)源的數(shù)據(jù)進行合并,可以跨越整個組織進行分析,Presto主要用來處理響應(yīng)時間小于1秒到幾分鐘的場景。
2、Presto架構(gòu)
Presto查詢引擎是基于Master-Slave的架構(gòu),運行在多臺服務(wù)器上的分布式系統(tǒng),由一個Coordinator節(jié)點和多個Worker節(jié)點組成,Coordinator負責(zé)解析SQL語句,生成執(zhí)行計劃,分發(fā)執(zhí)行任務(wù)給Worker節(jié)點執(zhí)行,Worker節(jié)點負責(zé)實際執(zhí)行查詢?nèi)蝿?wù)。
Coordinator節(jié)點
Coordinator服務(wù)器是用來解析查詢語句,執(zhí)行計劃分析和管理Presto的Worker結(jié)點,跟蹤每個Work的活動情況并協(xié)調(diào)查詢語句的執(zhí)行。Coordinator為每個查詢建立模型,模型包含多個Stage,每個Stage再轉(zhuǎn)為Task分發(fā)到不同的Worker上執(zhí)行,協(xié)調(diào)通信基于REST-API,Presto安裝必須有一個Coordinator節(jié)點。
Worker節(jié)點
Worker負責(zé)執(zhí)行查詢?nèi)蝿?wù)和處理數(shù)據(jù),從Connector獲取數(shù)據(jù),Worker間會交換中間數(shù)據(jù)。Coordinator從Worker獲取結(jié)果并返回最終結(jié)果給Client端,當(dāng)Worker啟動時會廣播自己并發(fā)現(xiàn)Coordinator,告知Coordinator可用狀態(tài),協(xié)調(diào)通信基于REST-API,Presto通常會安裝多個Worker節(jié)點。
數(shù)據(jù)源適配
Presto可以適配多種不同的數(shù)據(jù)源,可以和數(shù)據(jù)源連接和交互,Presto是通過表的完全限定名處理table,Catalog對應(yīng)類數(shù)據(jù)源,Schema對應(yīng)數(shù)據(jù)庫,Table對應(yīng)數(shù)據(jù)表。
Presto中處理的最小數(shù)據(jù)單元是一個Page對象,一個Page對象包含多個Block對象,每個Block對象是一個字節(jié)數(shù)組,存儲一個字段的若干行,多個Block橫切的一行是真實的一行數(shù)據(jù)。
二、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.gz2、配置管理
在presto安裝目錄中創(chuàng)建etc文件夾,并添加以下配置信息:
/opt/presto/presto-server-0.189/etc節(jié)點屬性
每個節(jié)點的特定環(huán)境配置:etc/node.properties;
[root@hop01 etc]# vim node.properties node.environment=production node.id=presto01 node.data-dir=/opt/presto/data配置內(nèi)容:環(huán)境名稱,唯一ID,數(shù)據(jù)目錄。
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服務(wù)器的配置,每個Presto服務(wù)器都可以充當(dāng)協(xié)調(diào)器和工作器,如果單獨使用一臺機器來執(zhí)行協(xié)調(diào)工作可以在更大的集群上提供最佳性能,這里PrestoServer既當(dāng)一個coordinator也是一個worker節(jié)點: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表示當(dāng)前Presto實例充當(dāng)協(xié)調(diào)器角色。
日志配置
[root@hop01 etc]# vim log.properties com.facebook.presto=INFOCatalog屬性
/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=1234563、運行服務(wù)
啟動命令
[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.jar2、連接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閱讀標(biāo)簽
【Java基礎(chǔ)】【設(shè)計模式】【結(jié)構(gòu)與算法】【Linux系統(tǒng)】【數(shù)據(jù)庫】
【分布式架構(gòu)】【微服務(wù)】【大數(shù)據(jù)組件】【SpringBoot進階】【Spring&Boot基礎(chǔ)】
【數(shù)據(jù)分析】【技術(shù)導(dǎo)圖】【 職場】
總結(jié)
以上是生活随笔為你收集整理的OLAP引擎:基于Presto组件进行跨数据源分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 趋势不能deploy的解决方法
- 下一篇: 毕业后的五年拉开大家差距的原因在哪里?