-
参数
ngmr.dd.local.mode.auto
控制是否允许 system 表自动切换为 Local 模式,默认为 true 表示允许自动切换。 -
在同时满足
ngmr.exec.mode = cluster
及ngmr.dd.local.mode.auto=true
时,使用 SQL 命令查询 system 表会自动切换为 Local 执行模式。
ArgoDB 中执行 SQL 语句时,支持不同的执行模式,较为常用的执行模式为 Cluster 和 Local 模式,在 ArgoDB 6.0 及以上版本中,我们还新增了 Localfast 。您可以通过登录 DBAService 查看 SQL 语句的具体执行模式。
下面我们依次向您介绍这四种执行模式的生效方式、适用场景、相关注意事项以及四种执行模式的对比情况。
Cluster 模式(默认模式)
定义及适用场景
Cluster 模式为 SQL 默认执行模式,该模式下结果集先落地缓存,然后客户端可以直接从缓存中读取,一般适用于大任务高吞吐的批处理业务场景。
Cluster 模式的实现逻辑是通过 Quark Server 将 SQL 转换成 Job 分发到各个节点的 Executor,并由 Task 具体处理,各个 Task 将结果汇总并输出。
设置方式
通过设置 Quark 参数 ngmr.exec.mode = cluster
生效。
Local 模式
定义及适用场景
Local 模式下,结果数据集直接返回给客户端。一般适用于低延时、高并发、参与计算数据量少的场景,如:
-
通过 Lookup Join 实现 JOIN 的场景,适用于大表为 Hyperbase 表的情况。
-
HBaseTransactionStorageHandler 的 CRUD 操作。
-
ORC 事务表的 INSERT 或者 BATCHINSERT。
设置方式
通过设置 Quark 参数 ngmr.exec.mode = local
生效。
使用边界及注意事项
-
Local 模式支持不启动 executor 读 ArgoDB 数据源,能够满足使用者对于灵活性的需求。
-
Linac 引擎不支持 local 模式,建议使用 Localfast 模式。
-
在满足条件下,查询 system 系统表时,会从 Cluster 模式自动切换成 Local 模式。
LocalFast 模式
定义及适用场景
LocalFast 通过在 Quark Server 生成与 Cluster 模式接近的分布式执行计划,并在 Quark Server 内多线程执行,因此能实现更快的响应速度,但也要求数据量不能过多。
LocalFast 模式的核心优化是在表扫描阶段支持并发多个 task,利用多线程和并行处理的优势,使得单机执行效率更高,适用于 OLAP 及高并发查询场景
设置方式
-
设置 Quark 参数,开启 ngmr 引擎下的 localfast 模式:
-
关闭 windrunner 向量化执行引擎:
ngmr.windrunner.enabled=false
-
开启 localfast 模式:
ngmr.local.fast.enabled=true
-
-
设置 Quark 参数,开启 Linac 引擎下的 linac-localfast 模式:
-
开启 Linac 计算引擎:
use.linac=true
-
开启 windrunner 向量化执行引擎
ngmr.windrunner.enabled=true
-
开启 localfast 模式:
ngmr.local.fast.enabled=true
-
使用边界及注意事项
-
localfast 模式优先级最高,即只要开启 localfast 模式功能,参数 ngmr.exec.mode 自动失效。
-
localfast 模式下,存在使用限制:
-
过滤后的数据推荐在 10W 以内,最多不超过 100W
-
查询超时默认为 60 秒,可通过 ngmr.local.fast.exec.timeout 控制(单位毫秒)
-
Linac 暂时没有限制过滤后的数据集条目数(Doing),WR 超过特定数据集会报错
-
执行模式对比
模式 | 结果集存储 | 结果集大小 | 执行计划 | 支持的 Join | 计算引擎 | 数据量限制 |
---|---|---|---|---|---|---|
Cluster |
HDFS 临时目录 |
超过 1500w 有很大概率返回数据超时 |
集群,多线程执行 |
LoopUp Join、Common Join、Bucket Join、Map Join(Filter Join) |
ngmr、Linac |
无上限,推荐 > 1 百万 |
Local |
Server 内存 |
< 30w |
单机,单线程执行 |
LookUp Join |
ngmr |
< 1 百万 |
Localfast |
Server 内存 |
< 30w |
单机,多线程执行 |
LookUp Join、Common Join、Bucket Join |
ngmr、Linac |
< 1 亿 |