概述
文章目录
- Compile
- Requirements
- Git
- Building
- Debug
- Plugin
- PrestoSystemRequirements
- catalog
- Application
参考 ide单步调戏presto和 Linux和Windows环境下编译presto,Windows编译Presto都失败了。无奈之下只能放弃Windows下的编译,转向Linux,然后顺利地一次成功了。
Compile
Requirements
- Mac OS X or Linux
- Java 8 Update 161 or higher (8u161+), 64-bit. Both Oracle JDK and OpenJDK are supported.
- Maven 3.3.9+ (for building)
- Python 2.4+ (for running with the launcher script)
Git
git clone https://github.com/prestosql/presto
复制源码下来git checkout 316
为了避免代码更新带来的变化,我选择的是316这个tag
Building
mvn clean package -DskipTests
构建好的presto安装包在presto-server/target目录下:presto-server-316.tar.gz
Debug
Plugin
presto-mainetcconfig.properties:
# 注释掉原来的plugin.bundles
#plugin.bundles=
# ../presto-resource-group-managers/pom.xml,
# ../presto-blackhole/pom.xml,
# ../presto-memory/pom.xml,
# ../presto-jmx/pom.xml,
# ../presto-raptor-legacy/pom.xml,
# ../presto-hive-hadoop2/pom.xml,
# ../presto-example-http/pom.xml,
# ../presto-kafka/pom.xml,
# ../presto-tpch/pom.xml,
# ../presto-local-file/pom.xml,
# ../presto-mysql/pom.xml,
# ../presto-sqlserver/pom.xml,
# ../presto-postgresql/pom.xml,
# ../presto-thrift/pom.xml,
# ../presto-tpcds/pom.xml
# 修改为下面这样:
plugin.dir=../presto-server/target/presto-server-316/plugin
PrestoSystemRequirements
presto-mainsrcmainjavaioprestosqlserverPrestoSystemRequirements.java中有三块需要修改:
- 取消import
// 注释掉下面这几个import,
// 主要是为了避免Presto的Check code style插件检查代码不符合规范而编译不通过:
// import javax.management.MBeanServer;
// import javax.management.ObjectName;
// import static java.lang.management.ManagementFactory.OPERATING_SYSTEM_MXBEAN_NAME;
- 固定大小的文件描述符数量
private static OptionalLong getMaxFileDescriptorCount()
{
try {
// 注释掉下面两行:
// MBeanServer mbeanServer = ManagementFactory.getPlatformMBeanServer();
// Object maxFileDescriptorCount = mbeanServer.getAttribute(ObjectName.getInstance(OPERATING_SYSTEM_MXBEAN_NAME), "MaxFileDescriptorCount");
// 修改为固定大小的文件描述符数量:
Object maxFileDescriptorCount = 10000;
return OptionalLong.of(((Number) maxFileDescriptorCount).longValue());
}
catch (Exception e) {
return OptionalLong.empty();
}
}
- 取消掉对操作系统的限制
// 注释掉对操作系统的限制,更改为:warnRequirement
// failRequirement("Presto requires Linux or Mac OS X (found %s)", osName);
warnRequirement("Presto requires Linux or Mac OS X (found %s)", osName);
catalog
presto-mainetccatalog中目录下的hive.properties重命名为hive.properties.bak。
因为presto运行hive connector需要依赖hadoop的nativelib本地库,在Windows下需要依赖hadoop.dll、snappy.dll、zstd.dll等dll库,暂时没找到合适的dll来解决这个问题,所以先不用hive
connector了,不然运行会报错,而剩余的connector还是可以正常加载使用的。
也有博客指出需要全部修改为baklinux: ls -A | xargs -i mv {} {}.bak
或者mac: ls -a | xargs -I F mv "F" "F".bak
,不过我只修改了Hive的也成功启动了。
Application
- 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
- Working directory:
$MODULE_DIR$
- Use classpath of module: presto-main
最后就可以开始debug或者run,启动完成浏览器就可以访问到主页。
java -jar presto-cli/target/presto-cli-316-executable.jar --server localhost:8080
启动客户端
最后
以上就是爱笑马里奥为你收集整理的Windows下Presto的Debug分析(一)-编译准备CompileDebug的全部内容,希望文章能够帮你解决Windows下Presto的Debug分析(一)-编译准备CompileDebug所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复