所有分布式查询都使用 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效果相同

我是否遗漏了切换任务执行程序所必需的其他配置更改?

编辑,更多信息:

到目前为止所有表格的分布如下:

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

这仅用于测试,请勿在未采取必要的安全预防措施的情况下将其用于生产系统。