Windows下编译调试OpenLooKeng / Presto

OpenLooKeng 基于 Presto, 而Presto从编译环境到运行环境都没有考虑支持windows,为了在Win上进行开发调试工作,我们需要进行一些修改。

0x01 环境及依赖

  • OS: Windows 7+
  • JDK: 1.8 (8u161+)64bit
  • Maven: 3.3.9+
  • Git for windows

0x02 编译

2.1 Clone Code

因代码配置有checkstyle-plugin,代码中不能出现CRLF换行,必须为LF换行,所以确保git设置git config --global core.autocrlfinput.

git clone https://gitee.com/openlookeng/hetu-core.git

2.2 编译

  1. 打开GitBash,使用其MinGW环境作为编译环境。
  2. 确认当前环境中java工作目录在jdk中:可使用java -verbose 查看目录信息。
  3. 使用maven 编译
     cd hetu-core
     mvn clean install -DskipTests
    
    当然我们可以开启多线程、排除不需要的模块比如打安装包的hetu-server-rpm来加速编译
    mvn -T 8 -pl '!hetu-server-rpm' clean install -DskipTests
    

0x03 修改代码以在 Windows环境调试运行

使用IDEA打开工程,按如下修改

  1. file: presto-main/etc/event-listener.properties
    修改:

    - hetu.event.listener.type=AUDIT
    + hetu.event.listener.type=LOGGER
    
  2. file: presto-main/src/main/java/io/prestosql/server/PluginDiscovery.java
    修改:

    - if (!file.getPath().endsWith("/target/classes"))
    + if (!file.getPath().replace('\\','/').endsWith("/target/classes"))
    
  3. file: presto-main/src/main/java/io/prestosql/server/PrestoSystemRequirements.java
    注释掉:

    else {
        failRequirement("Hetu requires Linux or Mac OS X (found %s)", osName);
    }
    

    修改:

    - Object maxFileDescriptorCount = mbeanServer.getAttribute(ObjectName.getInstance(OPERATING_SYSTEM_MXBEAN_NAME), "MaxFileDescriptorCount");
    + Object maxFileDescriptorCount = 10000;
    

    清理相关import

  4. file: presto-main/pom.xml
    注释掉io.airlift.resolver的依赖排除

  5. file: presto-main/etc/config.properties
    删除plugin.bundles中hive和oracle插件:

    - ../presto-hive-hadoop2/pom.xml,\
    - ../hetu-oracle/pom.xml, \
    
  6. dir: presto-main/etc/catalog/
    hive及oracle需要在windows上安装相关程序的windows版本才能使用,这里直接删除删除hive及oracle的配置文件

    # 在GitBash中
    cd presto-main/etc/catalog/
    mv hive.properties hive.properties.bak
    mv oracle.properties oracle.properties.bak
    

0x04 启动项配置

4.1 IDEA 设置

Crtl+Alt+S 进入设置页面

  • Build,Excution,Deployment > Complier > JavaComplier

    • 取消勾选 Use ‘–release’ option for corss-compilation
    • 设置 project bytecode version为8

    修改Java Compiler配置

4.2 创建运行环境配置

新建Application运行环境

  • Main class :
    -ea -XX:+UseG1GC -XX:G1HeapRegionSize=32M -XX:+UseGCOverheadLimit -XX:+ExplicitGCInvokesConcurrent -Xmx2G -Dconfig=etc/config.properties -Dlog.levels-file=etc/log.properties -Duser.home=D:/Marven

  • Working directory: $MODULE_DIR$

  • Use classpath of module: presto-main

  • 注意-Duser.home=D:/Marven是maven仓库.m2文件夹的父目录,且最后两级目录名必须是/.m2/repository
    在这里插入图片描述

  • 点击IDEA上的运行,然后在浏览器中输入http://localhost:8080/
    在这里插入图片描述

0x05 Hello OpenLooKeng

经过上面的步骤,OpenLooKeng/Presto已经启动好了,这时候就可以尝试其功能了。

5.1 启动CLI客户端,连接OpenLooKen/Presto

OpenLooKen的CLI客户端名称是hetu-cli
Presto的CLI客户端名称是presto-cli
连接:

# 进入源码根目录
cd hetu-core
# 运行cli客户端连接OpenLooKeng
java -jar presto-cli/target/hetu-cli-*-executable.jar --server localhost:8080

测试:

# 查看catalogs,会比较慢,耐心等待1分钟,或者在连接时直接指定 --catalog example
lk> SHOW CATALOGS;
  Catalog
------------
 example
 jmx
 localfile
 memory
 mysql
 postgresql
 sqlserver
 system
 thrift
 tpcds
 tpch
(11 rows)

Query 20200926_103900_00007_w3q7w, FINISHED, 1 node
Splits: 19 total, 19 done (100.00%)
0:46 [0 rows, 0B] [0 rows/s, 0B/s]

# 查看example中有哪些SCHEMAS
lk> SHOW SCHEMAS FROM example;
       Schema
--------------------
 example
 information_schema
 tpch
(3 rows)

Query 20200926_104259_00010_w3q7w, FINISHED, 1 node
Splits: 19 total, 19 done (100.00%)
0:00 [3 rows, 44B] [57 rows/s, 846B/s]

# USE example CATALOG中的 example SCHEMA
USE example.example;
USE
lk:example>

# 查看当前SCHEMA中有哪些表
lk:example> SHOW TABLES;
  Table
---------
 numbers
(1 row)

Query 20200926_104741_00014_w3q7w, FINISHED, 1 node
Splits: 19 total, 19 done (100.00%)
0:00 [1 rows, 24B] [25 rows/s, 615B/s]

# 查询numbers表中的数据
lk:example> select * from numbers;
  text  | value
--------+-------
 one    |     1
 two    |     2
 three  |     3
 ten    |    10
 eleven |    11
 twelve |    12
(6 rows)

Query 20200926_104900_00015_w3q7w, FINISHED, 1 node
Splits: 18 total, 18 done (100.00%)
0:01 [6 rows, 0B] [5 rows/s, 0B/s]
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
impala是一种高性能分析型数据库,它基于Hadoop生态系统,可以快速执行复杂的查询。它使用列式存储、编译器技术和并行查询执行来实现高性能。 druid是一个快速、实时的数据存储和分析引擎,它适用于大规模的实时数据处理和探索式分析。它支持实时数据摄取、查询和可视化,可用于数据仪表盘和实时报告等应用。 presto是一种开源的分布式SQL查询引擎,它可以快速查询多种数据源,包括Hadoop、MySQL等。它具有高度可伸缩性和灵活性,可用于快速进行复杂的数据分析和联机查询。 kylin是一种开源的分布式分析引擎,它可以快速处理大规模数据集。它支持多维分析和复杂的OLAP查询,并提供了数据立方体和预计算功能,用于加速查询速度。 clickhouse是一种列式数据库管理系统,专门用于高性能分析型应用。它支持实时查询和高并发访问,并具有低延迟和高容量的优势,适用于大规模的数据分析和数据仪表盘等应用。 greenplum是一种高性能的并行关系数据库管理系统,适用于大规模数据仓库和分析型应用。它具有高度可伸缩性、并行查询和优化的特性,用于高速查询和处理大规模数据。 总的来说,这些数据库和查询引擎都旨在提供高性能和灵活性,以满足大规模数据分析和查询的需求,但它们在技术架构、数据存储方式和查询优化等方面存在一些差异。选择适合特定需求的数据库和查询引擎取决于实际情况和使用场景。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值