所有分布式查询都使用 Citus 任务跟踪器执行器失败
All distributed queries fail using Citus task tracker executor
我正在尝试在 Citus 5.0 上对分布式连接进行性能测试。我有一个主节点和两个工作节点,以及一些散列分布式表,它们的行为与默认配置的预期一致。我需要使用任务跟踪器执行器来测试需要重新分区的查询。
但是,将citus.task_executor_type
设置为task-tracker
后,所有涉及分布式表的查询都会失败。例如:
postgres=# SET citus.task_executor_type TO "task-tracker";
SET
postgres=# SELECT 1 FROM distrib_mcuser_car LIMIT 1;
ERROR: failed to execute job 39
DETAIL: Too many task tracker failures
在postgresql.conf
中设置citus.task_executor_type
效果相同
我是否遗漏了切换任务执行程序所必需的其他配置更改?
编辑,更多信息:
- PostGIS 安装在所有节点上
- postgres_fdw安装在master上
- 所有其他配置都是原始的
到目前为止所有表格的分布如下:
SELECT master_create_distributed_table('table_name', 'id', 'hash');
SELECT master_create_worker_shards('table_name', 8, 2);
distrib_mcuser_car
的架构相当大,所以这里有一个更简单的示例:
postgres=# \d+ distrib_test_int
Table "public.distrib_test_int"
Column | Type | Modifiers | Storage | Stats target | Description
--------+---------+-----------+---------+--------------+-------------
num | integer | | plain | |
postgres=# select * from distrib_test_int;
ERROR: failed to execute job 76
DETAIL: Too many task tracker failures
task-tracker 执行器将任务(对分片的查询)分配给工作节点上的后台工作人员 运行ning,该工作节点连接到 localhost
到 运行 任务。如果您的超级用户在连接到 localhost
时需要密码,那么后台工作人员将无法连接。这可以通过在工作节点上添加一个 .pgpass
文件来连接到 localhost
.
来解决
您可以通过更改 pg_hba.conf
.
来修改身份验证设置,让 worker 无需检查密码即可连接到 master
将以下行添加到 master pg_conf.hba
:
host all all [worker 1 ip]/32 trust
host all all [worker 2 ip]/32 trust
并为每个 worker-1 以下行 pg_hba.conf
:
host all all [master ip]/32 trust
host all all [worker 2 ip]/32 trust
然后跟随 worker-2 pg_hba.conf
:
host all all [master ip]/32 trust
host all all [worker 1 ip]/32 trust
这仅用于测试,请勿在未采取必要的安全预防措施的情况下将其用于生产系统。
我正在尝试在 Citus 5.0 上对分布式连接进行性能测试。我有一个主节点和两个工作节点,以及一些散列分布式表,它们的行为与默认配置的预期一致。我需要使用任务跟踪器执行器来测试需要重新分区的查询。
但是,将citus.task_executor_type
设置为task-tracker
后,所有涉及分布式表的查询都会失败。例如:
postgres=# SET citus.task_executor_type TO "task-tracker";
SET
postgres=# SELECT 1 FROM distrib_mcuser_car LIMIT 1;
ERROR: failed to execute job 39
DETAIL: Too many task tracker failures
在postgresql.conf
中设置citus.task_executor_type
效果相同
我是否遗漏了切换任务执行程序所必需的其他配置更改?
编辑,更多信息:
- PostGIS 安装在所有节点上
- postgres_fdw安装在master上
- 所有其他配置都是原始的
到目前为止所有表格的分布如下:
SELECT master_create_distributed_table('table_name', 'id', 'hash');
SELECT master_create_worker_shards('table_name', 8, 2);
distrib_mcuser_car
的架构相当大,所以这里有一个更简单的示例:
postgres=# \d+ distrib_test_int
Table "public.distrib_test_int"
Column | Type | Modifiers | Storage | Stats target | Description
--------+---------+-----------+---------+--------------+-------------
num | integer | | plain | |
postgres=# select * from distrib_test_int;
ERROR: failed to execute job 76
DETAIL: Too many task tracker failures
task-tracker 执行器将任务(对分片的查询)分配给工作节点上的后台工作人员 运行ning,该工作节点连接到 localhost
到 运行 任务。如果您的超级用户在连接到 localhost
时需要密码,那么后台工作人员将无法连接。这可以通过在工作节点上添加一个 .pgpass
文件来连接到 localhost
.
您可以通过更改 pg_hba.conf
.
将以下行添加到 master pg_conf.hba
:
host all all [worker 1 ip]/32 trust
host all all [worker 2 ip]/32 trust
并为每个 worker-1 以下行 pg_hba.conf
:
host all all [master ip]/32 trust
host all all [worker 2 ip]/32 trust
然后跟随 worker-2 pg_hba.conf
:
host all all [master ip]/32 trust
host all all [worker 1 ip]/32 trust
这仅用于测试,请勿在未采取必要的安全预防措施的情况下将其用于生产系统。