2012-10-18 10 views
5

Mamy proces twórczo nazwany "bootstrap", który konfiguruje nasze klastry Cassandra dla danego oprogramowania w środowisku (Dev1, Dev2, QA, ..., PROD). Ten bootstrap Tworzy/aktualizuje przestrzenie kluczy i rodziny kolumn, a także zapełnia dane początkowe w trybie nieprzechodni.Jak mogę zapytać klastra Cassandra o jego metadane?

Używamy Astyanax, ale możemy użyć Hectora do ładowania.

Biorąc pod uwagę, że inny zespół zdecydował, że każde środowisko będzie miało własne nazwy centrum danych. I biorąc pod uwagę, że chcę, aby to działało w praktyce, kiedy przechodzimy z dwóch do większej liczby centrów danych. I biorąc pod uwagę, że będziemy używać PropertyFileSnitch:

Jak mogę poprosić klaster Cassandra o jego układ? (Bez ostrzału do)

W szczególności potrzebuję znać nazwy centrów danych, aby móc tworzyć lub aktualizować przestrzeń kluczy z poprawnymi ustawieniami opcji strategii podczas korzystania z NetworkTopologyStrategy. Chcemy 3 kopie na centrum danych. Niektórzy envowie mają jedno i kilka mają dwa, w końcu produkcja będzie miała więcej.

Czy istnieje połączenie CQL lub Thrift, które da mi informacje o układzie klastra?

Wyglądałem jednak na kilka OWO w różnych zestawach dokumentów i trochę googlowałem. Myślałem, że zapytam tutaj, zanim przekopię kod nodetoola.

Odpowiedz

4

Nie jestem pewien, jak Hector lub Astyanax to ujawniają, ale podstawowa metoda Thrift describeRing(keyspace) powinna dać ci to, czego szukasz. Część informacji, która zawiera to są EndpointDetails elemencie, który wygląda tak:

endpoint_details=[EndpointDetails(datacenter='datacenter1', host='127.0.0.1', rack='rack1')] 

Wraz z pozostałymi wynikami tej metody, powinieneś być w stanie dowiedzieć się żetony, DCS, stojaki, i tak dalej, dla każdego węzła w klastrze.

Ponieważ używasz klienta Java, możesz również użyć niektórych metod JMX (których używa nodetool) do opisania bardziej wybranych części klastra. Na przykład możesz spojrzeć na znicza mbean ("org.apache.cassandra.db:type=EndpointSnitchInfo"), w szczególności metody getDatacenter(ip) i getRack(ip).

0

Cóż, inną opcją (odpowiedź pośrednia) jest to, że możesz zrobić to, co robi PlayOrm, a wszystkie utworzone przez niego CF-y przechodzą przez ciebie, a Ty zapisujesz niektóre dane, które chcesz, aby można było wyszukiwać własne dane, choć oznacza to, że inne i lepiej, żebyś przeszedł przez tego samego środkowego mężczyznę, więc wszystkie informacje są dostępne. Cóż, pewnie nie chcesz, żebyś chciał, ale tylko pomysł, abyś pomyślał o innych potencjalnych rozwiązaniach.

Powiązane problemy