我是靠谱客的博主 爱笑马里奥,最近开发中收集的这篇文章主要介绍Windows下Presto的Debug分析(一)-编译准备CompileDebug,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

  • 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

  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-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中有三块需要修改:

  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-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所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部