我有2个节点的集群,当我运行查询时,它只在一个节点上运行,
config.properties
coordinator=false
node-scheduler.include-coordinator=false
http-server.http.port=8181
query.max-memory=5GB
query.max-memory-per-node=1GB
query.max-total-memory-per-node=2GB
discovery.uri=http://10.0.0.30:8181
jvm.config
-server
-Xmx16G
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+UseGCOverheadLimit
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:+ExitOnOutOfMemoryError
node.properties
node.environment=production
node.id=ffffffff-ffff-ffff-ffff-fffffffffffa
node.data-dir=/var/presto/data
-----------presto coordinator------------
config.properties
coordinator=true
node-scheduler.include-coordinator=true
http-server.http.port=8181
query.max-memory=5GB
query.max-memory-per-node=1GB
query.max-total-memory-per-node=2GB
discovery-server.enabled=true
discovery.uri=http://10.0.0.30:8181
jvm.config
-server
-Xmx16G
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+UseGCOverheadLimit
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:+ExitOnOutOfMemoryError
node.properties
node.environment=production
node.id=ffffffff-ffff-ffff-ffff-ffffffffffff
node.data-dir=/var/presto/data当我运行以下查询时,它只使用一个节点,从smsc_cdr_2019_07_12 where origination =‘0705529921’选择cdr_timestamp;
该表有40M条记录和35列。
当我使用一台服务器运行查询时,它将拆分为17,耗时3.30分钟,两台服务器也将拆分为17,也将拆分为3分钟+耗时
当运行2个节点时,对于presto,第二个节点的内存消耗几乎为0。请帮我解决这个问题。
发布于 2019-07-25 18:51:28
Presto JDBC-连接器通常是单线程的。在Presto的说法中,例如,MySQL连接器为查询中访问的每个表创建一个单独的拆分。因此,读取发生在单个节点上,在单个线程中。
有一个提议是将基于JDBC的连接器扩展为并行的:https://github.com/prestosql/presto/issues/389
注意:上述限制通常不是JDBC连接器所固有的,这只是事物的当前状态。例如Starburst Teradata connector supports parallel reads。
https://stackoverflow.com/questions/57197109
复制相似问题