在跑spark任务的时候出现报错:DB::Exception: Watching task /clickhouse/task_queue/ddl/query-0000023093 is executing longer than distributed_ddl_task_timeout (=180) seconds. There are 1 unfinished hosts (0 of them are currently active), they are going to execute the query in background (version 21.6.5.37 (official build))
报错信息大致意思是:分布式表在进行ddl操作的时候,有一个节点出现超时了,没有创建成功。
当时的解决思路:
我的clickhouse集群共有3个节点,于是我在这三个节点创建本地表ddl,发现ck01,ck03可以创建成功,而ck02节点不能创建成功,卡着,然后报上面的错误。(创建情况未报错截图)
于是查看这个节点正在执行的进程:
SELECT query_id, query FROM system.processes;
或者执行
show processlist
上面这两个命令都可以看到这个节点目前有哪些查询进程在执行着,或者被阻塞着。
我发现有大概5个进程一直卡着,没有进行下去。于是执行kill query,去杀掉阻塞进程:
-- Forcibly terminates all queries with the specified query_id:
KILL QUERY WHERE query_id='2-857d-4a57-9ee0-327da5d60a90';
执行上面命令后,发现阻塞进程kill 不掉。
-- Cancel and remove all mutations of the single table:
KILL MUTATION WHERE database = 'default' AND table = 'table'
执行这个也是kill 不掉阻塞进程。
最后尝试重启ck,竟然解决了:
sudo systemctl restart clickhouse-server.service
ps:至于为啥出现节点ddl进程阻塞,我没有细查原因 ;不过我看了下zookeeper运行正常,和ck节点网络连接情况没有异常。