

Vladislav
05.09.2017
08:33:19
Если эта ошибка появилась после апдейта ClickHouse, то это значит, что при апдейте были изменены конфиги пользователей (users.xml) и в них как-то изменились права доступа. Хотя конфиг по-умолчанию из пакета разрешает доступ пользователю default без пароля. Можно посмотреть на конкретном сервере, откуда приходит ошибка, почему он не разрешает пользователю default соединиться.
Кстати, для удобства обновлений, можно держать оригинальные конфиги из пакета без изменений, а все изменения прописывать в отдельных файлах в conf.d, users.d директориях. Так ещё и проще следить за множеством изменений.
Посмотрели – конфиги не менялись, с последними темплейтами они совпадают. В логах на конкретном сервере нет ничего кроме этого:
2017.09.05 08:24:50.142653 [ 139 ] <Debug> TCPHandler: Connected ClickHouse ClickHouse replica version 1.1.54245, database: local, user: default.
2017.09.05 08:24:50.164299 [ 139 ] <Error> ServerErrorHandler: Code: 194, e.displayText() = DB::Exception: Password required for user default, e.what() = DB::Exception, Stack trace:
Не могу понять, правильно ли, что запрос идет от default-юзера, а не от того, что указан в параметрах репликации?


Evgeniy
05.09.2017
08:48:58
Конфиг users-preprocessed.xml одинаковый на серверах? Есть подозрение, что они у вас разошлись

Vladislav
05.09.2017
08:58:20

Evgeniy
05.09.2017
09:03:31
Ну *-preprocessed же вроде генерится кликхаусом при применении конфига users.xml или config.xml, их надёжнее сравнивать

Google

Vladislav
05.09.2017
09:12:03

Evgeniy
05.09.2017
09:17:52
я не знаю по каким правилам кладутся эти файлы, но у нас их кликхаус кладет всегда в папку с конфигами users.xml и config.xml, рядом
про них вот тут можно почитать https://clickhouse.yandex/docs/ru/single/#configuration-files

Vladislav
05.09.2017
09:27:00
спасибо, сейчас буду смотреть, почему файл не создался

Nikolai
05.09.2017
10:04:30

Konstantin
05.09.2017
10:05:06
Ясно. Спасибо

Vladislav
05.09.2017
10:19:18

Stas
05.09.2017
11:05:13
Подскажите, какой тип данных стоит выбрать, если планируется хранить как числовые данные, так и NULL или массив, т.е возможные варианты данных:
1) 1636
2) NULL
3) 1,3,6,3,7

Alexander
05.09.2017
11:08:53
Добрый день, подскажите, пожалуйста, в чем может быть ошибка при создании реплицируемой таблицы?
по идее данные должны сами перекинуться через zk кластер или нужно запускать какую-либо комманду?

Вася
05.09.2017
11:11:41
Судя по описанию таблиц тут два шарда. Без репликации. Стало быть сами данные никуда не перекинутся.
Если хочется репликации, то должны быть одинаковые первые аргументы и разные вторые.

Google

Alexander
05.09.2017
11:14:12
а, т.е. указываем {shard1} и clickMaster (на мастере) и {shard2} clickSlave (на слейве)
типа такого?

Вася
05.09.2017
11:14:54
Нет. Шард должен быть одинаковый.
Ну и кажется что у вас неправильное использование макросов для подстановки. Так наверное тоже будет работать, но идея вообще другая.
Там суть в том чтобы везде написать {shard} и {replica} а уже в конфигах на конкретных машинах прописать нужные значения.

papa
05.09.2017
11:16:35

Alexander
05.09.2017
11:17:17

Stas
05.09.2017
11:19:48

Nikolai
05.09.2017
11:20:03
Подскажите, какой тип данных стоит выбрать, если планируется хранить как числовые данные, так и NULL или массив, т.е возможные варианты данных:
1) 1636
2) NULL
3) 1,3,6,3,7
нужно ли уметь отличать Null от [] и 1636 от [1636] ? если нет, то обычный массив. Иначе, вероятно, придется разбить на 2 колонки.

Stas
05.09.2017
11:20:50

Nikolai
05.09.2017
11:22:09
в качестве Null можно использовать пустой массив
а в качестве числа - массив из 1 элемента. разумеется, если не неужно различать эти случаи

Stas
05.09.2017
11:24:38


