写点什么

联邦查询引擎 Presto 源码编译与调试

用户头像
小舰
关注
发布于: 2021 年 04 月 06 日

1.源码准备

首先在 github 上找到 prestosql 的 presto 项目,这里要说明一下,presto 有两个分支,分别是 prestodb 和 prestosql。目前 prestodb 是 Facebook 在维护,prestosql 更加适合我们来学习,更加通用一些。

将 github 的代码 fork 到自己的账号下https://github.com/prestosql/presto ,当然也可以自己下载源码导入,但是 fork 到自己的 github 上,然后通过编辑器 Intellij IDEA 的 Git 插件远程 clone 到本地,到这里源码就有了。

2.源码编译

首先要准备好环境

1.JDK:目前的版本为 348,要求 Java JDK 为 11.0.7 及以上,推荐为 11.0.8,11.0.9

2.Maven:版本最低要求为 3.6.3

3.Docker 环境,在编译 presto-doc 的时候会有 Docker 相关命令的验证,当然这是非必需的

然后为了避免下载过程中由于网络等原因造成下载包失败,可以把 maven 源修改一下,比如可以用阿里的

<mirror>          <id>alimaven</id>          <mirrorOf>central</mirrorOf>          <name>aliyun maven</name>          <url>https://maven.aliyun.com/repository/central/</url>  </mirror>
<mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror>
复制代码

接下来就可以编译了,源码编译其实比较简单,就是

mvn install 或mvn clean install -DskipTests (跳过一些测试,推荐此方法)
复制代码

编译成功后会出现如下提示

3.调试

编译完成后,我们可以看到 presto-cli 目录下的 target 下面会有 presto-cli-347-SNAPSHOT-executable.jar 这样类似的 jar 包,这个就是可执行的包

下面我们先来启动 PrestoServer 进程,在 presto-server-main - PrestoServer 中,配置如下运行参数:

Main Class: io.prestosql.server.PrestoServerVM Options: -ea -XX:+UseG1GC -XX:G1HeapRegionSize=32M -XX:+UseGCOverheadLimit -XX:+ExplicitGCInvokesConcurrent -Xmx2G -Dconfig=etc/config.properties -Dlog.levels-file=etc/log.properties -Djdk.attach.allowAttachSelf=trueWorking directory: $MODULE_DIR$ -Dhive.metastore.uri=thrift://localhost:9083Use classpath of module: presto-server-main
复制代码

开启服务之后,我们看到如下提示代表成功

然后我们就可以结合编译出来的 jar 包进行调试了

java -jar presto-cli/target/presto-cli-347-SNAPSHOT-executable.jar --server  http://localhost:8080>presto show catalogs就可以列出有哪些类型的数据源了
复制代码


我们也可以通过监控界面 8080 端口来看运行的情况

4.总结

到这里,我们就完成了 Presto 的源码编译和调试工作,让我们准备好开始源码之旅吧~

发布于: 2021 年 04 月 06 日阅读数: 38
用户头像

小舰

关注

公众号:DLab数据实验室 2020.11.12 加入

中国人民大学硕士

评论

发布
暂无评论
联邦查询引擎Presto源码编译与调试