
Pavel
16.03.2017
15:05:48
а в чем особенность EC2 в сравнении с не EC2? :)
CH очень гуманен к нагрузке на диск, что обычно узкое место в облаках

Dig
16.03.2017
15:06:18
Диски EBS

Pavel
16.03.2017
15:07:54
у нас на SATA работает прилично

Google

Dig
16.03.2017
15:08:57
Я правильно понимаю, что нужно три инстансы, на которых запустить по ZooKepeerу и на них же по серверу СН?

Andrey
16.03.2017
15:10:00
CH там не обязателен. Зукиперу просто нужен кворум
т.е. можно на 2х поставить CH и зукипер, а на третьем только зукипер
не знаю зачем, но такой конфиг будет работать

Dig
16.03.2017
15:11:35
Так как правильно создать конфигурацию? Сколько машин нужно, для "спать спокойно"?

Pavel
16.03.2017
15:11:52
3/5/7+

Fike
16.03.2017
15:12:18
2N + 1, где N - число машин, потерю которых вы планируете пережить

Andrey
16.03.2017
15:13:46
Самому CH пофиг сколько будет нод. А вот зукиперу который держит состояние кластера, нужно нечетное количество чтобы избежать split brain (когда сервера теряют связанность пополам)


Vitaliy
16.03.2017
15:14:41
@milovidov_an Алексей, здравствуйте. Поясните, пожалуйста, такой момент.
1. создал две таблицы
CREATE TABLE wssg.sales_access_logs_local (Date Date, TimeStamp DateTime, HostName String, Method String, UriPath String, UriParam String, HttpStatus Int16, UpstreamTime Float32, RecieveBytes UInt64, UserId String, Ip String, SessionId String, AuthType String, AuthSource String, UserIpHash UInt64, UserUriPathHash UInt64, UserUriHash UInt64, UserUriIpHash UInt64, UserSessionHash UInt64, UserSessionIpHash UInt64, UserSessionUriPathHash UInt64, UserSessionUriHash UInt64, UserSessionUriIpHash UInt64) ENGINE = ReplicatedMergeTree('/clickhouse/tables/{logsshard}/sales_access_logs', '{replica}', Date, (TimeStamp, UserId), 8192)
CREATE TABLE wssg.sales_access_logs (Date Date, TimeStamp DateTime, HostName String, Method String, UriPath String, UriParam String, HttpStatus Int16, UpstreamTime Float32, RecieveBytes UInt64, UserId String, Ip String, SessionId String, AuthType String, AuthSource String, UserIpHash UInt64, UserUriPathHash UInt64, UserUriHash UInt64, UserUriIpHash UInt64, UserSessionHash UInt64, UserSessionIpHash UInt64, UserSessionUriPathHash UInt64, UserSessionUriHash UInt64, UserSessionUriIpHash UInt64) ENGINE = Distributed(logs, wssg, sales_access_logs, rand());
2. начал писать в Distributed таблицу и select из неё же, появились ошибки, что типа привышен лимит одновременных запросов. В списке процессов были вставки в Distributed таблицу.
3. мне подсказали, что лучше вставлять в локальные таблицы.
4. решил удалить созданные талицы. Локальные удалились нормально, а вот Distributed только после перезапуска нод clickhouse. После этого в списке процессов было пусто.
5. создал снова таблицы. сделал show processlist, и там опять вставка в Distributed таблицу.
что то я не понимаю как работает система :) Расскажите, пожалуйста.
А на пункте 4 в process list'e были активные вставки в distributed-таблицу?
Если да, то она не могла удалиться так как была заблокирована активными вставками.
Почему вставки длились так долго - отдельный вопрос.


Dig
16.03.2017
15:15:54
Для зукипера нужно минимум 3. Можно ли на эти же машины ставить СН для репликации? Извините, если вопросы глупые.

Геннадий
16.03.2017
15:16:28

Andrey
16.03.2017
15:16:52
Если ставить вместе с СН то при падении сервера целиком, пропадет и нода зукипера и это ок. Остальные ноды разрулят ситуацию

Google

Dig
16.03.2017
15:18:52
Спасибо, буду пробовать разобраться.

