HetuEngine是什么HetuEngine是华为推出的高性能交互式SQL分析及数据虚拟化引擎。与大数据生态无缝融合实现海量数据秒级交互式查询支持跨源跨域统一访问使能数据湖内、湖间、湖仓一站式SQL融合分析。HetuEngine适合做什么适用于Hadoop集群FusionInsight MRS的Hive、Hudi数据源的交互式快速查询场景;适用于跨源多种数据源如HiveHudiHBaseGaussDB(DWS)ElasticsearchClickHouse等查询适用于跨域多个地域或数据中心的快速联合查询不擅长大批量、复杂逻辑的跑批处理、创建事务、数据入库操作等。HetuEngine特点特点说明统一SQL支持标准的SQL用户可以使用标准的SQL进行数据查询和分析计算多数据源支持对接多种数据源如Hive、Hudi、Hbase、Clickhouse、Elasticsearch、Gaussdb、iotdb等多种数据源高性能完全的内存计算自动实现计算下推动态过滤等实现PB级数据毫秒级响应跨源跨域支持多种数据源的跨源跨域联合分析查询一条SQL实现多源协同、湖仓协同高并发高可用算力、并发可横向扩展弹性伸缩自动路由自动实时调配超大SQL的计算规模智能加速基于收益最大化原则实现对热查询的自动识别、预计算与在线分析加速IO降低90%智能运维支持SQL诊断快速定位出质量欠佳的SQL记录及用户信息辅助管理员提前预判潜在风险HetuEngine基本架构HetuEngine面向企业级能力方面构建了极致稳定、高性能的企业级交互式分析引擎。云服务层提供了企业级的运维管理监控能力认证与业务接入统一访问入口友好的可视化界面操作一键式参数调优和配置协助用户轻松简单的管理集群平台引擎层纯计算引擎部署与数据解耦自容错节点故障级别重启内存溢出保护等计算实例基于任务负载自动弹性伸缩可水平横向扩展数据层支持多种常见的数据源间的联合查询同时计算和数据解耦天然的存算分离架构。HetuEngine服务角色模块名称常见概念名称描述云服务层HetuEngine CLI/JDBCHetuEngine的客户端使用者通过客户端向服务端提交查询请求然后将执行结果取回并展示。HSBrokerHetuEngine的服务管理用作计算实例的资源管理校验健康监控与自动维护等。HSConsole对外提供数据源信息管理计算实例管理自动化任务的查看等功能的可视化操作界面和RESTful接口。HSFabric提供SQL统一访问入口及跨域DC高性能安全数据传输。QASHetuEngine的自研模块针对SQL执行历史记录提供自动感知、自动学习、自动诊断服务提升在线SQL运维能力自动加速在线SQL分析任务。引擎层CoordinatorHetuEngine计算实例的管理节点提供SQL接收、SQL解析、生成执行计划、执行计划优化、分派任务和资源调度等能力。WorkerHetuEngine计算实例的工作节点提供数据源数据并行拉取分布式SQL计算等能力。HeuEngine引擎架构HetuEngine引擎执行流程简单介绍Coordinator负责管理Worker节点以及接受客户端查询请求并进行SQL的语法解析Parser、执行计划生成与优化Plannner和查询任务的调度SchedulerWorker负责具体的查询计算和数据读写Discovery Server负责发现集群的各个节点用于节点间心跳监控基本概念HSFabricHetuEngine服务的统一入口承接对外请求支持跨网络访问HetuEngine服务端。HSBroker HetuEngine的服务管理用作计算实例的资源管理校验健康监控与自动维护等。CoordinatorHetuEngine计算实例的资源和任务协调者负责SQL解析和优化等事务。WorkerHetuEngine计算实例的计算节点负责执行任务和处理数据。ConnectorHetuEngine访问数据库的接口HetuEngine通过Connector的驱动连接数据源读取数据源元数据和对数据进行增删改查等操作。CatalogHetuEngine中一个catalog配置文件对应一个数据源一个数据源可以有多个不同catalog配置可以通过数据源的properties文件进行配置。Schema对应数据库的Schema名称。Table对应数据库的表名详细解释Catalog (目录)处于最顶层。一个catalog对应一个数据源如 Hive、GaussDB、MySQL等的连接配置。它告诉HetuEngine“去哪里连接数据”以及“以何种方式连接”。可以把它理解为一个数据源的访问入口或连接器实例。Schema (模式)位于catalog之下。一个catalog可以包含多个schema。schema主要用于逻辑隔离不同的数据集比如按业务线如“销售”、“市场”或按项目来划分。在很多数据库系统中如MySQL、PostgreSQLschema和database的概念是等价的可以互换使用。Table (表)位于最底层。一个schema下包含多张table。table是实际存储数据的结构化单元由行和列组成是最终进行数据查询和操作的对象。在HetuEngine中要唯一定位一张数据表你需要使用catalog.schema.table这种三段式的全名。举个例子假设你的HetuEngine中配置了以下层级Catalog:hive(连接到一个Hive数据源)Schema:sales(销售数据库)Table:orders(订单表)Table:customers(客户表)Schema:marketing(市场数据库)Table:campaigns(营销活动表)如果你想查询销售数据中的订单表在SQL中就要这样写SELECT * FROM hive.sales.orders;如果你想跨源分析将Hive中的销售订单和另一个数据源比如名为dws的Catalog中的用户维表进行关联查询语句就会像这样SELECT * FROM hive.sales.orders AS o JOIN dws.public.users AS u ON o.user_id u.id;在这个例子里hive.sales.orders和dws.public.users就通过这种三段式的命名方式清晰地表达了它们分别来自不同的数据源hive和dws、不同的schemasales和public从而让跨源查询变得可能。了解更多 https://support.huaweicloud.com/productdesc-mrs/mrs_08_0068.html