Windows下Presto的Debug分析(一)-编译准备


参考 ide单步调戏prestoLinux和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

  1. git clone https://github.com/prestosql/presto复制源码下来
  2. git checkout 316为了避免代码更新带来的变化,我选择的是316这个tag
    在这里插入图片描述

Building

mvn clean package -DskipTests
在这里插入图片描述
构建好的presto安装包在presto-server/target目录下:presto-server-316.tar.gz
在这里插入图片描述

Debug

Plugin

presto-main\etc\config.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-main\src\main\java\io\prestosql\server\PrestoSystemRequirements.java中有三块需要修改:

  1. 取消import
// 注释掉下面这几个import,
// 主要是为了避免Presto的Check code style插件检查代码不符合规范而编译不通过:
// import javax.management.MBeanServer;
// import javax.management.ObjectName;
// import static java.lang.management.ManagementFactory.OPERATING_SYSTEM_MXBEAN_NAME;
  1. 固定大小的文件描述符数量
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();
     }
}
  1. 取消掉对操作系统的限制
// 注释掉对操作系统的限制,更改为: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-main\etc\catalog中目录下的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启动客户端
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值