Andrey
16.03.2017
15:21:38
Я например частенько использую такую схему.
На всех серверах с CH стоит Zookeeper + еще один Zookeeper на сервере клиентского приложения(если оно серверное). Таким образом при разрывах сети, вероятность того что мастером станет та часть которая "видна" клиентскому приложению, выше.
т.е. я сохраню не просто доступность CH, а доступность CH для клиентского приложения

Dmitry
16.03.2017
15:22:30
Вообще зависит конечно от размера кластера, если кластер большой, лучше выносить ЗК отдельно

Dig
16.03.2017
15:24:02
И еще вопрос - приложение работает с одним сервером, он упал, переключаемся на другой?

Andrey
16.03.2017
15:24:05
Согласен. У меня речь идет о 20-30 нодах

Dmitry
16.03.2017
15:33:40
балансер поверх натянуть

Andrey
16.03.2017
15:35:04
кстати да. Какой нибудь haroxy еще и умные метрики даст

Pavel
16.03.2017
15:38:10
с учетом таймаутов это будет крайне сложно
у нас CH за балансером и это задрало честно говоря
достаточно задать чуточку более сложный вопрос и оно сбрасывает коннект до первого бэкэнда и отправляет на второй и там тоже обламывается и валится
время выполнения крайне сложно прогнозировать, а балансер без него смысла особого не имеет

Andrey
16.03.2017
15:40:39
можно выкрутить таймауты и добавить проверку живости ноды.

Fike
16.03.2017
15:41:53
можно действительно отслеживать по какому-нибудь хелсу (SELECT 1), а не времени выполнения запроса
насколько помню, у хапрокси с этим все в порядке было

Andrey
16.03.2017
15:43:20
да, у запрокси есть админский сокет через который можно управлять ею скриптами

Pavel
16.03.2017
15:46:38
если кто молодец, поделиьесь практикой :)

Andrey
16.03.2017
15:51:05
Практикой чего, управления haproxy?

Pavel
16.03.2017
15:52:45
ага, под CH

Google

Pavel
16.03.2017
15:52:51
со скриптами :)

Andrey
16.03.2017
16:45:48
> > >Также пользователь default используется при распределённой обработки запроса - система ходит на удалённые серверы под ним. Поэтому, у пользователя default должен быть пустой пароль и не должно быть выставлено существенных ограничений или квот - иначе распределённые запросы сломаются.
Эта информация из документации актуальна? То есть пользователь default - фактически админский пользователь в бд, которому при этом пароль нельзя прописать не поломав функциональность бд?

Dmitry
16.03.2017
16:47:50
можно явно указать под каким пользователем делать распределенные запросы

Andrey
16.03.2017
16:49:43
Спасибо

Dmitry
16.03.2017
16:50:45
Pull request'ы в документацию приветствуется :))

Vitaliy
16.03.2017
16:51:38

Алексей
16.03.2017
17:09:36

Andrey
16.03.2017
17:18:34

Vladimir
16.03.2017
17:27:52
А в кликхаус нет функций для распаковки base64, да? Судя по поиску по сорцам, в libpoco-то есть функции для работы с base64, но в КХ — нет...
А есть в КХ внешние функции на разных языках программирования?

Dmitry
16.03.2017
17:28:48

f1yegor
16.03.2017
17:33:38
Рассказывают сейчас одному таварищу про КХ.
f1yegor:
В исходниках проекта NYC benchmark поищи
@milovidov_an может статьёй опубликовать?

Pavel
16.03.2017
19:14:43
ребят, не допираю, что-то не так с коннектом на локалхост, какой-то он у вас особенный
https://gist.github.com/pavel-odintsov/49a8adcebbe5df1e654fe107d64df712
перевесил CH на 127.0.0.1 по соображениям безопасности и отвалился клиент.

Google

