乐于分享
好东西不私藏

源码学习(一)–Presto编译与调试

源码学习(一)–Presto编译与调试

导读大数据生态之数据计算(二)中我们讲到了即席查询计算引擎Presto。Presto是一个Facebook开源的分布式SQL查询引擎,适用于交互式分析查询,数据量支持GB到PB字节。Presto的架构由关系型数据库的架构演化而来,Presto在各个内存计算型数据库中脱颖而出。很多大数据类的研究项目都在选择以Presto为基础去做一些定制化的实验,那现在我们试着从源码的角度去探索他的奥秘吧。

来源:DLab数据实验室

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源修改一下,比如可以用阿里的

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

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

3.调试

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

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

Main Class: io.prestosql.server.PrestoServer
VM 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=true
Working directory: $MODULE_DIR$ -Dhive.metastore.uri=thrift://localhost:9083
Use 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的源码编译和调试工作,让我们准备好开始源码之旅吧~

数据挖掘原理与实战(三)–朴素贝叶斯分类算法
●数据挖掘原理与实战(二)–频繁模式树FPTree算法
数据挖掘原理与实战(一)–关联规则Apriori算法

●Spark原理与实战–数据抽象DataFrame(五)

●Spark原理与实战–数据抽象RDD(四)

●Spark原理与实战–GraphX图查询(三)

●Spark原理与实战–SparkStreaming流处理(二)

●Spark原理与实战–环境搭建及WordCount(一)

●Spark数据倾斜解决方案实战(三)

●Spark数据倾斜解决方案实战(二)

●Spark数据倾斜解决方案实战(一)

●大数据计算生态之数据计算(二)

●大数据计算生态之数据计算(一)

●大数据计算生态之数据存储

文章都看完了不点个 吗

欢迎    点赞、在看、分享  三连哦~~

本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » 源码学习(一)–Presto编译与调试

评论 抢沙发

5 + 3 =
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
×
订阅图标按钮