ClickHouse + Graphite: me pehea te whakaiti i te kohi mokowā kōpae

ClickHouse + Graphite: me pehea te whakaiti i te kohi mokowā kōpae

Tena koe, habr.

Mena ka whakamahia e tetahi te punaha graphite-tukutuku ka pa ki tetahi take mahi rokiroki whakahinu (IO, kua pau te mokowā kōpae), katahi te tupono ka tukuna a ClickHouse hei whakakapinga kia kotahi. Ko tenei tauākī e tohu ana kua whakamahia kētia te whakatinanatanga tuatoru hei inenga whiwhi daemon, hei tauira kaituhi waro ranei haere-waro.

He pai te whakatau a ClickHouse i nga raru kua whakaahuahia. Hei tauira, i muri i te whakawhiti i te 2TiB o nga raraunga mai i te muhumuhu, ka uru ki te 300GiB. E kore ahau e noho ki runga i nga korero whakatairite; he maha nga tuhinga mo tenei kaupapa. I tua atu, tae noa ki tenei wa, kaore nga mea katoa i tino pai ki to maatau rokiroki ClickHouse.

Nga raru mo te waahi kua pau

I te titiro tuatahi, me mahi pai nga mea katoa. Whai muri tuhinga, hanga he whirihora mo te kaupapa rokiroki inenga (atu retention), ka hanga he ripanga kia rite ki te taunakitanga o te tuara kua tohua mo te graphite-web: waro-clickhouse+graphite-clickhouse ranei whare karepe, i runga i te aha te puranga e whakamahia ana. Na... ka rere te poma taima.

Kia mohio ai koe ko tehea, me mohio koe me pehea te mahi whakauru me te huarahi ora o nga raraunga i roto i nga tepu miihini o te whanau *Rakau Hanumi ClickHouse (nga tūtohi i tangohia mai i whakaarotanga Alexey Zatelepin):

  • Kua whakauruhia блок raraunga. I a maatau, ko nga inenga i tae mai.
    ClickHouse + Graphite: me pehea te whakaiti i te kohi mokowā kōpae
  • Ka kōmakaia ia poraka kia rite ki te kī i mua i te tuhi ki te kōpae. ORDER BYi tohua i te wa e hanga ana i te ripanga.
  • Whai muri i te whakariterite, кусок (part) ka tuhia te raraunga ki te kōpae.
    ClickHouse + Graphite: me pehea te whakaiti i te kohi mokowā kōpae
  • Ka aro turuki te tūmau i te papamuri kia kore ai e maha nga waahanga penei, ka whakarewahia te papamuri слияния (merge, ka hanumi a muri ake nei).
    ClickHouse + Graphite: me pehea te whakaiti i te kohi mokowā kōpae
    ClickHouse + Graphite: me pehea te whakaiti i te kohi mokowā kōpae
  • Ka mutu te whakahaere o te tūmau ka hanumi i a ia ano ka mutu te rere o te raraunga ki roto i te партицию (partition), engari ka taea e koe te tiimata i te mahi ma te whakahau OPTIMIZE.
  • Mena kotahi noa te waahanga e toe ana i roto i te wehewehenga, karekau koe e kaha ki te whakahaere i te hanumi ma te whakamahi i te whakahau o mua; me whakamahi koe OPTIMIZE ... FINAL

Na, ka tae mai nga inenga tuatahi. Na ka tango ratou i etahi waahi. Ka rereke pea nga huihuinga o muri mai i runga i nga mea maha:

  • Ko te taviri wehewehe he iti rawa (he ra) he nui rawa ranei (he maha nga marama).
  • Ka uru pea te whirihora pupuri ki etahi paepae whakahiato raraunga nui i roto i te wehewehenga hohe (kei te waahi ka tuhia nga ine), kaore ranei.
  • Mena he nui nga raraunga, katahi ka nui kee nga waahanga tuatahi, na te whakakotahitanga papamuri (mehemea ka kowhiria e koe he taviri wehewehe kore-pai), ka kore e hanumi ki nga wahi iti hou.

A he rite tonu te mutunga. Ko te waahi e nohoia ana e nga inenga i ClickHouse ka piki noa mena:

  • kaua e tono OPTIMIZE ... FINAL ā-ringa ranei
  • kaua e whakauru raraunga ki roto i nga waahanga katoa i runga i te kaupapa haere tonu, kia wawe ka timata te hanumi papamuri

Ko te tikanga tuarua te ahua ngawari ki te whakatinana, na reira, he he, i whakamatauria i te tuatahi.
I tuhia e ahau he tuhinga python tino ngawari i tukuna i nga inenga mo ia ra mo nga tau e 4 kua pahure ake nei me te whakahaere cron ia haora.
I te mea ko nga mahi katoa a ClickHouse DBMS kei runga i te meka ka mahi tenei punaha i nga mahi papamuri katoa, engari kaore i te mohiotia ahea, kaore i taea e au te tatari mo te wa ka tiimata nga waahanga nui tawhito ki te whakakotahi me nga mea iti hou. I marama mai me rapu huarahi ki te whakaaunoa i nga arotautanga kaha.

