presto社區版win10+idea本地編譯和服務器運行踩坑部署指南

目的:

presto官方版Github上面沒有oracle的插件,發現社區版有,社區版沒有編譯好的,需要自己本地編譯。

略有坑,記錄下,供大家參考。

環境:

win10、idea2020 1.1、centos-release-7-5.1804.el7.centos.x86_64、presto社區版337-SNAPSHOT

jdk-11.0.7_windows-x64_bin、jdk-11.0.7_linux-x64_bin.tar.gz

所有的文件分享:

鏈接:https://pan.baidu.com/s/1K3Sy6fOKCeBT9tdyQxk34g
提取碼:0lb6

編譯過程:

presto官方版Github地址:

http://prestodb.github.io

社區版Github地址:

https://prestosql.io

下載社區版

https://github.com/prestosql/presto.git

idea打開,等待maven下載依賴。編譯的命令是:mvn clean install -DskipTests

問題1:

Failed to execute goal org.apache.maven.plugins:maven-enforcer-plugin:3.0.0-M3:enforce (default) on project presto-root: Some Enforcer rules have failed. Look above for specific messages explaining why the rule failed.

這裏是jdk版本不對。因爲一開始沒看官方的說明。

  • Open the File menu and select Project Structure
  • In the SDKs section, ensure that JDK 11 is selected (create one if none exist)
  • In the Project section, ensure the Project language level is set to 8 (Presto does not yet use Java 11 language features)

這裏要求安裝jdk11,直接去oracle官網下載安裝即可,配置一下環境變量。

然後在idea項目裏面配置下jdk和語言等級

問題2:

Failed to execute goal pl.project13.maven:git-commit-id-plugin:4.0.0:revisio。。。

這裏可能是jar包沒下載下來,直接注掉引用即可。

問題3:

prestoFailed to execute goal org.skife.maven:really-executable-jar-maven-plugin:1.0.5:really-executable-jar (default) on project presto-cli: FAILURE!

這裏同問題2.直接注掉所有的依賴引用。涉及到的模塊比較多,因此就不一一截圖了。搜下,引用到的都注掉。

問題4:

最後還是maven依賴的問題。看下圖箭頭,注掉好像沒什麼作用,還會報錯,因此看了一下,presto-docs模塊是presto的介紹說明模塊,沒什麼用,因此直接在root下的pom.xml註釋掉該模塊即可。不將其打包在項目裏。

後面沒有遇到什麼問題。直接打包成功。

這裏注意:!!!docs模塊裏面有關於presto後面部署的一些說明,可以直接打開來看。

部署過程:

1、需要把presto--server放到服務器,這裏使用centos。下圖tar.gz包

2、另外還需要cli,客戶端包,下圖executable.jar包

3、另外還有centos的jdk11。

4、presto解壓後改名presto-337,和jdk放同一目錄下

5、在presto-337創建目錄 etc 和data。data裏面是空的,presto啓動後會寫入日誌。etc放置presto的配置文件。

presto-337中 bin lib NOTICE plugin README.TXT都是解壓後自帶的。etc和data是我們創建的。

6、寫入配置

#進入etc
cd etc
#寫入配置(四行),端口自己定。這裏是單節點部署presto
vim config.properties

coordinator=true
node-scheduler.include-coordinator=true
http-server.http.port=18086
discovery-server.enabled=true
discovery.uri=http://127.0.0.1:18086

#保存

#寫入配置(9行),
vim jvm.config

-server
-Xmx16G
-XX:-UseBiasedLocking
-XX:+UseG1GC
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:+UseGCOverheadLimit
-XX:+ExitOnOutOfMemoryError
-XX:ReservedCodeCacheSize=512M


#保存

#寫入配置(1行),
vim log.properties

com.facebook.presto=INFO


#保存

#寫入配置(3行),data是我們在presto創建的文件夾
vim node.properties

node.environment=presto
node.id=ffffffff-ffff-ffff-ffff-fffffffff222
node.data-dir=/home/hii/soft/presto-337/data



#保存

在etc下創建數據庫配置。這裏創建了三個 mysql postgresql oracle 都曬出來

#在etc下創建目錄
cd etc
mkdir catalog

cd catalog

#mysql,寫入四行

vim mysql.properties


connector.name=mysql
connection-url=jdbc:mysql://127.0.0.1:3306?useSSL=false&serverTimezone=Asia/Shanghai
connection-user=root
connection-password=root

#保存

#postgresql,寫入四行

vim postgresql.properties


connector.name=postgresql
connection-url=jdbc:postgresql://127.0.0.1:5432/postgres
connection-user=root
connection-password=root


#保存

#oracle,寫入四行

vim oracle.properties


connector.name=oracle
connection-url=jdbc:oracle:thin:@127.0.0.1:1521:test
connection-user=root
connection-password=root


#保存

7、將客戶端放入presto-337目錄下的bin中 ,改名presto

mv presto-cli-337-SNAPSHOT-executable.jar presto

8、指定presto的運行java環境

因爲用戶的環境變量是jdk8,而且不想把用戶的環境變成jdk11,因此需要爲presto運行單獨指定jdk

進入 presto-337\bin

vim launcher

在exec "$(dirname "$0")/launcher.py" "$@"的上面加入兩行。jdk-11.0.7是我們解壓的java11.

PATH=/home/hii/soft/jdk-11.0.7/bin/:$PATH
java -version

exec "$(dirname "$0")/launcher.py" "$@"

如下圖

 

9、運行presto

cd presto-337/bin

./launcher run

使用run命令可以直接在控制檯打印出日誌,以便看部署是否成功。其他命令還有下面幾個。使用help可以獲得幫助。

./launcher stop
./launcher start
./launcher status

./launcher help

日誌可以在presto-337/data/var/log看到

tail -100f presto-337/data/var/log/server.log

看到三個數據庫連接,沒有報error,表示成功。

10、使用cli客戶端測試連接。

cd presto-337/bin

./presto --server 127.0.0.1:18086 --catalog mysql

注意上面的命令執行在手動指定jdk版本的時候有問題。正確的查詢方式是下面這個

/home/hii/soft/jdk-11.0.7/bin/java -jar presto --server 127.0.0.1:18086 --catalog mysql

需要指定jdk的bin來啓動  /home/hii/soft/jdk-11.0.7/bin/java -jar

注意::下面的異常可能是catalog裏面的配置寫的有問題。有空格或者什麼原因。從別人那裏複製過來出現了這個異常,從官網複製沒有。其他人也有這個問題。具體原因不清楚。提個醒吧。

java.lang.IllegalArgumentException: No factory for connector mysql。。。。

 

上面就完成了所有的編譯和部署。並且可以查詢數據。

至於怎麼在idea編譯+運行+調試,暫時沒有研究。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章