@clickhouse_ru

Страница 63 из 723
Pavel
07.02.2017
10:57:48
офигеть!)

каждый раз сложный вопрос который донимает меня неделями уже решен в CH:) Супер!

Dmitry
07.02.2017
10:59:11
Только надо быть осторожно, в ней мало гарантий и есть небольшой риск потерять данные

Pavel
07.02.2017
11:03:41
в целом это для моего типа данных приемлемо

Google
Evgeny
07.02.2017
11:13:25
Только надо быть осторожно, в ней мало гарантий и есть небольшой риск потерять данные
то есть, Buffer таблица как раз создана для того, чтобы в нее по 1 строке записывать а она сама сливает данные в основную таблицу?

Иван
07.02.2017
11:55:05
доброго времени суток! я тупой, с линуксом на вы. расскажите как правильно развернуть CH на сервере, у которого нет доступа к интернету, или поделитесь полезной ссылкой. я попытался это сделать своими кривыми руками у меня ch-сервер не запускается и пишет ошибки: "No directory, logging in with HOME=/", "access to file denied: /opt/clickhouse/core" дерьмом кидаться разрешается, ибо очень хочу поюзать CH и вытерплю все.

Pavel
07.02.2017
11:56:36
дык скачайте пакет если ос debian-like руками

вот отсюда: http://repo.yandex.ru/clickhouse/trusty/pool/main/c/clickhouse/

Иван
07.02.2017
11:57:49
так и сделал

Pavel
07.02.2017
11:58:02
и поставьте у себя как sudo dpkg -i <имя_пакета>

а как запускаете?

от рута?

Иван
07.02.2017
11:58:58
Pavel
07.02.2017
12:00:02
sudo service clickhouse-server start?

Иван
07.02.2017
12:00:09
скачал эти файлы, потом с помощью dpkg-scanpackage сделал apt реп и добавил его в source.list

Pavel
07.02.2017
12:01:43
ну sudo stat /opt/clickhouse/core

Google
Pavel
07.02.2017
12:01:49
sudo stat /opt/clickhouse

и наконец sudo stat /opt

Roman
07.02.2017
13:36:40
А через interserver_http_port можно произвести какие-нить деструктивные действия с сервером? Удалить данные, заальтерить или еще чего?

Pavel
07.02.2017
13:38:56
@rlomonosov А вы к нему напрямую обращаетесь?

Roman
07.02.2017
13:42:50
Я за него беспокоюсь. Он хоть и торчит во внутреннюю сеть, но мало ли

Pavel
07.02.2017
13:47:56
Через него можно налить каких-нибудь битых данных, но надо постараться, чтобы соблюсти нужный формат. Изменение метаданных через него выполнить нельзя.

Alexey
07.02.2017
13:50:50
Я за него беспокоюсь. Он хоть и торчит во внутреннюю сеть, но мало ли
Через него можно скачать данные. Так что во внешнюю сеть торчать не должно.

Pavel
07.02.2017
13:51:59
залить можно данные в лююубю таблицу или толлько настреонную как ditributed?

Slach
07.02.2017
13:52:56
залить можно в любую и пока это вроде как быстрее выбрать конкретный сервер и залить в него, вместо того чтобы лить через distributed таблицу... коллеги я прав?

Roman
07.02.2017
13:55:04
> @milovidov_an Через него можно скачать данные. Так что во внешнюю сеть торчать не должно. Скачивание не беспокоит - он действительно торчит только во внутреннюю сеть. Но по ней шарятся всякие сканеры безопасности и любят тыкать куда не просят

papa
07.02.2017
14:26:38
Всем привет! Скажите по опыту, какой подход лучше? https://groups.google.com/forum/#!topic/clickhouse/D_XGEQ6DDNE Мне кажется, что 2-й, но вроде в Метрике что-то ближе к первому используется, а?
завсиит от того как вы хотите объединить данные и какие запросы вы хотите по ним делать. я бы наверное сделал 5 Nested структур с конверсиями, но может быть у вас такая схема работать не будет.

