Size: a a a

ClickHouse не тормозит

2020 September 14

DC

Denny Crane [not a Y... in ClickHouse не тормозит
скорее всего это кл-копир которому сказали что партишин all вместо tuple()
источник

O

Oleg in ClickHouse не тормозит
Дмитро Бур'янов
Всем привет, сейчас есть elk, есть лог nginx, logstash парсит єтот лог на кусочки(url в частности). Хочу писать из логстеша в КХ. Нашел logstash-output-clickhouse, но с 7м логстешем он не собирается и не работает. Бьіла идея писать правильно сформированьій строчньій json в фаил и потом закидьівать пачками в КХ, но єто какойто костьіль, писать через http output не самая хорошоя идея, куча лишнего и плюс не могу писать блоками(буфферная таблица тоже расматривается как вариант). Попробовал на го накидать програмку, и писать через пайп в нее и потом блоками в КХ, но понимаю, что єто тоже кастьіль. Как лучше сделать? От filebeat->logstash отказатся можно, но тогда вопрос доставки логов и формирования лога(url можно со стороньі nginx)  праспарсить, как вариант. Логрейт 4000/с. Спасибо
Если пишите типизированные логи в json, то оставайтесь на елк. Логгирующие либы нередко добавляют уровни вложенности к json (для удобства логирования объекта и исключения коллизий филдов например), очень неудобно будет потом делать его так называемым json each row
источник

O

Oleg in ClickHouse не тормозит
Дмитро Бур'янов
Готовьіе решения для логов видел, но у меня гараздо больше полей
Если не ошибаюсь, http в китктнхаус будет рабочим вариантом в вашем случае, если все же настаиваете
источник

ДБ

Дмитро Бур'янов... in ClickHouse не тормозит
Oleg
Если пишите типизированные логи в json, то оставайтесь на елк. Логгирующие либы нередко добавляют уровни вложенности к json (для удобства логирования объекта и исключения коллизий филдов например), очень неудобно будет потом делать его так называемым json each row
Єластик пишет до 7krqs, КХ на томже железе 40к, и судя по всему еще сможет. У меня цель не сторедж для логов, а отчетьі по группам запросов в реальном времени, поєтому я и разбираю url на компонентьі
источник

ЕО

Евгений Овчинников... in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
скорее всего это кл-копир которому сказали что партишин all вместо tuple()
Упростил задачу максимально, одна нода копирую из таблицы 1 в таблицу 2.

<yandex>
<remote_servers>
       <source_cluster>
               <shard>
                       <replica>
                               <host>localhost</host>
                               <port>9000</port>
                       </replica>
               </shard>
       </source_cluster>
       <target_cluster>
               <shard>
                       <replica>
                               <host>localhost</host>
                               <port>9000</port>
                       </replica>
               </shard>
       </target_cluster>
</remote_servers>
<max_workers>1</max_workers>
<tables>
   <table_test1>
               <cluster_pull>source_cluster</cluster_pull>
               <database_pull>default</database_pull>
               <table_pull>test1</table_pull>

               <cluster_push>target_cluster</cluster_push>
               <database_push>default</database_push>
               <table_push>test1_copy</table_push>

               <engine>
                       ENGINE=MergeTree()
                       ORDER BY EventDate
               </engine>
               <sharding_key>rand()</sharding_key>
   </table_test1>
</tables>
</yandex>
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Евгений Овчинников
Упростил задачу максимально, одна нода копирую из таблицы 1 в таблицу 2.

<yandex>
<remote_servers>
       <source_cluster>
               <shard>
                       <replica>
                               <host>localhost</host>
                               <port>9000</port>
                       </replica>
               </shard>
       </source_cluster>
       <target_cluster>
               <shard>
                       <replica>
                               <host>localhost</host>
                               <port>9000</port>
                       </replica>
               </shard>
       </target_cluster>
</remote_servers>
<max_workers>1</max_workers>
<tables>
   <table_test1>
               <cluster_pull>source_cluster</cluster_pull>
               <database_pull>default</database_pull>
               <table_pull>test1</table_pull>

               <cluster_push>target_cluster</cluster_push>
               <database_push>default</database_push>
               <table_push>test1_copy</table_push>

               <engine>
                       ENGINE=MergeTree()
                       ORDER BY EventDate
               </engine>
               <sharding_key>rand()</sharding_key>
   </table_test1>
</tables>
</yandex>
а если  ENGINE=MergeTree() Partition by tuple()
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Евгений Овчинников
Упростил задачу максимально, одна нода копирую из таблицы 1 в таблицу 2.

<yandex>
<remote_servers>
       <source_cluster>
               <shard>
                       <replica>
                               <host>localhost</host>
                               <port>9000</port>
                       </replica>
               </shard>
       </source_cluster>
       <target_cluster>
               <shard>
                       <replica>
                               <host>localhost</host>
                               <port>9000</port>
                       </replica>
               </shard>
       </target_cluster>
</remote_servers>
<max_workers>1</max_workers>
<tables>
   <table_test1>
               <cluster_pull>source_cluster</cluster_pull>
               <database_pull>default</database_pull>
               <table_pull>test1</table_pull>

               <cluster_push>target_cluster</cluster_push>
               <database_push>default</database_push>
               <table_push>test1_copy</table_push>

               <engine>
                       ENGINE=MergeTree()
                       ORDER BY EventDate
               </engine>
               <sharding_key>rand()</sharding_key>
   </table_test1>
</tables>
</yandex>
а вообще таблица большая? если там только одна партиция, то может проще insert/select сделать, копир же делает тоже самое, просто распараллеливает по партициям
источник

ЕО

Евгений Овчинников... in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
а если  ENGINE=MergeTree() Partition by tuple()
2020.09.14 23:20:47.583862 [ 6209 ] {} <Debug> ClusterCopier: Computing destination partition set, executing query: SELECT DISTINCT tuple() AS partition FROM _local.`.read_shard_0.target_cluster.default.test1_copy` ORDER BY partition DESC
2020.09.14 23:20:47.586000 [ 6209 ] {} <Error> ClusterCopier: Will retry: Code: 42, e.displayText() = DB::Exception: Function tuple requires at least one argument., Stack trace (when copying this message, always include the lines below):
источник

ЕО

Евгений Овчинников... in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
а вообще таблица большая? если там только одна партиция, то может проще insert/select сделать, копир же делает тоже самое, просто распараллеливает по партициям
так я просто тренируюсь, чтобы потом усложнить задачу. Ну и инструмент хотел прочувствовать.
источник

ЕО

Евгений Овчинников... in ClickHouse не тормозит
CREATE TABLE default.test1 (
   `EventDate` Date,
   `CounterID` UInt32,
   `UserID` UInt64
)
ENGINE=MergeTree()
ORDER BY EventDate;

INSERT INTO default.test1 FORMAT Values ('2018-01-01', 1, 1);
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Евгений Овчинников
2020.09.14 23:20:47.583862 [ 6209 ] {} <Debug> ClusterCopier: Computing destination partition set, executing query: SELECT DISTINCT tuple() AS partition FROM _local.`.read_shard_0.target_cluster.default.test1_copy` ORDER BY partition DESC
2020.09.14 23:20:47.586000 [ 6209 ] {} <Error> ClusterCopier: Will retry: Code: 42, e.displayText() = DB::Exception: Function tuple requires at least one argument., Stack trace (when copying this message, always include the lines below):
>SELECT DISTINCT tuple() AS partition

видимо копир не умеет таблицы с одной партицией.

тренируйтесь на

CREATE TABLE default.test1 (
   EventDate Date,
   CounterID UInt32,
   UserID UInt64
)
ENGINE=MergeTree() parti
tion by toYYYYMM(EventDate)
ORDER BY EventDate;
источник

ЕО

Евгений Овчинников... in ClickHouse не тормозит
хорошо, благодарю Вас!
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
скорее всего это баг в новом копире , его переделали полностью в 20.4
можно взять копир от 20.3 , но в целом нет смысла копировать маленькие таблицы копиром, проще insert into ...  select from remote()
источник

ЕО

Евгений Овчинников... in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
скорее всего это баг в новом копире , его переделали полностью в 20.4
можно взять копир от 20.3 , но в целом нет смысла копировать маленькие таблицы копиром, проще insert into ...  select from remote()
Да, получилось!
источник

ЕО

Евгений Овчинников... in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
скорее всего это баг в новом копире , его переделали полностью в 20.4
можно взять копир от 20.3 , но в целом нет смысла копировать маленькие таблицы копиром, проще insert into ...  select from remote()
мне уже сегодня нужно через гигабитную сетку таскать около 300 гигов данных, таблицы растут и нужен хороший инструмент.
источник

DT

Dmitry Titov in ClickHouse не тормозит
Евгений Овчинников
мне уже сегодня нужно через гигабитную сетку таскать около 300 гигов данных, таблицы растут и нужен хороший инструмент.
Люди самописными запросами спокойно перешардируют сотни терабайт и возможно эффективнее чем копиер
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Евгений Овчинников
мне уже сегодня нужно через гигабитную сетку таскать около 300 гигов данных, таблицы растут и нужен хороший инструмент.
вообще вы понимаете что копир не для этого (а для перезда из старого кластера в новый),
и проще не инсертить копиром, а либо делать реплики либо копировать партиции
источник

ЕО

Евгений Овчинников... in ClickHouse не тормозит
копировать через фризы?
источник

ЕО

Евгений Овчинников... in ClickHouse не тормозит
спасибо за советы, я все варианты попробую и пойму какой лучше подходит. Сегодня я начал с копира, т.к. он показался самым простым вариантом.
источник
2020 September 15

MF

Mikhail Filimonov in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
в зукипере ничего вручную создавать не нужно.
Да, если ничего не изменилось за последние месяцы, то чтобы сделать chroot в зукипере нужно чтоб путь существовал. Зукипер сам ничего не создаёт в момент подключения, а чтоб КХ мог его создать - ему пришлось бы сначала подключиться к корню зукипера (без chroot).
источник