Kirill
05.09.2017
11:29:39
После DETACH/ATTACH partition ClickHouse упал с сегфолтом
2017.09.05 11:00:53.485950 [ 6 ] <Error> void DB::BackgroundProcessingPool::threadFunction(): Code: 246, e.displayText() = DB::Exception: bad size of marks file `/var/lib/clickhouse/data/reports/tmp_reports_advertiser_full/20170903_20170903_30_30_0/raw_clicks.mrk':1803, must be: 2240: (while reading column raw_clicks): (while reading from part /var/lib/clickhouse/data/reports/tmp_reports_advertiser_full/20170903_20170903_30_30_0/ from mark 0 with max_rows_to_read = 8192), e.what() = DB::Exception, Stack trace:
2017.09.05 11:03:44.809514 [ 28 ] <Error> BaseDaemon: ########################################
2017.09.05 11:03:44.809557 [ 28 ] <Error> BaseDaemon: (from thread 27) Received signal Segmentation fault (11).
2017.09.05 11:03:44.809568 [ 28 ] <Error> BaseDaemon: Address: NULL pointer.
2017.09.05 11:03:44.864195 [ 28 ] <Error> BaseDaemon: 0. clickhouse-server(tc_new+0x80) [0x39b6650]
2017.09.05 11:03:44.864269 [ 28 ] <Error> BaseDaemon: 1. clickhouse-server(std::_MakeUniq<DB::IMergedBlockOutputStream::ColumnStream>::__single_object std::make_unique<DB::IMergedBlockOutputStream::ColumnStream, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, char const* const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, char const* const&, unsigned long&, DB::CompressionMethod&, unsigned long&, unsigned long&>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&, char const* const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&, char const* const&, unsigned long&, DB::CompressionMethod&, unsigned long&, unsigned long&)+0xed) [0x2dff16d]
2017.09.05 11:03:44.864294 [ 28 ] <Error> BaseDaemon: 2. clickhouse-server(DB::IMergedBlockOutputStream::addStream(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, DB::IDataType const&, unsigned long, unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool)+0x5ea) [0x2dfc5ba]
лог https://gist.github.com/kshvakov/5954f73e88b51e314e11938a7d31d783


Alexey
05.09.2017
11:34:31
привет, может кто в курсе - еще не поправили баг, когда после drop partiton, в реплицированную таблицу заливаешь данные, а они отбрасываются как дубли?

Александр
05.09.2017
12:05:12
Ребят в таблицу типа Buffer писать в 100 потоков по 1 строке за запрос норм? )

Eugene
05.09.2017
12:10:06
Ребята у меня такая беда, есть шард с 2мя репликами, если реплика перезапускается то у нее меняется айпишник, реплика которая не перезапускалась продолжает стучать в старый айпи, приходится опускать обе реплики для восстановления кто то сталкивался? как победить?

Александр
05.09.2017
12:13:02

Андрей Михайлович
05.09.2017
12:13:06

Александр
05.09.2017
12:13:08
На всем кластере

Google

Александр
05.09.2017
12:13:41
обращаться не по ip?
Даже если hostname прописан и у hostname сменился айпишник, надо рестартить сервера на кластере, которые работают с этим hostname

Eugene
05.09.2017
12:14:18
ну писец, прихали

Александр
05.09.2017
12:15:57
https://img.facedsid.ru/qtymn.jpg
Вот собственно ответ на похожий вопрос

Eugene
05.09.2017
12:23:58
Спасибо, Мде, плохая идея у предыдущего Девапса была CH в контейнерах держать)

Александр
05.09.2017
12:24:47

Roman
05.09.2017
12:26:15
Добрый день. Подскажите, как к массиву pushнуть значение из колонки такого же типа, что и элементы в массиве? Что-то ничего похожего на push не могу найти

Nikolai
05.09.2017
12:31:01
arrayPushBack/arrayPushFront уже лежат в мастере, но в билдах хорошего способа пока нет
вот такой раньше предлагали:
SELECT
[1, 2] AS x,
[3, 4] AS y,
arrayReduce('groupArrayArray', [x, y]) AS xy
или
SELECT
[1, 2] AS x,
3 AS y,
arrayReduce('groupArrayArray', [x, [y]]) AS xy
в данном случае

Александр
05.09.2017
12:39:05

Nikolai
05.09.2017
12:41:53
без тестирования сложно сказать. возможно, придется предобрабатывать данные вне CH

Vladislav
05.09.2017
13:06:39
Только что словил вот этот issue: https://github.com/yandex/ClickHouse/issues/827 Не предполагается update-ов на эту тему?


Dmitry
05.09.2017
13:12:33
Продолжаем скрещивать Табло с КХ. C CAST разобрались, теперь возникла проблема с подстановкой параметров-дат.
Есть запрос
SELECT
site, date, toString(date) as date1, uniqExact(uid) as uv, uniq(uid) as uv0, count() as vv
from
groot3.content_watch
where
date>= <Parameters.date_from> and date< <Parameters.date_to>
group by site, date, toString(date)
Табло подставляет вместо <Parameters.date_from> дату в виде {d '2017-07-01'} и скармливает получившийся запрос драйверу. Драйвер это не переваривает и кадает в КХ запрос в неизменном виде:
SELECT
site, date, toString(date) as date1, uniqExact(uid) as uv, uniq(uid) as uv0, count() as vv
from
groot3.content_watch
where
date>= {d '2017-07-01'} and date< {d '2017-07-02'}
group by site, date, toString(date)
Вот что сами Табло пишут
For example, the ODBC specification details that dates should be specified in SQL statements by using the syntax: {d 'yyyy-mm-dd'}. This format is then translated by the driver to the proper date syntax of the actual database.
мне написать issue на гитхабе ODBC-драйвера?


Konstantin
05.09.2017
13:14:52
Подскажите плиз, если я заливаю данные в ReplicatedMergeTree таблицу с названием Х, то zk будет распихивать данные по репликам в таблицы с точно таким же названием? и можно ли как-то сделать чтобы на репликах таблицы были названы иначе?

Felixoid
05.09.2017
13:16:04
Наверное, уже видели? @milovidov_an https://habrahabr.ru/company/pvs-studio/blog/337182

Nikolai
05.09.2017
13:16:54

Konstantin
05.09.2017
13:47:46
спасибо большое!

Google

Alexander
05.09.2017
14:02:51
Подскажите, а для создания простой реплики на 2-х разных серверах также необходимо создавать Distributed таблицу?

Nikolai
05.09.2017
14:04:06
ReplecatedMergeTree должно быть достаточно

Alexander
05.09.2017
14:04:51
Просто я совсем запутался, куда копать:
Создаю таблицу на мастере
CREATE TABLE partner.click () ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard1}/_click', 'clickMaster', click_date, id, 8192)
Создаю таблицу с точно таким же названием на слейве (той же строкой) ожидается, что будет ошибка, что в zk уже существует данный путь, но нет, таблица создается
при этом, при включении и отключении сервисов zk и мастер и слейв реагируют друг на друга
Если же я пытаюсь создать CREATE TABLE partner.click () ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard1}/_click', 'clickSlave', click_date, id, 8192), то никакого реплицирования не происходит
Уже существующие данные должны подтянуться или их нужно залить еще раз?

Bulat
05.09.2017
14:08:22
Вместо 'clickSlave' поставьте макрос

Alexander
05.09.2017
14:09:43

Nikolai
05.09.2017
14:10:44
должно работать и без макроса. и данные должны сами подтянуться. кластер с зукипиром нормально работает?

Alexander
05.09.2017
14:13:42
в кластер входит только два сервера один из них должен быть простой репликой
Сам кластер, как я понимаю, должен ругаться, если мы на разных серверах создаем 2 таблицы с одинаковыми путями, но не ругается,
в самом zkCli (на слейве) при ls /clickhouse/tables/01 не выводятся таблицы, которые должны быть там с мастера

Nikolai
05.09.2017
14:15:52
а если создать какую-нибудь ноду в зукипере в мастере (/test), это видно на слейве?

Alexander
05.09.2017
14:18:54
нет, не появилась
при sync /
ответом приходит Sync returned 0

Nikolai
05.09.2017
14:20:43
ну, наверное, у Вас нету кластера, и зукиперы работают сами по себе

Alexander
05.09.2017
14:21:10
подскажите, пожалуйста, как создать или где почитать об этом

Nikolai
05.09.2017
14:24:33
нет, зукипер должен работать независимо от CH

Alexander
05.09.2017
14:24:59
т.е. настройки кластера должны быть в конфиге zookeepera?

Nikolai
05.09.2017
14:25:55
да. наверное, эта статья может помочь: http://zookeeper.apache.org/doc/r3.4.6/zookeeperStarted.html#sc_RunningReplicatedZooKeeper

Александр
05.09.2017
14:26:56
Ребят. В таблице 53к строк, делаю limit 1 и получаю rows_before_limit_at_least = 8192

Alexander
05.09.2017
14:27:42

Google

Александр
05.09.2017
14:28:10
Я так понял КХ считает кол-во оставшихся строк в блоке данных?
А не целиком которые под условие попадают
В доке сказало "rows_before_limit_at_least - точное число строк, которое получилось бы, если бы не было LIMIT-а", но на деле это не так )

Nikolai
05.09.2017
14:30:04

Александр
05.09.2017
14:31:33
Хм...а если добавить with totals, тогда все ок показывает

Nikolai
05.09.2017
14:31:51
а group by в запросе есть ? :)

Александр
05.09.2017
14:32:20
Неа, нету
Да я просто тестирую эту штуку и делаю запрос из серии select column from table limit 10, 10 format JSON
И получаю максимум 8192

Nikolai
05.09.2017
14:33:08
в доке написано, что точное будет, если есть group by

Александр
05.09.2017
14:33:09
А если делаю with totals, то получаю корректное значение в виде общего кол-ва строк
Аааа, сори, пропустил этот кусок (( Хотел увидеть то, что хотел - увидел ))
А остальное пропустил )

Nikolai
05.09.2017
14:33:45
with totals, видимо, включает group by по всему

Alexander
05.09.2017
14:34:20

Nikolai
05.09.2017
14:36:53
появились? отлично!

Alexander
05.09.2017
14:42:01
появились? отлично!
да, кластер в zookeeper должен быть обязательно, а warning'и которые zk выкидывает при 2-х серверах, можно игнорировать (хотя странно как-то)