Alexander
07.02.2017
14:31:04
5 Nested структур меня смущают тем, что у них должно быть в каждой одинаковое количество элементов. Т.е. если у одного профиля 20 целей, то мне и для всех нужно сделать массив из 20 целей с нулевыми элементами, иначе будут проблемы при развертке. В принципе это похоже на вариант с большим количеством колонок

Вообще Nested выглядит больше синтаксическим сахаром над массивом, не давая какого-то решения. Сразу возникают вопросы о слиянии, например. Я не очень понимаю, как должны сливаться два массива, так как в CH нет сложения массивов или умножения массива на число

Интуитивно хотелось сделать как-то так сначала CREATE TABLE test.stat ( date Date, offer_id UInt64, ... profiles Nested ( id UInt64, ... ), goals Nested ( id UInt64, ... ) ) ENGINE = CollapsingMergeTree(date, (date, offer_id), 8192, sign); но на самом деле это не сработает, так как целей больше профилей, и, например, запрос с array join profiles as profile, goals as goal вернет ошибку и опять же проблема со слиянием

papa
07.02.2017
14:50:16
а если бы у вас была обычная реационная схема, без всей этой бигдаты, у вас бы как эти данные лежали?

реляционная*

Alexander
07.02.2017
14:54:02
сейчас это лежит в Postgres, есть три таблички отдельные – со статистикой маркетплейса, со статистикой по профилям, со статисткой по целям при запросах это все довольно медленно джойнится

Slach
07.02.2017
15:22:05
Citusdata пробовали?

Alexander
07.02.2017
15:34:28
не пробовали, а стоит? у нас шардирование обычно на уровне клиентов, если приходит большой клиент, ему просто выделяется отдельная железка

выделять по несколько железок кажется пока жирновато)

Google
Slach
07.02.2017
15:38:23
ок ясно ну в том плане что в Цитусдата есть columnar storage cstore_fdw и оно может вам на join, group by как то ускорить без перехода на другую платформу но чего то такого советовать вам я боюсь =) в кликхаусе вместо таблиц измерений будут "словари" и в общем я не вижу проблем в случае если у вас "много пустых значений" и вроде как джойнить словари вполне себе нормальная затея и про ARRAY JOIN почитать наверное надо еще раз внимательнее насколько оно вам подходит

Alexander
07.02.2017
15:50:52
за cstore_fdw спасибо, для него тоже задачка у нас есть )

много пустых значений меня не пугает, я скорее думаю о том, что меньшее из бед – раздувание кол-ва колонок или раздувание строк с дублированием информации

Aleksey
07.02.2017
15:53:46
Привет! Есть задача: заранее завести побольше логических шардов, чтобы отсрочить решардинг. И есть 2 варианта решения: 1-й вариант: поднять под каждый шард отдельный инстанс ClickHouse. Т.е. изначально на каждом физическом сервере будет несколько инстансов, а при росте количества данных мы просто разнесём инстансы по разным машинам. 2-й вариант: в рамках одного инстанса завести несколько копий-"шардов" каждой таблицы, натравить на них Merge-таблицы, а Distributed-таблицы будут смотреть уже на эти Merge-таблицы. Первый вариант выглядит более правильным, но мы сразу получаем много инстансов, усложняется администрирование. Во втором варианте смущает связка двух сложных механизмов Merge+Distributed: есть опасения по поводу производительности. Что посоветуете? P.S. В Distributed не пишем, только читаем, т.е. шардированием управляем вручную.

Alexey
07.02.2017
16:06:14
Привет! Есть задача: заранее завести побольше логических шардов, чтобы отсрочить решардинг. И есть 2 варианта решения: 1-й вариант: поднять под каждый шард отдельный инстанс ClickHouse. Т.е. изначально на каждом физическом сервере будет несколько инстансов, а при росте количества данных мы просто разнесём инстансы по разным машинам. 2-й вариант: в рамках одного инстанса завести несколько копий-"шардов" каждой таблицы, натравить на них Merge-таблицы, а Distributed-таблицы будут смотреть уже на эти Merge-таблицы. Первый вариант выглядит более правильным, но мы сразу получаем много инстансов, усложняется администрирование. Во втором варианте смущает связка двух сложных механизмов Merge+Distributed: есть опасения по поводу производительности. Что посоветуете? P.S. В Distributed не пишем, только читаем, т.е. шардированием управляем вручную.
Первый вариант имеет следующие недостатки: - много инстансов на одном сервере сложнее в эксплуатации: директории, порты, скрипты start/stop и т. п; - количество потоков для обработки запроса будет расчитываться неверно, придётся вручную ограничивать max_threads; - вообще, с распределением ресурсов между инстансами могут быть проблемы. Второй вариант имеет следующие недостатки: - при использовании Merge таблиц, отключается автоматический перенос в PREWHERE; В обеих вариантах, по сравнению с одной таблицей, будет чуть хуже распределение работы по ядрам.

