Posuzování životního Cyklu Náhrobky v Apache Cassandra

Tento příspěvek je první část ze série příspěvků na blogu týkající se životního cyklu a řízení náhrobky.

mazání a vypršení platnosti dat v Cassandře je něco, co byste měli pečlivě naplánovat. Zvláště pokud se chystáte smazat obrovské množství dat najednou. Bez řádného plánování to může clusteru přinést problémy, jako je zvýšení latence čtení a stopy využití disku. V celém tomto příspěvku, popíšu způsob řešení tohoto a jeho námitek.

nejprve se podívejme na základy. V Cassandře jsou datové soubory (SSTables) existující na disku neměnné soubory. Když v Cassandře něco odstraníme, vytvoří se nový sstable, který obsahuje značku. Tato značka označuje, který oddíl, řádek nebo buňka byla odstraněna spolu s časovým razítkem pro toto odstranění. Tato značka odstranění se nazývá náhrobek.

smazaná data a náhrobek mohou koexistovat na disku během období nazývaného gc_grace_seconds, což je ve výchozím nastavení 10 dní. Během této doby, i když údaje mohou stále existovat na disku, to není vrácena klientovi, pokud dotazovaný. Což znamená, že z pohledu klienta jsou data smazána, jakmile provedete příkaz delete. Z provozního hlediska však mohou data i náhrobek stále existovat a zabírat místo na disku. Tato smazaná data, která na disku stále existují, se nazývají “ stínovaná data.“

N. B.: V předchozím odstavci jsem říct, že data a náhrobky „může stále existovat na disku“ (důraz na „může“), protože pokud zhutnění dochází, že zahrnuje data a náhrobky, pak data je vystěhován. Ale náhrobek zůstane, pokud gc_grace_seconds neprošel.

gc_grace_seconds je bezpečnostní mechanismus, který zajistí, že náhrobek má dostatek času na replikaci do všech uzlů, které mají replika stínu data. Aby byl tento bezpečnostní mechanismus úspěšný, musíte být schopni opravit cluster každých gc_grace_seconds. To znamená, že pokud používáte výchozí 10 dny pro gc_grace_seconds, oprava musí být zahájena a dokončena během každých 10 dnů. Oprava slouží k zabránění zombie dat v clusteru. Nebudu se zabývat podrobnostmi o tom, jak se to může stát, ale v podstatě, zombie data nastane, když odstraníte data, ale vrátí se někdy později.

Po gc_grace_seconds prošel, data a náhrobní kámen může nakonec být vystěhováni z disku, obnovení místa na disku dříve používaný nimi (Obrázek 1). ETA pro uvolnění místa na disku je jedním z prvních bodů, které chci v tomto příspěvku objasnit. Při použití Cassandry mnoho lidí považuje tento mechanismus za překvapivý, tj. Tento zmatek je obvykle rychle objasněn, jakmile se lidé dozví o náhrobcích a gc_grace_seconds. Zdá se však, že operátoři mají tendenci si myslet, že data a náhrobky jsou vystěhovány hned po dokončení gc_grace_seconds. Ve skutečnosti je nezbytné si uvědomit, že to nemusí (a nemá tendenci) být pravda. Obvykle to trvá déle než gc_grace_seconds k tomuto vystěhování a obnovení místa na disku.

Obrázek 1 – lisování ve stínu data s prošlou a non-vypršela náhrobky

vystěhování bylo uvedeno výše se stane, když zhutnění dochází, že zahrnuje SSTables, které mají stínu dat a náhrobní kámen. Teprve poté jsou data účinně odstraněna a místo na disku obnoveno. Je důležité si uvědomit, že i když gc_grace_seconds prošel a SSTable s stínu dat je zhutněna s další SSTable, že nemá náhrobek, pak ve stínu data nejsou očištěna. Totéž se děje u značek náhrobku, tj. pokud SSTable s náhrobkem není zhutněn se všemi SSTables, které stále obsahují data, která byla odstraněna, náhrobek není z disku vystěhován. Důvodem je to, že během zhutňování Cassandra neví, co je v SSTables, které nejsou zapojeny do zhutnění. Takže nemá žádný způsob, jak vědět, že může zahodit data, protože nevidí náhrobek. Můžete to vidět na obrázku 2, kde ačkoli gc_grace_seconds uplynulo pro oba náhrobky, po zhutnění není nic vystěhováno.

Obrázek 2 – lisování ve stínu dat a jejich náhrobky samostatně

Vzhledem k využití disku pomocí dat a náhrobek značku, hromadění náhrobky může mít vliv na čtení, latence, protože Cassandra potřebuje číst spousta náhrobky, než se vrátí živá data.

odstranění dat obvykle není problém, pokud jsou tato odstranění malá a řídká. Protože během životního cyklu přirozeného zhutnění Cassandra nakonec obnoví místo na disku a očištěné náhrobky. Pokud však odstraníte velké množství dat najednou, vytvoří to mnoho náhrobků a může rychle ovlivnit vaši latenci čtení.

pokud potřebujete odstranit velké množství dat ad-hoc, pak jsou v dalším příspěvku na blogu některé kroky, které můžete podniknout ke zmírnění rizik.

e-mail

Autor

  • Pedro Gordo

Zájem o práci s Pedrem? Naplánujte technický hovor.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.