Pavel
16.03.2017
19:15:16
clickhouse-client
ClickHouse client version 1.1.54164.
Connecting to localhost:9000.
Code: 210. DB::NetException: Connection refused: (localhost:9000, ::1)
стало быть, пытается он на localhost
стало быть:
ping localhost -c 1
PING localhost (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.052 ms
—- localhost ping statistics —-
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.052/0.052/0.052/0.000 ms
на 127.0.0.1
но если указать локалхост:
clickhouse-client —host localhost
ClickHouse client version 1.1.54164.
Connecting to localhost:9000.
Code: 210. DB::NetException: Connection refused: (localhost:9000, ::1)
сбой
а если указать 127.0.0.1 - все ОК

Dmitry
16.03.2017
19:15:53
Он пытается на ::1 подключиться

Pavel
16.03.2017
19:15:55
clickhouse-client —host 127.0.0.1
ClickHouse client version 1.1.54164.
Connecting to 127.0.0.1:9000.
Connected to ClickHouse server version 1.1.54164.
:) Bye.

Dmitry
16.03.2017
19:16:02
Ipv6

Pavel
16.03.2017
19:16:03
ах, айпи ви сикс этот ваш.

Dmitry
16.03.2017
19:16:34
А повесили вы его только на v4

Pavel
16.03.2017
19:16:35
ок, переживем) значит фича, а не бага

Dmitriy
16.03.2017
19:20:18
подскажите пожалуйста, а можно заставить КХ слать метрики в графит чаще чем одну минуту?

nikoinlove
16.03.2017
19:29:26
Обещали сделать но пока вроде нет

prll
16.03.2017
19:54:34
https://github.com/yandex/ClickHouse/pull/603

Pavel
16.03.2017
22:34:10
а конвертации 32битных чисел между little и bigendian нету? :(
и следом вопрос - в каком даныне пожмутся лучше, если я их в CH волью как little или как big endian? Подразумевая, что машина, конечно же, little endian

Google

Pavel
16.03.2017
23:52:40
select dstAsn, count(dstAsn) as cnt from traffic group by dstAsn order by cnt desc limit 10
SELECT
dstAsn,
count(dstAsn) AS cnt
FROM traffic
GROUP BY dstAsn
ORDER BY cnt DESC
LIMIT 10
┌─dstAsn─┬───cnt─┐
│ 12345 │ 37709 │
│ 41341 │ 2590 │
│ 123123 │ 1837 │
│ 4414 │ 1326 │
│ 4123 │ 1285 │
│ 3123 │ 843 │
│ 4123 │ 798 │
│ 11 │ 678 │
│ 123 │ 555 │
│ 33 │ 550 │
└────────┴───────┘
похвастаюсь рабочей бд трафика под sflow/netflow/span:) закончил, наконец-то :)

papa
17.03.2017
00:01:03
в каком виде числа лучше пожались?

Pavel
17.03.2017
00:09:52
хрен знает) я полагаю C++ либа конвертирует их в литтл эндиан либо наоборот, пришлось вкостыливать еще одну конверсию

Рулон
17.03.2017
06:38:47
Привет! Скажите пожалуйста. Добавил новый столбец ALTER TABLE [db].name ADD а в движке ENGINE = MergeTree( ..не появилось новое поле)

hamper ?
17.03.2017
07:28:21
А кто чем обычно мигрирует кх?

Dmitry
17.03.2017
08:10:53

Рулон
17.03.2017
08:22:25

Andrey
17.03.2017
08:22:55

Slach
17.03.2017
08:23:17
полный запрос на ALTER TABLE
и
текущую структуру таблицы
=)

Рулон
17.03.2017
08:24:50
ALTER TABLE table1 ADD COLUMN network_id Int64 DEFAULT 0;

Alex
17.03.2017
08:29:10
А где он должен был появиться в движке? Там же только столбцы с датой и столбцы первичного ключа.

Рулон
17.03.2017
08:37:09
а как надо было?

Vitaliy
17.03.2017
08:38:11
А чего вы хоите добиться? Можете показать show create table до и после?

Рулон
17.03.2017
08:38:52
Ну задача добавить поле network_id

Alex
17.03.2017
08:40:34
Новый столбец же не добавится в первичный ключ
Первичный ключ при альтерах нельзя менять, иначе придётся всю таблицу пересортировывать

Vitaliy
17.03.2017
08:41:48
Ок, просто вы сказали движок, и люди подумали, что вы хотите поменять первичный ключ таблицы (т.е. все что после ENGINE в ответе SHOW CREATE TABLE)

Рулон
17.03.2017
09:53:32
Спасибо!
Добавлю это в Faq )