Aleksey
07.02.2017
16:12:32
А явно заданный PREWHERE в Merge будет работать?

Alexey
07.02.2017
16:25:34
Будет.

Aleksey
07.02.2017
16:27:37
спасибо!

f1yegor
07.02.2017
19:06:54
Чтобы состояние кластера показываел
это надо в core сделать, или можно через http интерфейс?

Alexey
07.02.2017
19:13:53
Лучше через HTTP интерфейс.

f1yegor
07.02.2017
19:14:37
если бы кто написал небольшую спеку, я займусь

Anton
07.02.2017
19:26:36
Здравствуйте. Скажите, а clickhouse поддерживает https из коробки, или проще поставить перед ним nginx ?

Alexey
07.02.2017
19:27:39
> проще поставить перед ним nginx

Anton
07.02.2017
19:27:46
Окей )

А то шифрование как-то иначе не понятно как реализовать.

Roman
07.02.2017
19:28:17
а что понимается под состоянием кластера? стандартный мониторинг не дает достаточно информации?

Alexey
07.02.2017
19:30:17
Я не знаю, что точно имел ввиду Виктор. Наверное, это картинка, где каждому серверу соответствует квадратик; наглядно представлены шарды и реплики, по цвету квадратика можно определить, жив ли сервер, посмотреть отставание реплик, какие-либо метрики производительности, а также system.processes и system.merges.

Roman
07.02.2017
19:32:40
думаю, можно расширить https://github.com/f1yegor/clickhouse_exporter дополнительными запросами и на их основе построить дашборд в графане

или добавить поддержку кастомных запросов в бд, как это сделано в postgres exporter

Google
f1yegor
07.02.2017
19:44:56
@the_real_jkee ^

Виктор
07.02.2017
19:45:58
О, крутяк

Я попробую написать что хочется более детально

f1yegor
07.02.2017
19:50:07
потому что да, часть инфы я уже собираю. https://grafana.net/dashboards/882 например replica leaders & read only replicas

Evgeny
07.02.2017
20:42:47
к вчерашнему вопросу насчет Buffer и проблем построчной записи - добавил поддержку Buffer таблицы в проект для питона infi.clickhouse_orm, 50 тыс записей пока в течении минут 40 полет на ноутбуке нормальный, никаких проблем. если кто пользуется этой библиотекой, то вот тут код с поддержкой буфера https://github.com/Infinidat/infi.clickhouse_orm/pull/15

f1yegor
07.02.2017
20:56:40
вы хотите сказать что 50к записей вставляются 40 минут?

или тестируете с 50к в секунду уже 40 минут?

papa
07.02.2017
21:10:13
возможно 50к записей это 20rps*40 минут.

в этом случае ожидается что полет будет нормальный и проблем не будет.

r
07.02.2017
21:12:04
Производительность при вставке данных. Данные рекомендуется вставлять пачками не менее 1000 строк или не более одного запроса в секунду. Что если вставлять более 1K строк чаще чем раз в секунду (большими инсертами). Как это будет сказываться на производительности? Оптимально ли это? Рекомендации указанные в руководстве относятся к инстансу/базе/таблице?

papa
07.02.2017
21:15:50
Buffer-таблицы https://clickhouse.yandex/reference_ru.html#Buffer добавляют к этому некоторые возможности.