ClickHouse + Graphite: me pehea te whakaiti i te kohi mokowā kōpae

Nga korero kei roto i nga ripanga punaha ClickHouse

Kia titiro tatou ki te hanganga tepu pūnaha.wahanga. He korero matawhānui tenei mo ia wahanga o nga ripanga katoa i runga i te tūmau ClickHouse. Kei roto, me era atu mea, nga pou e whai ake nei:

  • ingoa db (database);
  • ingoa tepu (table);
  • ingoa wehewehe me te ID (partition & partition_id);
  • i te wa i hangaia ai te waahanga (modification_time);
  • te iti me te morahi o te ra i roto i tetahi waahanga (ko te wehewehe i te ra) (min_date & max_date);

He tepu ano system.graphite_retentions, me nga mara whakamere e whai ake nei:

  • ingoa db (Tables.database);
  • ingoa tepu (Tables.table);
  • tau ineine ka hoatu te whakahiatotanga e whai ake nei (age);

Na:

  1. Kei a matou he ripanga mohanga me te ripanga ture whakahiato.
  2. Ka whakakotahihia e matou o raatau whakawhitinga ka whiwhi i nga ripanga katoa *GraphiteMergeTree.
  3. Kei te rapu matou mo nga waahanga katoa kei roto:
    • neke atu i te kotahi wahi
    • kua tae mai ranei te wa ki te whakamahi i te ture whakahiato e whai ake nei, a modification_time pakeke ake i tenei wa.

Реализация

Ko tenei tono

SELECT
    concat(p.database, '.', p.table) AS table,
    p.partition_id AS partition_id,
    p.partition AS partition,
    -- Самое "старое" правило, которое может быть применено для
    -- партиции, но не в будущем, см (*)
    max(g.age) AS age,
    -- Количество кусков в партиции
    countDistinct(p.name) AS parts,
    -- За самую старшую метрику в партиции принимается 00:00:00 следующего дня
    toDateTime(max(p.max_date + 1)) AS max_time,
    -- Когда партиция должна быть оптимизированна
    max_time + age AS rollup_time,
    -- Когда самый старый кусок в партиции был обновлён
    min(p.modification_time) AS modified_at
FROM system.parts AS p
INNER JOIN
(
    -- Все правила для всех таблиц *GraphiteMergeTree
    SELECT
        Tables.database AS database,
        Tables.table AS table,
        age
    FROM system.graphite_retentions
    ARRAY JOIN Tables
    GROUP BY
        database,
        table,
        age
) AS g ON
    (p.table = g.table)
    AND (p.database = g.database)
WHERE
    -- Только активные куски
    p.active
    -- (*) И только строки, где правила аггрегации уже должны быть применены
    AND ((toDateTime(p.max_date + 1) + g.age) < now())
GROUP BY
    table,
    partition
HAVING
    -- Только партиции, которые младше момента оптимизации
    (modified_at < rollup_time)
    -- Или с несколькими кусками
    OR (parts > 1)
ORDER BY
    table ASC,
    partition ASC,
    age ASC

ka whakahoki ia o nga *GraphiteMergeTree wehewehe ripanga me whakawātea te mokowā kōpae ki te hanumi. Heoi ano te mea hei mahi ma ratou katoa me te tono OPTIMIZE ... FINAL. Ko te whakatinanatanga whakamutunga ka mau ki te meka kaore he take ki te pa ki nga waahanga me te tuhi kaha.

Koinei tonu te mahi a te kaupapa graphite-ch-optimizer. Ko nga hoa o mua mai i Yandex.Market i whakamatau i te mahi, ka kitea te hua o te mahi i raro nei.

ClickHouse + Graphite: me pehea te whakaiti i te kohi mokowā kōpae

Mena kei te whakahaere koe i te papatono i runga i te tūmau me ClickHouse, ka timata noa te mahi i roto i te aratau daemon. Kia kotahi haora ka mahia he tono, ka tirohia mena kua puta nga waahanga hou kua pakeke ake i te toru ra ka taea te whakatika.

Ko ta maatau mahere tonu ko te whakarato i te iti rawa o nga putea nama, a mena ka taea ano hoki te rpm.

Engari o te mutunga

I roto i nga marama 9+ kua hipa kua noho ahau ki roto i taku kamupene inogames He maha nga wa i pau ki te tarai i te waahi o ClickHouse me te graphite-web. He wheako pai, i hua mai i te whakawhiti tere mai i te muhumuhu ki ClickHouse hei rokiroki inenga. Ko te tumanako ko tenei tuhinga he timatanga o te raupapa e pa ana ki nga whakapainga kua mahia e matou ki nga momo waahanga o tenei puranga, me nga mahi ka mahia a muri ake nei.

He maha nga rita o te pia me nga ra whakahaere i pau ki te whakawhanake i te tono, me te v0rewera, e hiahia ana ahau ki te whakapuaki i taku mihi ki a ia. A mo te arotake ano i tenei tuhinga.

Whārangi kaupapa i runga i te github

Source: will.com

Tāpiri i te kōrero