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编译+运行+调试,暂时没有研究。

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