hetu-core/hetu-docs/zh/develop/getting-started.md

6.2 KiB
Raw Permalink Blame History

入门指南

要求

  • Mac OS X或Linux
  • Java 8 Update 161或更高版本(8u161+)64位。同时支持Oracle JDK和OpenJDK。
  • AArch64 (Bisheng JDK 1.8.262 或更高版本)
  • Maven 3.3.9+(用于构建)
  • Python 2.4+(与启动器脚本一起运行)

构建openLooKeng Core

openLooKeng Core是一个标准Maven项目。在项目根目录下运行以下命令即可

./mvnw clean install

在第一次构建中Maven将从Internet下载所有依赖项并将其缓存在本地存储库(~/.m2/repository)中,这可能需要相当长的时间。后续的构建会更快。

openLooKeng Core有一组全面的单元测试运行这些测试可能需要几分钟的时间。您可以在构建时禁用这些测试

./mvnw clean install -DskipTests

在您的IDE中运行openLooKeng Core

概述

首次构建openLooKeng Core之后您可以将该项目加载到您的IDE中并运行服务器。我们建议使用IntelliJ IDEA。由于openLooKeng是一个标准Maven项目因此您可以使用根文件pom.xml将其导入到您的IDE中。在IntelliJ中从“Quick Start”框中选择“Open Project”或从“File”菜单中选择“Open”然后选择根文件 pom.xml

在IntelliJ中打开该项目之后仔细检查是否为该项目正确配置了Java SDK

  • 打开“File”菜单并选择“Project Structure”。
  • 在“SDKs”部分中确保选择1.8 JDK如果不存在则创建一个
  • 在“Project”部分中确保将“Project language level”设置为8.0因为openLooKeng Core使用了一些Java 8语言功能。

openLooKeng Core附带的样例配置可以直接用于开发。使用以下选项创建运行配置

  • Main Classio.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 modulepresto-main

工作目录应该是presto-main子目录。在IntelliJ中使用$MODULE_DIR$可以自动完成该设置。

在config.properties文件中替换plugin.bundles为plugin.dir并指向plugin目录

plugin.dir=../hetu-server/target/hetu-server-{VERSION}/plugin

此外必须使用您的Hive元存储Thrift服务的位置对Hive插件进行配置。使用正确的主机和端口如果您没有Hive元存储则使用下面的值替换localhost:9083,将以下内容添加到虚拟机选项列表中:

-Dhive.metastore.uri=thrift://localhost:9083

为Hive或HDFS使用SOCKS

如果您的本地计算机无法直接访问Hive元存储或HDFS集群则可以使用SSH端口转发进行访问。设置一个动态SOCKS代理其中SSH侦听本地端口1080

ssh -v -N -D 1080 server

然后在虚拟机选项列表中添加以下内容:

-Dhive.metastore.thrift.client.socks-proxy=localhost:1080

日志记录

审计日志功能默认关闭。要使用默认设置开启,需要修改etc/event-listener.properties中的配置,确保运行服务端的进程对审计日志目录有写权限。

运行CLI

启动CLI以连接到服务器并运行SQL查询

presto-cli/target/hetu-cli-*-executable.jar

查询集群中的节点信息:

SELECT * FROM system.runtime.nodes;

在样例配置中Hive Connector挂载在hive目录中因此您可以运行以下查询来显示Hive数据库default中的表:

SHOW TABLES FROM hive.default;

代码样式

我们建议您使用IntelliJ作为IDE。可以在代码样式存储库中找到项目的代码样式模板其中还提供了我们的通用编程和Java指南。除此之外您还应遵守以下要求

  • 将文档源文件(包括目录文件和其他常规文档文件)中的各节按字母顺序进行排列。一般而言,如果周围的代码中已经存在这样的排序,则按字母顺序排列方法/变量/节。
  • 在合适的时候使用Java 8流API。不过请注意流实现的性能不佳因此应避免在内循环或其他对性能敏感的节中使用流实现。
  • 在抛出异常时对错误进行分类。例如PrestoException接受错误代码作为参数PrestoException(HIVE_TOO_MANY_OPEN_PARTITIONS)。您可以利用该分类来生成报告,以便能够监视各种故障的出现频率。
  • 确保所有文件都有适当的许可证标头;您可以通过运行mvn license:format来生成许可证。
  • 考虑使用字符串格式化使用JavaFormatter类进行printf样式格式化format("Session property %s is invalid: %s", name, value)(请注意,应始终以静态方式导入format())。有时,如果只需要附加某些内容,可以考虑使用+运算符。
  • 除非是普通表达式,否则避免使用三元运算符。
  • 如果Airlift的Assertions类中有覆盖您的情况的断言请使用该断言而不是手动编写该断言。随着时间的推移我们可能会转向更流畅的断言如AssertJ。
  • 在编写Git提交消息时请遵循这些准则

构建Web UI

openLooKeng Web UI使用JSX和ES6编写由多个React组件组成。该源代码被编译并打包成与浏览器兼容的Javascript然后该Javascript被签入到openLooKeng Core源代码在文件夹dist中)中。您必须安装Node.jsYarn才能执行这些命令。要在更改之后更新该文件夹,只需运行以下命令:

yarn --cwd presto-main/src/main/resources/webapp/src install

如果没有任何Javascript依赖项发生更改package.json未更改),则运行以下命令会更快:

yarn --cwd presto-main/src/main/resources/webapp/src run package

为了简化迭代,您还可以在watch模式下运行,此时会在检测到源文件更改时自动重新编译:

yarn --cwd presto-main/src/main/resources/webapp/src run watch

要快速进行迭代只需在打包完成后在IntelliJ中重新构建项目。项目资源将被热重载更改将在浏览器刷新时得到反映。