初次接触OpenLookeng

举报
我爱次火锅锅 发表于 2021/09/29 17:30:20 2021/09/29
【摘要】 openLooKeng是华为的一款性能强大的引擎,基于业界著名的开源SQL引擎Presto来提供交互式查询分析基础能力, 用于支持数据探索、即席查询和批处理,具有100+毫秒至分钟级的近实时时延,而无需移动数据。openLooKeng还支持层次化部署,使地理上远程的openLooKeng集群能够参与相同的查询。利用其跨区域查询计划优化能力,涉及远程数据的查询可以接近“本地”的性能

openLooKeng是华为的一款性能强大的引擎,基于业界著名的开源SQL引擎Presto来提供交互式查询分析基础能力, openLooKeng用于支持数据探索、即席查询和批处理,具有100+毫秒至分钟级的近实时时延,而无需移动数据。openLooKeng还支持层次化部署,使地理上远程的openLooKeng集群能够参与相同的查询。利用其跨区域查询计划优化能力,涉及远程数据的查询可以达到接近本地的性能[1]

重要概念:

  • 连接器

openLooKeng中的连接器,用于访问不同数据源的数据,不同的数据库对应于不同的ConnectoropenLooKeng提供的连接器几乎支持市场上各个数据源:HBaseMySQLSQL ServerCarbonDataHive等等。

  • SPIpresto-spi

SPIJDK内置的服务提供/发现机制,它通过在ClassPath路径下的META-INF/services/目录中定义的文件,自动加载文件里所定义的类。

presto-spiOpenLookeng的其中一个模块,定义了很多对外暴露的SPI接口。我们可以实现对应的接口,从而实现连接器、类型、函数、系统访问控制等的功能。

通过Maven导入依赖:

<dependency>
  <groupId>
io.prestosql </groupId>
  <artifactId> presto-spi </artifactId>
  <version>
1.10.19</version>
  <scope> provided </scope>
</dependency>

如果我们想做createinsertdrop表的权限校验,只需要实现presto-spi中的ConnectorAccessControl接口即可。

  • openLooKeng REST API

openLooKeng使用REST进行openLooKeng安装中的所有通信。这也意味着,我们可以直接把SQL语句作为parameter,发送http请求给openLooKeng引擎,然后根据http请求response来得到要查询的结果。

节点资源

GET /v1/node

查询资源

GET /v1/query

GET /v1/query/{queryId}

阶段资源

GET /v1/stage

DELETE /v1/stage/{stageId}

语句资源

POST /v1/statement

任务资源

GET /v1/task

  • 协调节点

负责解析语句、规划查询和管理openLooKeng工作节点的服务器,也是客户端通过REST API连接的节点,提交SQL语句执行的节点

  • 工作节点

负责执行任务和处理数据。工作节点从连接器获取数据,并相互交换中间数据。协调节点负责从工作节点获取结果,并将最终结果返回给客户端

SQL语法支持:

openLooKeng支持的SQL语法具体可以参考官网,需要注意的,openLooKeng SQL多了很多 Spark SQL不支持的SQL语法,比如SELECT中的offsetFETCH FIRSTTABLESAMPLE BERNOULLI等等。openLooKengSQL解析是在presto-parser中执行的。

通过Maven导入依赖:

<dependency>
  <groupId>
io.prestosql </groupId>
  <artifactId> presto-parser </artifactId>
  <version>
1.10.19</version>
  <scope> provided </scope>
</dependency>

io.prestosql.sql.parser中包含了解析SQL的工具,其中SqlParser. createStatement可以将sql解析成Statement,而openLooKeng支持的SQL语法又继承了Statement

总结:

openLooKeng是基于presto来提供交互式查询分析基础能力的,想要更加的了解openLooKeng,建议可以从presto-spipresto-parserpresto-pluginpresto-client等源码来了解。

参考文档:

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。