Alexey
07.02.2017
21:19:25
Производительность при вставке данных. Данные рекомендуется вставлять пачками не менее 1000 строк или не более одного запроса в секунду. Что если вставлять более 1K строк чаще чем раз в секунду (большими инсертами). Как это будет сказываться на производительности? Оптимально ли это? Рекомендации указанные в руководстве относятся к инстансу/базе/таблице?
Батчи можно сделать больше. Например, 100k строк в секунду. В зависимости от данных, возможно до нескольких миллионов строк в секунду. Но увеличивать частоту вставок не стоит. Рекомендация относится к одной таблице. Но при наличии большого количества серверов, возможна слишком большая нагрузка на ZooKeeper, и это ограничивает частоту вставок на весь кластер.

Evgeny
07.02.2017
21:26:09
вы хотите сказать что 50к записей вставляются 40 минут?
у меня просто такой поток реальных данных, примерно 30-100 сообщений в секунду. я их принимаю и записываю

Alexey
07.02.2017
21:33:40
Да.

r
07.02.2017
21:34:56
Алексей, спасибо за ответ, самое главное стало ясно что лучше делать вставки раз/сек, не чаще в каждую из таблиц.

Т.е. к примеру если имеем 1000 таблиц, следуем рекомендации - запись в каждую из них не чаще раз/сек, то каких-либо негативных последствий от общего количества вставок (1000/сек) ожидать не стоит?

Anton
07.02.2017
21:53:02
Пытались собрать из f87ae68, не удалось скомпилировать dbms/src/Client/Client.cpp, line 254, не нашлась функция read_history. Кажется, строчкой выше написали #ifdef USE_READLINE, а имели в виду #if USE_READLINE.

А еще у вас больше 20Гб тестов, что съело место в разделе. Поправимо, то стало внезапностью.

Alexey
07.02.2017
22:27:00
Т.е. к примеру если имеем 1000 таблиц, следуем рекомендации - запись в каждую из них не чаще раз/сек, то каких-либо негативных последствий от общего количества вставок (1000/сек) ожидать не стоит?
Всё-таки при таком количестве таблиц могут быть проблемы с файловой системой. Если таблицы имеют одинаковую структуру, то лучше вместо этого писать всё в одну таблицу.

Google
Igor
08.02.2017
09:46:23
Подскажите, в коде CH нашли хеш-функции FarmHash-семейста, которые не описаны в документации: https://clickhouse.yandex/reference_ru.html#Функции хэширования SELECT farmHash64('hello') ┌─farmHash64(\'hello\')─┐ │ 14403600180753024522 │ Можем смело использовать в продакшене ? И что лучше FarmHash или CityHash ?

Igor
08.02.2017
10:41:18
murmurhash, милота

Square
08.02.2017
10:42:06
murmurhash, милота
Сити и ферма из него растут

Andrey
08.02.2017
10:46:52
Добрый день. Я верно понял, что репликация таблиц служит исключительно как failover и между репликами запросы не параллелятся? По крайней мере, у меня сложилось такое впечатление исходя из времени выполнения запроса на разных конфигурациях.

papa
08.02.2017
10:48:34
https://clickhouse.yandex/reference_ru.html#max_parallel_replicas

Dmitry
08.02.2017
10:55:28
А есть ли надежды на то, что runningAccumulate когда-нибудь заработает не только в пределах блока?

Vitaliy
08.02.2017
11:55:28
А есть ли надежды на то, что runningAccumulate когда-нибудь заработает не только в пределах блока?
Кстати сейчас есть такая особенность, что результат выполнения group by не дробится на блоки. Поэтому можно ожидать, что в текущей реализации runningAccumulate поверх агрегирующей функции будет работать "интуитивно", но на это не надо полагаться.

Alexandra
08.02.2017
14:42:47
Анонс от Яндекс.Метрики: 14 февраля у нас будет вебинар по работе с Logs API Яндекс.Метрики и ClickHouse. Mariya Mansurova покажет, как на сырых данных строить кастомные модели атрибуции и считать Retention. Зарегистрироваться можно здесь - https://events.webinar.ru/10562/268557/

Igor
08.02.2017
15:32:23
> @milovidov_an С имеющимися настройками, farmHash ничем не лучше cityHash. Спасибо!

Страница 63 из 723