2016-04-29 6 views
2

Ich versuche Performance-Test verteilte Joins auf Citus 5.0. Ich habe einen Master und zwei Worker-Knoten und einige Hash-verteilte Tabellen, die sich wie erwartet mit der Standardkonfiguration verhalten. Ich muss den Task-Tracker-Executor verwenden, um Abfragen zu testen, die erneut partitioniert werden müssen.Alle verteilten Abfragen scheitern mit Citus Task Tracker Executor

Nach der Einstellung citus.task_executor_type bis task-tracker schlagen alle Abfragen mit verteilten Tabellen fehl. Zum Beispiel:

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 

citus.task_executor_type in postgresql.conf Einstellung hat die gleiche Wirkung.

Gibt es eine andere Konfigurationsänderung, die ich vermisse, die notwendig ist, um den Task Executor zu wechseln?

EDIT, weitere Informationen:

  • PostGIS auf allen Knoten installiert ist
  • postgres_fdw auf dem Master installiert ist
  • Alle anderen Konfiguration ist unberührte

der Tabellen Alle bisher wurden verteilt wie:

SELECT master_create_distributed_table('table_name', 'id', 'hash'); 
SELECT master_create_worker_shards('table_name', 8, 2); 

Das Schema für distrib_mcuser_car ist ziemlich groß, also hier ein einfacheres Beispiel:

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 
+0

Normalerweise sollte nur "task_executor_type" auf "task-tracker" eingestellt werden. Könnten Sie uns mehr Informationen geben? Welche Partitionsmethode hast du benutzt? Wie viele Scherben hast du? Was ist das Schema von 'distrib_mcuser_car'? Benutzt du irgendwelche anderen Plugins? Haben Sie andere Konfigurationsänderungen vorgenommen? –

+0

@ AhmetErenBaşak Ich habe die Frage mit weiteren Informationen aktualisiert. Danke für Ihre Hilfe! –

Antwort

3

Die Aufgabe-Tracker Testamentsvollstrecker Aufgaben (Abfragen auf Scherben) auf einem Hintergrund Arbeiter auf dem Arbeiter-Knoten ausgeführt zuweist, die localhost verbindet um die Aufgabe auszuführen. Wenn Ihr Superuser bei der Verbindung mit localhost ein Kennwort benötigt, kann der Hintergrund-Worker keine Verbindung herstellen. Dies kann durch Hinzufügen einer Datei .pgpass auf den Worker-Knoten für die Verbindung mit localhost gelöst werden.

2

Sie können die Authentifizierungseinstellungen ändern und zulassen, dass Mitarbeiter ohne Kennwortprüfung eine Verbindung zum Master herstellen, indem sie pg_hba.conf ändern.

Add folgende Zeile pg_conf.hba zu meistern:

host all    all    [worker 1 ip]/32   trust 
host all    all    [worker 2 ip]/32   trust 

und folgenden Zeilen für jeden Arbeitnehmer-1 pg_hba.conf:

host all    all    [master ip]/32    trust 
host all    all    [worker 2 ip]/32   trust 

Und folgendes Arbeiter-2 pg_hba.conf:

host all    all    [master ip]/32    trust 
host all    all    [worker 1 ip]/32   trust 

Dies ist nur für die Prüfung gedacht, verwenden Sie diese nicht für prod ohne die notwendigen Sicherheitsvorkehrungen zu treffen.